内容正文:
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第21卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(十一)字符数组的定义和使用
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第21卷
字符数组的定义和使用 老师讲解卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.设有以下变量定义:char str[20],i;当输入“zhang空格hong回车”时,能输入“zhang hong”的程序段是( )
A.scanf(“%s”,str);
B.for(i=0,str[i]=getchar();str[i]!='
';)
str[i++]=getchar();
C.gets(str);
D.for(i=0,str[i]=getchar();str[i]!='\0';i++)
str[i]=scanf("%c",str[i]);
2.对于以下定义正确的叙述为( )
char x[]="abcdefg";
char y[]={'a','b','c','d','e','f','g'};
A.数组x和数组y等价
B.数组x和数组y的长度相同
C.数组x的长度大于数组y的长度
D.数组x的长度小于数组y的长度
3.串采用节点大小为1的链表作为其存储结构,是指( )
A.链表的长度为1
B.链表中只存放一个字符
C.链表中每个节点的数据域中只存放一个字符
D.以上都不对
4.char string[ ]= "this is a string!";该变量的存储形式是( )
A.this is a string! B.\0 C.this is a string! \0 D.string
5.有如下程序
main( )
{ char ch[2][5]={"6937","8254"};
int i,j;long s=0;
for(i=0;i<2;i++)
for(j=0;ch[i][j]>'\0';j++)
s=10*s+ch[i][j]-'0';
printf("%ld
",s);
}
该程序的输出结果是_____。( )
A.69825 B.693825 C.6385 D.69378254
6.下面关于串的叙述中,正确的是( )
A.串是一种特殊的线性表
B.串中元素只能是字母
C.空串就是空白串
D.串的长度必须大于零
7.以下给字符数组str定义和赋值正确的是( )
A.char str[10]; str={"China!"};
B.char str[ ]={"China!"};
C.char str[10]; strcpy( str,"abcdefghijkl");
D.char str[10]={"abcdefghijkl"};
8.当接受用户输入的含有空格的字符串时,应使用 函数。( )
A.gets( ) B.getchar( ) C.scanf( ) D.printf( )
9.有如下程序
main()
{ char ch[80]="123abcdEFG*&";
int j;long s=0;
puts(ch);
for(j=0;ch[j]>'\0';j++)
if(ch[j]>='a'&&ch[j]<='z') ch[j]=ch[j]-'b'+'B';
puts(ch); }
该程序的功能是( )
A.测字符数组ch的长度
B.将数字字符串ch转换成十进制数
C.将字符数组ch中的小写字母转换成大写
D.将字符数组ch中的大写字母转换成小写
10.设有数组定义:char array[]="China";则strlen(array)的值为( )
A.4 B.5 C.6 D.7
11.两个字符串相等的条件是( )
A.串的长度相等
B.含有相同的字符集
C.都是非空串
D.两个串的长度相等且对应位置的字符相同
12.有如下程序
main()
{ char a[10]={'1','2','3',0,'5','6','7','8','9','\0'};
printf("%s
",a);
}
该程序的输出结果是( )
A.123 B.1230 C.123056789 D.1230567890
13.设有数组定义:char array[10]= "China";则数组array所占的存储空间为( )
A.4个字节 B.5个字节
C.6个字节 D.7个字节
14.执行以下程序段的输出结果是( )
char s[ ]={"012xy"};
int i,n=0;
for(i=0;s[i]!='\0';i++)
if(s[i]>='a'&&s[i]<='z')n++;
printf("%d",n);
A.0 B.2 C.3 D.5
15.执行以下程序段的输出结果是( )
char arr[2][4];
strcpy(arr[0],"you");
strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s
",arr);
A.you&me B.you C.me D.err
16.执行以下程序段的输出结果是( )
int i;char a[ ]="How are you!";
for(i=0;a[i];i++)
{if(a[i]==' ')
{strcpy(a,&a[i+1]);i=0;}}
printf("%s",a);
A.you! B.Howareyou! C.areyou! D.are you!
17.执行以下程序段的输出结果是( )
char s[ ]="Beijing";
printf("%d
",strlen(strcpy(s,"China")));
A.5 B.7 C.12 D.14
18.执行以下程序段的输出结果是( )
char a[10]="abc",b[10]="012",c[10]="xyz";
strcpy(a+1,b+2);
puts(strcat(a,c+1));
A.a12xyz B.12yz C.a2yz D.bc2yz
19.执行以下程序段的输出结果是( )
char x[ ]="STRING";
x[0]=0;x[1]='\0';x[2]='0';
printf("%d %d
",sizeof(x),strlen(x));
A.6 1 B.7 0 C.6 3 D.7 1
20.若有char str[5] = "hello";,则问题在于( )
A.长度不足 B.类型错误 C.语法正确 D.未初始化
二、程序设计题(本大题共4小题,每题10分,共40分)
21.将字符串sour中连续的数字字符和其前面的符号转换为若干个十进制整数(可正,可负),再计算这些整数的和。
#include<stdio.h>
#include<ctype.h>
void apart(sour)
{
int i,sum,sign=1,s;
i=sum=0;
while(a[i])
{
/*******space*******/
/*******space*******/
}
printf("%d
",sum);
}
int main()
{
char sour[100]={"kn--.23,q,-37.&#%%-18'w94jAF5aS"};
apart(sour);
return 0;
}
22.编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。所谓回文是指顺读和倒读都一样的字符串。如"XZYKYZX"是回文。
#include<stdio.h>
#include<string.h>
void main()
{
char s[50];
int hw(char *s);
gets(s);
if(hw(s))
printf("是回文!
");
else
printf("不是回文!
");
}
int hw(char *s)
{
int flag=1;
char *p,*q;
/*******space*******/
/*******space*******/
}
23.函数fun的功能是:删除s所指字符串中所有的小写字母c。
#include<stdio.h>
void fun(char *s)
{
int i,j;
/*******space*******/
/*******space*******/
s[j]='\0'
}
void main(){
char s[80];
printf("【Enter a string:】");
gets(s);
fun(s);
printf("【The string after deleted : 】 ");
puts(s);
}
24.题目:函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。例如,若给a输入字符串: ABCDEFGHIJK,调用函数后,字符数组b中的内容为: ABC DEF GHI JK。
#include <stdio.h>
void fun(char *a, char *p)
{
int i, k=0;
while(*p)
{
i=1;
while( i<=3 && *p )
/*******space*******/
/*******space*******/
}
b[k]='\0';
}
void main()
{
char a[80],b[80];
printf("【Enter a string:】");
gets(a);
fun(a,b);
printf("【The string after insert space:】");
puts(b);
}
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第21卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(十一)字符数组的定义和使用
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第21卷
字符数组的定义和使用 老师讲解卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.设有以下变量定义:char str[20],i;当输入“zhang空格hong回车”时,能输入“zhang hong”的程序段是( )
A.scanf(“%s”,str);
B.for(i=0,str[i]=getchar();str[i]!='
';)
str[i++]=getchar();
C.gets(str);
D.for(i=0,str[i]=getchar();str[i]!='\0';i++)
str[i]=scanf("%c",str[i]);
【答案】C
2.对于以下定义正确的叙述为( )
char x[]="abcdefg";
char y[]={'a','b','c','d','e','f','g'};
A.数组x和数组y等价
B.数组x和数组y的长度相同
C.数组x的长度大于数组y的长度
D.数组x的长度小于数组y的长度
【答案】C
3.串采用节点大小为1的链表作为其存储结构,是指( )
A.链表的长度为1
B.链表中只存放一个字符
C.链表中每个节点的数据域中只存放一个字符
D.以上都不对
【答案】C
4.char string[ ]= "this is a string!";该变量的存储形式是( )
A.this is a string! B.\0 C.this is a string! \0 D.string
【答案】C
5.有如下程序
main( )
{ char ch[2][5]={"6937","8254"};
int i,j;long s=0;
for(i=0;i<2;i++)
for(j=0;ch[i][j]>'\0';j++)
s=10*s+ch[i][j]-'0';
printf("%ld
",s);
}
该程序的输出结果是_____。( )
A.69825 B.693825 C.6385 D.69378254
【答案】D
【详解】该程序使用双重循环遍历字符数组 ch,将其中的字符按照十进制转换计算出整数 s。
在外层循环中,i 从 0 到 1 遍历表示数组的行数,即第一行和第二行。
在内层循环中,j 遍历当前行的字符,条件是 ch[i][j] 大于字符串的结尾标识符 ‘\0’。
循环体内的操作是将字符转换成数字,并将其累加到结果 s 中。
具体而言,根据 ASCII 码表,字符 ‘0’ 对应的 ASCII 值为 48,所以通过 ch[i][j] - ‘0’ 将字符转换成相应的数字。
通过累加操作 s = 10 * s + (ch[i][j] - ‘0’),将每个字符转换成数字并左移一位。
最后,使用 printf() 函数将结果 s 输出。
6.下面关于串的叙述中,正确的是( )
A.串是一种特殊的线性表
B.串中元素只能是字母
C.空串就是空白串
D.串的长度必须大于零
【答案】A
7.以下给字符数组str定义和赋值正确的是( )
A.char str[10]; str={"China!"};
B.char str[ ]={"China!"};
C.char str[10]; strcpy( str,"abcdefghijkl");
D.char str[10]={"abcdefghijkl"};
【答案】B
8.当接受用户输入的含有空格的字符串时,应使用 函数。( )
A.gets( ) B.getchar( ) C.scanf( ) D.printf( )
【答案】A
9.有如下程序
main()
{ char ch[80]="123abcdEFG*&";
int j;long s=0;
puts(ch);
for(j=0;ch[j]>'\0';j++)
if(ch[j]>='a'&&ch[j]<='z') ch[j]=ch[j]-'b'+'B';
puts(ch); }
该程序的功能是( )
A.测字符数组ch的长度
B.将数字字符串ch转换成十进制数
C.将字符数组ch中的小写字母转换成大写
D.将字符数组ch中的大写字母转换成小写
【答案】C
10.设有数组定义:char array[]="China";则strlen(array)的值为( )
A.4 B.5 C.6 D.7
【答案】B
11.两个字符串相等的条件是( )
A.串的长度相等
B.含有相同的字符集
C.都是非空串
D.两个串的长度相等且对应位置的字符相同
【答案】D
12.有如下程序
main()
{ char a[10]={'1','2','3',0,'5','6','7','8','9','\0'};
printf("%s
",a);
}
该程序的输出结果是( )
A.123 B.1230 C.123056789 D.1230567890
【答案】C
13.设有数组定义:char array[10]= "China";则数组array所占的存储空间为( )
A.4个字节 B.5个字节
C.6个字节 D.7个字节
【答案】C
14.执行以下程序段的输出结果是( )
char s[ ]={"012xy"};
int i,n=0;
for(i=0;s[i]!='\0';i++)
if(s[i]>='a'&&s[i]<='z')n++;
printf("%d",n);
A.0 B.2 C.3 D.5
【答案】B
【详解】s[0] = '0':不是小写字母,n 仍为 0。
s[1] = '1':不是小写字母,n 仍为 0。
s[2] = '2':不是小写字母,n 仍为 0。
s[3] = 'x':是小写字母,n 变为 1。
s[4] = 'y':是小写字母,n 变为 2。
s[5] = '\0':循环终止。
15.执行以下程序段的输出结果是( )
char arr[2][4];
strcpy(arr[0],"you");
strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s
",arr);
A.you&me B.you C.me D.err
【答案】A
16.执行以下程序段的输出结果是( )
int i;char a[ ]="How are you!";
for(i=0;a[i];i++)
{if(a[i]==' ')
{strcpy(a,&a[i+1]);i=0;}}
printf("%s",a);
A.you! B.Howareyou! C.areyou! D.are you!
【答案】A
17.执行以下程序段的输出结果是( )
char s[ ]="Beijing";
printf("%d
",strlen(strcpy(s,"China")));
A.5 B.7 C.12 D.14
【答案】A
18.执行以下程序段的输出结果是( )
char a[10]="abc",b[10]="012",c[10]="xyz";
strcpy(a+1,b+2);
puts(strcat(a,c+1));
A.a12xyz B.12yz C.a2yz D.bc2yz
【答案】C
19.执行以下程序段的输出结果是( )
char x[ ]="STRING";
x[0]=0;x[1]='\0';x[2]='0';
printf("%d %d
",sizeof(x),strlen(x));
A.6 1 B.7 0 C.6 3 D.7 1
【答案】B
20.若有char str[5] = "hello";,则问题在于( )
A.长度不足 B.类型错误 C.语法正确 D.未初始化
【答案】A
二、程序设计题(本大题共4小题,每题10分,共40分)
21.将字符串sour中连续的数字字符和其前面的符号转换为若干个十进制整数(可正,可负),再计算这些整数的和。
#include<stdio.h>
#include<ctype.h>
void apart(sour)
{
int i,sum,sign=1,s;
i=sum=0;
while(a[i])
{
/*******space*******/
/*******space*******/
}
printf("%d
",sum);
}
int main()
{
char sour[100]={"kn--.23,q,-37.&#%%-18'w94jAF5aS"};
apart(sour);
return 0;
}
【答案】 while(!isdigit(a[i]) && a[i])
{
sign=a[i]=='-'?-1:1;
i++;
}
s=0;
while(isdigit(a[i]))
s=s*10+a[i++]-'0';
s=s*sign;
if(s!=0)
sum+=s;
【详解】从数组里读值,当未读取到结束字符且为非数字字符时,判断当前的字符时候是否是-,若是-则sign=-1,否则sign=1。再循环读取所有的数字字符凑成整数,先取出来的数字字符所占据的权值更高,所以考察反序。
22.编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。所谓回文是指顺读和倒读都一样的字符串。如"XZYKYZX"是回文。
#include<stdio.h>
#include<string.h>
void main()
{
char s[50];
int hw(char *s);
gets(s);
if(hw(s))
printf("是回文!
");
else
printf("不是回文!
");
}
int hw(char *s)
{
int flag=1;
char *p,*q;
/*******space*******/
/*******space*******/
}
【答案】p=s,q=s+strlen(s)-1
while(*p==*q && p<q)
{
p++;
q--;
}
if(p>=q) flag=1;
else flag=0;
return flag;
【详解】判断字符串是否是回文有多种方法,方法之一是利用一个指针指向开头,另一个指针指向结尾,循环判断两个指针所对应的值是否相等,一旦相等,则前面的指针向后走,后面的指针向前走,当两个指针相遇或者前指针走到后指针后面时,则该字符串是回文串。
23.函数fun的功能是:删除s所指字符串中所有的小写字母c。
#include<stdio.h>
void fun(char *s)
{
int i,j;
/*******space*******/
/*******space*******/
s[j]='\0'
}
void main(){
char s[80];
printf("【Enter a string:】");
gets(s);
fun(s);
printf("【The string after deleted : 】 ");
puts(s);
}
【答案】for(i=0,j=0;s[i]!=='\0';i++)
{
if(s[i]!=='c'){
s[j++]=s[i];
}
}
【详解】读取s字符串里的所有字符,将所有不等于字符c的挑出重新存入原字符串即可,注意存完之后一定要重新封0。
24.题目:函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。例如,若给a输入字符串: ABCDEFGHIJK,调用函数后,字符数组b中的内容为: ABC DEF GHI JK。
#include <stdio.h>
void fun(char *a, char *p)
{
int i, k=0;
while(*p)
{
i=1;
while( i<=3 && *p )
/*******space*******/
/*******space*******/
}
b[k]='\0';
}
void main()
{
char a[80],b[80];
printf("【Enter a string:】");
gets(a);
fun(a,b);
printf("【The string after insert space:】");
puts(b);
}
【答案】{
b[k]=*p;
k++;
p++;
i++;
}
if(*p)
{
b[k]=' ';
k++;
}
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$