任务21:字符数组的定义和使用、字符串函数的应用 《编程语言-C语言》45分钟专题训练
|
2份
|
24页
|
119人阅读
|
2人下载
内容正文:
湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《编程语言—C语言》
项目四: 数组
第21卷: 字符数组的定义和使用、字符串函数的应用
时间:45分钟 总分:100分
班级___________ 姓名__________ 学号__________ 成绩________
一、选择题(共23小题,每小题2分,共46分)
1.若有定义语句:cahr s[10];,需要从终端给s数组输入5个字符,错误的输入语句是( )
A.gets(&s[0]); B.scanf("%s",s+1);
C.gets(s); D.scanf("%s",s[1]);
2.执行以下程序段的输出结果是( )
char ch[3][5]={"AAAA","BBBB","CC"};
printf("%s",ch[1]);
A.AAAA B.CC C.BBBCC D.BBBB
3.执行以下程序段时输入:Fig flower is red.<回车>,则输出结果是( )
char b[4][10];int i;
for(i=0;i<4;i++)scanf("%s",b[i]);
printf("%s%s%s%s
",b[0],b[1],b[2],b[3]);
A.Fig flower is red. B.Fig flowerisred.
C.Figflowerisred. D.Figflowerisred
4.执行以下程序段的输出结果是( )
#include <stdio.h>
#include<string.h>
main()
{char a[20]="ABCD\0EFG\0",b[ ]="IJK";
strcat(a,b);
printf("%s",a); }
A.ABCD\0EFG\0IJK B.ABCDIJK C.IJK D.EFGIJK
5.下面是有关C语言字符数组的描述,其中错误的是( )
A.不可以用赋值语句给字符数组名赋字符串
B.可以用输入语句把字符串整体输入给字符数组
C.字符数组中的内容不一定是字符串
D.字符数组只能存放字符串
6.以下叙述中正确的是( )
A.语句: char str[10]="string!";和char str[10]={"string!"};并不等价
B.对于字符串常量"string!",系统已自动在最后加入了'\0'字符,表示串结尾
C.对于一维字符数组,不能使用字符串常量来赋初值
D.在语句:char str[ ]="string!";中,数组str的大小等于字符串的长度
7.设有定义:char s1[ ]="0123";char s2[ ]={'0','1','2','3'};,则以下叙述中,正确的一项是( )
A.数组s1的长度小于s2的长度 B.数组s1和s2的长度相同
C.数组s1的长度大于s2的长度 D.数组s1和s2完全等价
8.以下选项中,合法的是( )
A. char str3[ ]={'d','e','b','u','g','\0'};
B. char str4;str4="hello world";
C. char name[10];name="china";
D. char str1[5]="pass",str2[6];str2=str1;
9.执行以下程序段的输出结果是( )
char str[12]={'s','t','r','i','n','g'};
printf("%d",strlen(str));
A.6 B.7 C.11 D.12
10.执行以下程序段的输出结果是( )
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
11.执行以下程序段的输出结果是( )
char name[10]={'s','t','r'};
name[2]='#';name[6]=0;
printf("%s",name);
A.st# B.str# C.str#0 D.str0
12.执行以下程序段的输出结果是( )
char name[10]={'s','t','r','i','n','g'};
name[3]='e';name[5]=0;
printf("%s",name);
A.streng B.strieg C.stren D.stren0
13.设有定义:char s[81];int i=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是( )
A.gets(s);
B.while((s[i++]=getchar( ))!= '
';s[i]= '\0';
C.scanf("%s",s);
D.do{ scanf("%c",&s[i]);}while(s[i++]!='
');s[i]= '\0';
14.若有定义语句:char s[10]="1234567\0\0";,则strlen(s)的值是( )
A.7 B.8 C.9 D.10
15.下列选项中,能够满足“若字符串s1等于字符串s2,则执行循环体ST”要求的是( )
A.if(strcmp(s2,s1)==0) {ST};
B.if(s1==s2) {ST};
C.if(strcpy(s1,s2)==1) {ST};
D.if((s1-s2)==0) {ST};
16.执行语句:printf("%d
",strlen("ATS
012\1"));,其输出结果是( )
A.3 B.4 C.8 D.9
17.执行语句:printf("%d
",strlen("\t\"\065\xff
"));,其输出结果是( )
A.5 B.8 C.14 D.输出项不合法,无法正常输出
18.执行以下程序段的输出结果是( )
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
19.执行以下程序段的输出结果是( )
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
20.执行以下程序段的输出结果是( )
char s[ ]="Beijing";
printf("%d
",strlen(strcpy(s,"China")));
A.5 B.7 C.12 D.14
21.执行以下程序段的输出结果是( )
char w[20],a[5][10]={"abcdef","ghijkl","mnopq","rstuv","wxyz."};int i;
for(i=0;i<5;i++)w[i]=a[i][strlen(a[i])-1];
w[5]='\0';puts(w);
A.flqv. B.agmrw C.ekpuy D.flqvz
22.执行以下程序段的输出结果是( )
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!
23.执行以下程序段的输出结果是( )
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
二、程序运行结果题(本题共7小题,每题3分,共21分)
24.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
#include<string.h>
main()
{char a[5][10]={"china","beijing","you","tiananmen","welcome"};
int i,j;char t[10];
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(strcmp(a[i],a[j])>0)
{strcpy(t,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],t);}
puts(a[3]);getch();}
25.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{char s[ ]="012xy\08s34f4w2";
int i,n=0;
for(i=0;s[i]!='0';i++)
if(s[i]>'0'&&s[i]<='9')
n++;
printf("%d",n);
getch();}
26.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int i,j=0;
char a[ ]="How are you!",b[10]={0};
for(i=0;a[i];i++)
if(a[i]==' ')
b[j++]=a[i-1];
printf("%s",b);
getch();}
27.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{char b[3][10],c;
int i;
for(i=0;i<2;i++)
scanf("%s",b[i]);
i=0;
while((c=getchar( ))!='
')
b[2][i++]=c;
b[2][i]='\0';
printf("%s%s%s
",b[0],b[1],b[2]);
getch();}
程序运行时输入:Peach flower is pink.<回车>
28.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
#include<string.h>
main()
{char w[20],a[5][10]={"abcdef","ghijkl","mnopq","rstuv","wxyz"};
int i,j;
for(i=0;i<5;i++)
{j=0;
while(a[i][j]!='\0')
j++;
w[i]=a[i][j-2];}
w[5]='\0';
puts(w);
getch();}
29.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
#include<string.h>
main()
{char p[20]={'a','b','c','d'},q[ ]="abc",r[ ]="abcde";
strcat(p,r);
strcpy(p+strlen(q),q);
printf("%d",strlen(p));
getch();}
30.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
#include<string.h>
main()
{char a[20]="ab",b[20]="cdef";
int k=0;
strcat(a,b);
while(a[k]!='\0')
{b[k]=a[k];
k++;}
puts(b);
getch();}
三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分)
31.以下程序的功能是输出下列图案。程序中有三处错误,请改正。
*****
*****
*****
*****
*****
L1 #include <stdio.h>
L2 #include<conio.h>
L3 main()
L4 {char a[5]={'*','*','*','*','*'};
L5 int i,j,k;
L6 char space=' ';
L7 for(i=0;i<5;i++)
L8 {for(j=1;j<i;j++)
L9 printf("%c",i+j);
L10 for(k=0;k<5;k++)
L11 printf("%c",a[k+1]);
L12 printf("
");}
L13 printf("
");
L14 getch();}
四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
32.有一行电文,已经按照下面规律译成密码。即第一个变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求程序将密码译回原文,并输出密码和原文,请填空。
……
#include <stdio.h>
#include<conio.h>
main()
{int i,n;char ch[80];
printf("input cipher code:
");
gets(ch);
printf("
cipher code:%s
",ch);
i=0;
while(ch[i]!='\0')
{if((ch[i]>='A')&&(ch[i]<='Z'))
ch[i]=【1】;
else if((ch[i]>='a')&&(ch[i]<='z'))
ch[i]=【2】;
else ch[i]=【3】;
i++;}
n=【4】;
printf("original text:");
for(i=0;i<n;i++)
putchar(ch[i]);
printf("
");
getch();}
33.有一篇文章,共有3行文字,每行有80个字符,要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。请填空。
#include <stdio.h>
#include<conio.h>
main()
{int i,j,upp,low,dig,spa,oth;
char text[3][80];
upp=low=dig=spa=oth=0;
for(i=0;i<3;i++)
{printf("please input line %d:
",i+1);
gets(text[i]);
for(j=0;j<80&&【1】;j++)
{if(text[i][j]>='A'&&text[i][j]<='Z')
upp++;
else if(【2】)
low++;
else if(【3】)
dig++;
else if(【4】)
spa++;
else oth++;}}
printf("%d,%d,%d,%d,%d",upp,low,dig,spa,oth);
getch();}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《编程语言—C语言》
项目四: 数组
第21卷: 字符数组的定义和使用、字符串函数的应用
时间:45分钟 总分:100分
班级___________ 姓名__________ 学号__________ 成绩________
一、选择题(共23小题,每小题2分,共46分)
1.若有定义语句:cahr s[10];,需要从终端给s数组输入5个字符,错误的输入语句是( )
A.gets(&s[0]); B.scanf("%s",s+1);
C.gets(s); D.scanf("%s",s[1]);
【答案】D
2.执行以下程序段的输出结果是( )
char ch[3][5]={"AAAA","BBBB","CC"};
printf("%s",ch[1]);
A.AAAA B.CC C.BBBCC D.BBBB
【答案】D
3.执行以下程序段时输入:Fig flower is red.<回车>,则输出结果是( )
char b[4][10];int i;
for(i=0;i<4;i++)scanf("%s",b[i]);
printf("%s%s%s%s
",b[0],b[1],b[2],b[3]);
A.Fig flower is red. B.Fig flowerisred.
C.Figflowerisred. D.Figflowerisred
【答案】C
4.执行以下程序段的输出结果是( )
#include <stdio.h>
#include<string.h>
main()
{char a[20]="ABCD\0EFG\0",b[ ]="IJK";
strcat(a,b);
printf("%s",a); }
A.ABCD\0EFG\0IJK B.ABCDIJK C.IJK D.EFGIJK
【答案】B
5.下面是有关C语言字符数组的描述,其中错误的是( )
A.不可以用赋值语句给字符数组名赋字符串
B.可以用输入语句把字符串整体输入给字符数组
C.字符数组中的内容不一定是字符串
D.字符数组只能存放字符串
【答案】D。C语言中,字符数组可以用来存放单个的字符或者字符串。
6.以下叙述中正确的是( )
A.语句: char str[10]="string!";和char str[10]={"string!"};并不等价
B.对于字符串常量"string!",系统已自动在最后加入了'\0'字符,表示串结尾
C.对于一维字符数组,不能使用字符串常量来赋初值
D.在语句:char str[ ]="string!";中,数组str的大小等于字符串的长度
【答案】B
7.设有定义:char s1[ ]="0123";char s2[ ]={'0','1','2','3'};,则以下叙述中,正确的一项是( )
A.数组s1的长度小于s2的长度 B.数组s1和s2的长度相同
C.数组s1的长度大于s2的长度 D.数组s1和s2完全等价
【答案】C
8.以下选项中,合法的是( )
A. char str3[ ]={'d','e','b','u','g','\0'};
B. char str4;str4="hello world";
C. char name[10];name="china";
D. char str1[5]="pass",str2[6];str2=str1;
【答案】A
9.执行以下程序段的输出结果是( )
char str[12]={'s','t','r','i','n','g'};
printf("%d",strlen(str));
A.6 B.7 C.11 D.12
【答案】A
10.执行以下程序段的输出结果是( )
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
【答案】
11.执行以下程序段的输出结果是( )
char name[10]={'s','t','r'};
name[2]='#';name[6]=0;
printf("%s",name);
A.st# B.str# C.str#0 D.str0
【答案】A
12.执行以下程序段的输出结果是( )
char name[10]={'s','t','r','i','n','g'};
name[3]='e';name[5]=0;
printf("%s",name);
A.streng B.strieg C.stren D.stren0
【答案】C
13.设有定义:char s[81];int i=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是( )
A.gets(s);
B.while((s[i++]=getchar( ))!= '
';s[i]= '\0';
C.scanf("%s",s);
D.do{ scanf("%c",&s[i]);}while(s[i++]!='
');s[i]= '\0';
【答案】C
14.若有定义语句:char s[10]="1234567\0\0";,则strlen(s)的值是( )
A.7 B.8 C.9 D.10
【答案】A
15.下列选项中,能够满足“若字符串s1等于字符串s2,则执行循环体ST”要求的是( )
A.if(strcmp(s2,s1)==0) {ST};
B.if(s1==s2) {ST};
C.if(strcpy(s1,s2)==1) {ST};
D.if((s1-s2)==0) {ST};
【答案】A
16.执行语句:printf("%d
",strlen("ATS
012\1"));,其输出结果是( )
A.3 B.4 C.8 D.9
【答案】C
17.执行语句:printf("%d
",strlen("\t\"\065\xff
"));,其输出结果是( )
A.5 B.8 C.14 D.输出项不合法,无法正常输出
【答案】A
18.执行以下程序段的输出结果是( )
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
19.执行以下程序段的输出结果是( )
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
20.执行以下程序段的输出结果是( )
char s[ ]="Beijing";
printf("%d
",strlen(strcpy(s,"China")));
A.5 B.7 C.12 D.14
【答案】A
21.执行以下程序段的输出结果是( )
char w[20],a[5][10]={"abcdef","ghijkl","mnopq","rstuv","wxyz."};int i;
for(i=0;i<5;i++)w[i]=a[i][strlen(a[i])-1];
w[5]='\0';puts(w);
A.flqv. B.agmrw C.ekpuy D.flqvz
【答案】A
22.执行以下程序段的输出结果是( )
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
23.执行以下程序段的输出结果是( )
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
二、程序运行结果题(本题共7小题,每题3分,共21分)
24.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
#include<string.h>
main()
{char a[5][10]={"china","beijing","you","tiananmen","welcome"};
int i,j;char t[10];
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(strcmp(a[i],a[j])>0)
{strcpy(t,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],t);}
puts(a[3]);getch();}
【答案】welcome
25.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{char s[ ]="012xy\08s34f4w2";
int i,n=0;
for(i=0;s[i]!='0';i++)
if(s[i]>'0'&&s[i]<='9')
n++;
printf("%d",n);
getch();}
【答案】0
26.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int i,j=0;
char a[ ]="How are you!",b[10]={0};
for(i=0;a[i];i++)
if(a[i]==' ')
b[j++]=a[i-1];
printf("%s",b);
getch();}
【答案】we
27.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{char b[3][10],c;
int i;
for(i=0;i<2;i++)
scanf("%s",b[i]);
i=0;
while((c=getchar( ))!='
')
b[2][i++]=c;
b[2][i]='\0';
printf("%s%s%s
",b[0],b[1],b[2]);
getch();}
程序运行时输入:Peach flower is pink.<回车>
【答案】Peachflower is pink.
28.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
#include<string.h>
main()
{char w[20],a[5][10]={"abcdef","ghijkl","mnopq","rstuv","wxyz"};
int i,j;
for(i=0;i<5;i++)
{j=0;
while(a[i][j]!='\0')
j++;
w[i]=a[i][j-2];}
w[5]='\0';
puts(w);
getch();}
【答案】ekpuy
29.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
#include<string.h>
main()
{char p[20]={'a','b','c','d'},q[ ]="abc",r[ ]="abcde";
strcat(p,r);
strcpy(p+strlen(q),q);
printf("%d",strlen(p));
getch();}
【答案】6
30.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
#include<string.h>
main()
{char a[20]="ab",b[20]="cdef";
int k=0;
strcat(a,b);
while(a[k]!='\0')
{b[k]=a[k];
k++;}
puts(b);
getch();}
【答案】abcdef
三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分)
31.以下程序的功能是输出下列图案。程序中有三处错误,请改正。
*****
*****
*****
*****
*****
L1 #include <stdio.h>
L2 #include<conio.h>
L3 main()
L4 {char a[5]={'*','*','*','*','*'};
L5 int i,j,k;
L6 char space=' ';
L7 for(i=0;i<5;i++)
L8 {for(j=1;j<i;j++)
L9 printf("%c",i+j);
L10 for(k=0;k<5;k++)
L11 printf("%c",a[k+1]);
L12 printf("
");}
L13 printf("
");
L14 getch();}
答案:
L8 {for(j=1;j<=i;j++)
L9 printf("%c",space);
L11 printf("%c",a[k]);
四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
32.有一行电文,已经按照下面规律译成密码。即第一个变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求程序将密码译回原文,并输出密码和原文,请填空。
……
#include <stdio.h>
#include<conio.h>
main()
{int i,n;char ch[80];
printf("input cipher code:
");
gets(ch);
printf("
cipher code:%s
",ch);
i=0;
while(ch[i]!='\0')
{if((ch[i]>='A')&&(ch[i]<='Z'))
ch[i]=【1】;
else if((ch[i]>='a')&&(ch[i]<='z'))
ch[i]=【2】;
else ch[i]=【3】;
i++;}
n=【4】;
printf("original text:");
for(i=0;i<n;i++)
putchar(ch[i]);
printf("
");
getch();}
答案:①155-ch[i] ②219-ch[i] ③ch[i] ④i
33.有一篇文章,共有3行文字,每行有80个字符,要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。请填空。
#include <stdio.h>
#include<conio.h>
main()
{int i,j,upp,low,dig,spa,oth;
char text[3][80];
upp=low=dig=spa=oth=0;
for(i=0;i<3;i++)
{printf("please input line %d:
",i+1);
gets(text[i]);
for(j=0;j<80&&【1】;j++)
{if(text[i][j]>='A'&&text[i][j]<='Z')
upp++;
else if(【2】)
low++;
else if(【3】)
dig++;
else if(【4】)
spa++;
else oth++;}}
printf("%d,%d,%d,%d,%d",upp,low,dig,spa,oth);
getch();}
答案:①text[i][j]!='\0' ②text[i][j]>='a'&&text[i][j]<='z'
③text[i][j]>='0'&&text[i][j]<='9' ④text[i][j]==' '
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$