任务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]==' ' 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

任务21:字符数组的定义和使用、字符串函数的应用  《编程语言-C语言》45分钟专题训练-第1页
1
任务21:字符数组的定义和使用、字符串函数的应用  《编程语言-C语言》45分钟专题训练-第2页
2
任务21:字符数组的定义和使用、字符串函数的应用  《编程语言-C语言》45分钟专题训练-第3页
3

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。