第七章 数组《C语言程序设计教程》(清华大学出版社第三版) 章节关过卷

2025-07-01
| 2份
| 15页
| 179人阅读
| 1人下载

内容正文:

<C语言程序设计教程>清华大学出版社(第3版) 第七章 数组 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 选择题(共10题,每小题2分,共20分) 1下列一维数组定义中,正确的是 。 A、 int a[ ]; B、int z=3,a1[z]; C、 int a(5); D、#define Z 5; int a[z]; 【答案】D 【解析】A选项,数组定义时必须指定大小。B选项,[]中间必须是整型常量或者是整型常量表达式。C选项,数组大小必须用[]。故选D。 2、下列数组初始化中,错误的是 。 A、int a[5]={1,2,3}; B、char c[ ]={‘h’,’o’,’w’}; C、char c[ ]=”how”; D、int a[ ]={1,2,3}; 【答案】B 【解析】字符数组要以’\0’结尾,C选项赋值方法系统默认加’\0’,B选项逐个赋值没有加’\0’,故错误。正确赋值char [ ]={‘h’,’o’,’w’,’\0’};故选B。 3、 若有定义int a[6];下列数组元素引用中,正确的是 。 A、a={1,2,3,4,5,6} B、a[6]={1,2,3,4,5,6} C、a[6]=10; D、a[0]=1;a[1]=a[0]+5; 【答案】D 【解析】A选项,a是地址常量,不能赋值。B、C选项,a[6]不是数组元素,越界。故选D。 4、 下列二维数组中定义正确的是 。 A、int b[ ][2]; B、int b[2][ ]={{1},{2}}; C、int b[ ][2]={1,2,3,4}; D、int b[ ][ ]={1,2,3,4}; 【答案】C 【解析】A选项,在不初始化的情况下,不能省略一维的大小。B、D选项,无法确定二维的大小。故选C。 5、 若有以下定义,输出结果是 。原创精品资源学科网独家享有版权,侵权必究! char s[ ]=”ab12\\56 \xAD” ; printf(“%d,%d”,sizeof(s),strlen(s)); A、10,9 B、9,10 C、9,8 D、8,9 【答案】A 【解析】sizeof()是求s[]数组所占字节数包括’\0’,strlen()求s[]数组长度不包括’\0’。故选A。 6、 若有以下定义,则下列输出结果是 。 int i,j,bb[3 ][4 ]={{1,2,3}{,4,5,6},{7,8,9}}; for(i=0;i<4;i++) printf(“%d”,bb[1][i]); A、1234 B、4560 C、2580 D、1230 【答案】B 【解析】输出中bb[1][i],输出数组第1行的全部元素,没有初始化的默认为0。故选B 7、 若有以下定义,则能正确引用数组元素的是 。 int x[3][4]; A、 x[0][4] B、x[3][3] C、x[2+1][0] D、x[1+1][1+2] 【答案】D 【解析】数组下标从0开始,第一维数组大小不能超过3,第二维数组大小不能超过4。故选D。 8、 若有定义如下,则表达式值不为4的是 。 int x[3][3]={1,2,3,4,5,6,7,8,9}; A、x[0][1]+1 B、x[2][1]/2 C、x[1][0] D、x[1][1]-1 【答案】A 【解析】x[0][1]是x数组0行1列元素为2,2+1=3。故选A 9、若有定义如下,则执行后输出结果是 。 char str[20]=”abc”,str1[ ]=”123456”; strncpy(str,str1,4); str[2]=’\0’; puts(str); A、123456 B、123 C、12 D、abc123 【答案】C原创精品资源学科网独家享有版权,侵权必究! 【解析】strncpy()函数是将str1数组中前四个字符复制到str数组中,覆盖str数组中原本字符,又将str[2]元素赋值为’\0’,puts输出时遇到’\0’结束。故选C。 10、有如下程序段,则输出结果是 。 char str[]=” abcdefgh”; int i; for(i=0;str[i]!=’\0’;i++) if(i++%3==0) printf("%2c",toupper(str[i]));} A、A D B、a d C、B H D、b h 【答案】C 【解析】注意if条件中i++为后置加,条件成立后i的值加1,toupper将小写字符变为大写字符。故选C 二、填空题(共6空,每空2分,共12分) 1、若有定义int x[20];数组起始地址为2000,则x[11]元素地址为: 。 若定义int x[6][5];数组起始地址为2000,则x[3][4]元素地址为: 。 【答案】2044。x[11]元素地址为2000+11*4(字节数)=2044 2076。x[3][4]元素地址为2000+(3*5+4)*4=2076 2、 若有定义char s1[20]=”shang”,s2[20]=”hai”;,如何将s1放到s2后面去,请写出语句 。 【答案】strcat(s2,s1) 3、 若有语句int x[5],i;现需要将数组元素赋值为奇数数(从1开始),语句是 。 【答案】for(i=0;i<5;i++) x[i]=i*2+1; 4、 若有定义字符数组str1和str2,如何判断str1大于str2 。 【答案】if(strcmp(str1,str2)>0) 5、 若有定义char b[20];且每个元素均已赋值,如何把b数组中前8个元素均赋值为字符5: 。 【答案】memset(b,'5',8*sizeof(char)); 三、程序运行题(共6题,每小题3分,共18分) 原创精品资源学科网独家享有版权,侵权必究! 1、以下程序的运行结果是 。 #include<stdio.h> void main() { int a[6]={1,2},i; for(i=2;i<6;i++) a[i]=a[a[i-1]-a[i]]*2; for(i=0;i<6;i++) printf(“%d,”,a[i]); } 【答案】1,2,0,2,0,2, 2、以下程序的运行结果是 。 #include<string.h> voiud main( ) { char s1[]=”China”; int n,t,i,j; n=strlen(s1); for(i=0,j=n-1;i<j;i++,j--) { t=s1[i];s1[i]=s1[j];s1[j]=t;} printf(“s1=%s ”,s1); } 【答案】s1=anihC 3、以下程序的运行结果是 。 #include <stdio.h> void main( ) { char s[]=”CBEHGTT”; int i=0; while(s[i++]!=’E’) { switch(s[i]) { printf(“%s”,”good”); case ‘A’: printf(“morning!”);break; case ‘A’+1: printf(“afternoon!”); default: printf(“evening”); } }原创精品资源学科网独家享有版权,侵权必究! } 【答案】afternoon!eveningevening 4、以下程序的运行结果是 。 #include <stdio.h> #include<string.h> #define N 20 void main() { char str[5][N]={“huaihua”,”jiangxi”,”nanchang”,”changjiang”,”huanghe”},str1[N]; int i,j,len; len=strlen(str[0]); for(i=1;i<5;i++) if(len<strlen(str[i])) {strcpy(str1,str[i]); len=strlen(str[i]); } printf(“%s,len=%d”,str1,len); } 【答案】changjiang,len=10 5、以下程序的运行结果是 。 #include<stdio.h> void main() { char s[]=”12sby\018c0v54s6”; int i,n=1; for(i=0;s[i]!=0;i++) if(s[i]>=’0’&&s[i]<=’9’) n++; printf("n=%d ”,n); } 【答案】n=8 6、以下程序的运行结果是 。 #include<stdio.h> void main( ) { int n,i=0,j,b[20]; scanf(“%d”,&n); while(n!=0) 原创精品资源学科网独家享有版权,侵权必究! { b[i++]=n%8; n/=8; } for(j=i-1;j>=0;j--) printf(“%d”,b[j]); } 从键盘输入:51<回车> 【答案】63 四、程序填空题(共6空,每空5分,共30分) 1、程序功能:矩阵的转置。 #include<stdio.h> #define N 3 void main() { int a[N][N]={1,2,3,4,5,6,7,8,9} ,i,j ,t; for(i=0;i<N;i++) for(j=0; ;j++) ; for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%d",a[i][j]); printf(" ");} } 【答案】 j<i t=a[i][j], a[i][j]=a[j][i],a[j][i]=t 2、程序功能:将字符串中连续的数字字符取出组成整数,存放到整型数组中。 #include<stdio.h> void main() { char str[]=”s45jabv9Dyu123ba89”; int a[10],i,j,k=0,s; for(i=0;str[i];) if(str[i]>=’0’&&str[i]<=’9’) { j=i;s=0; while( str[j]>=’0’&&str[j]<=’9’) 原创精品资源学科网独家享有版权,侵权必究! {s= ; j++;} a[k++]=s; ; } else i++; for(i=0;i<k;i++) printf(“%d ”,a[i]); } 【答案】 s*10+str[j]-‘0’ i=j 3、将子串的所有字符插入到有序的母串中,使母串仍然有序。 #include<stdio.h> #include<string.h> void main() { char str[50]={“cdhkoru”},substr[]=”ajfv”,ch; int i,j; for(i=0;i<strlen(substr);i++) { ch=substr[i]; while( ) { str[j+1]=str[j]; j--;} str[j+1]=ch; } printf(“%s ”,str); } 【答案】j=strlen(str)-1; j>=0&&ch<str[j] 五、程序改错题(共20分) 1、程序功能:在输入的三个字符串中,找出最小字符串。现有2处错误,请在找出错误语句,并写出完整的正确语句。(找出错误2分,改正错误3分) L1 #include<stdio.h> L2 #include<string.h> L3 void main() L4 { char minstr[20],str[3][20]; L5 int i; L6 for(i=0;i<3;i++)原创精品资源学科网独家享有版权,侵权必究! L7 scanf(“%s”,&str[i]); L8 strcpy(minstr,str[0]); L9 if(minstr>str[1]) strcpy(minstr,str[1]); L10 if(strcmp(minstr,str[2])>0) strcpy(minstr,str[2]); L11 printf(“最小字符串是:%s”, minstr); } 【答案】 L7 scanf(“%s”,str[i]); L9 if(strcmp(minstr,str[1])>0) strcpy(minstr,str[1]); 2、程序功能:输入10个[10,50]范围的正整数,按升序排序。现有2处错误,请在找出错误语句,并写出完整的正确语句。(找出错误2分,改正错误3分) L1 #include<stdio.h> L2 #include<stdlib.h> L3 #define N 10 L4 void main() L5 { int a[N],t; L6 int i,j; L7 for(i=0;i<N;i++) L8 a[i]=rand()%40+10; L9 for(i=0;i<N-1;i++) L10 for(j=N;j>=i;j--) L11 if(a[j]<a[j-1]) L12 {t=a[j];a[j]=a[j-1];a[j-1]=t;} L13 for(i=0;i<N;i++) L14 printf(“%d ”,a[i]); } 【答案】L8 a[i]=rand()%41+10; L10 for(j=N-1;j>i;j--)原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ <C语言程序设计教程>清华大学出版社(第3版) 第七章 数组 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 选择题(共10题,每小题2分,共20分) 1下列一维数组定义中,正确的是 。 A、 int a[ ]; B、int z=3,a1[z]; C、int a(5); D、#define Z 5; int a[z]; 2、下列数组初始化中,错误的是 。 A、int a[5]={1,2,3}; B、char c[ ]={‘h’,’o’,’w’}; C、char c[ ]=”how”; D、int a[ ]={1,2,3}; 3、 若有定义int a[6];下列数组元素引用中,正确的是 。 A、a={1,2,3,4,5,6} B、a[6]={1,2,3,4,5,6} C、a[6]=10; D、a[0]=1;a[1]=a[0]+5; 4、 下列二维数组中定义正确的是 。 A、int b[ ][2]; B、int b[2][ ]={{1},{2}}; C、int b[ ][2]={1,2,3,4}; D、int b[ ][ ]={1,2,3,4}; 5、 若有以下定义,输出结果是 。 char s[ ]=”ab12\\56 \xAD” ; printf(“%d,%d”,sizeof(s),strlen(s)); A、10,9 B、9,10 C、9,8 D、8,9 6、 若有以下定义,则下列输出结果是 。 int i,j,bb[3 ][4 ]={{1,2,3}{,4,5,6},{7,8,9}}; for(i=0;i<4;i++) printf(“%d”,bb[1][i]); A、1234 B、4560 C、2580 D、1230 7、 若有以下定义,则能正确引用数组元素的是 。 int x[3][4]; A、 x[0][4] B、x[3][3] C、x[2+1][0] D、x[1+1][1+2] 原创精品资源学科网独家享有版权,侵权必究! 8、 若有定义如下,则表达式值不为4的是 。 int x[3][3]={1,2,3,4,5,6,7,8,9}; A、x[0][1]+1 B、x[2][1]/2 C、x[1][0] D、x[1][1]-1 9、若有定义如下,则执行后输出结果是 。 char str[20]=”abc”,str1[ ]=”123456”; strncpy(str,str1,4); str[2]=’\0’; puts(str); A、123456 B、123 C、12 D、abc123 10、有如下程序段,则输出结果是 。 char str[]=” abcdefgh”; int i; for(i=0;str[i]!=’\0’;i++) if(i++%3==0) printf("%2c",toupper(str[i]));} A、A D B、a d C、B H D、b h 二、填空题(共6空,每空2分,共12分) 1、若有定义int x[20];数组起始地址为2000,则x[11]元素地址为: 。 若定义int x[6][5];数组起始地址为2000,则x[3][4]元素地址为: 。 2、 若有定义char s1[20]=”shang”,s2[20]=”hai”;,如何将s1放到s2后面去,请写出语句 。 3、 若有语句int x[5],i;现需要将数组元素赋值为奇数数(从1开始),语句是 。 4、 若有定义字符数组str1和str2,如何判断str1大于str2 。 5、 若有定义char b[20];且每个元素均已赋值,如何把b数组中前8个元素均赋值为字符5: 。 三、程序运行题(共6题,每小题3分,共18分) 1、以下程序的运行结果是 。 #include<stdio.h> void main() { int a[6]={1,2},i; 原创精品资源学科网独家享有版权,侵权必究! for(i=2;i<6;i++) a[i]=a[a[i-1]-a[i]]*2; for(i=0;i<6;i++) printf(“%d,”,a[i]); } 2、以下程序的运行结果是 。 #include<string.h> voiud main( ) { char s1[]=”China”; int n,t,i,j; n=strlen(s1); for(i=0,j=n-1;i<j;i++,j--) { t=s1[i];s1[i]=s1[j];s1[j]=t;} printf(“s1=%s ”,s1); } 3、以下程序的运行结果是 。 #include <stdio.h> void main( ) { char s[]=”CBEHGTT”; int i=0; while(s[i++]!=’E’) { switch(s[i]) { printf(“%s”,”good”); case ‘A’: printf(“morning!”);break; case ‘A’+1: printf(“afternoon!”); default: printf(“evening”); } } } 4、以下程序的运行结果是 。 #include <stdio.h> #include<string.h> #define N 20 void main()原创精品资源学科网独家享有版权,侵权必究! { char str[5][N]={“huaihua”,”jiangxi”,”nanchang”,”changjiang”,”huanghe”},str1[N]; int i,j,len; len=strlen(str[0]); for(i=1;i<5;i++) if(len<strlen(str[i])) {strcpy(str1,str[i]); len=strlen(str[i]); } printf(“%s,len=%d”,str1,len); } 5、以下程序的运行结果是 。 #include<stdio.h> void main() { char s[]=”12sby\018c0v54s6”; int i,n=1; for(i=0;s[i]!=0;i++) if(s[i]>=’0’&&s[i]<=’9’) n++; printf("n=%d ”,n); } 6、以下程序的运行结果是 。 #include<stdio.h> void main( ) { int n,i=0,j,b[20]; scanf(“%d”,&n); while(n!=0) { b[i++]=n%8; n/=8; } for(j=i-1;j>=0;j--) printf(“%d”,b[j]); } 从键盘输入:51<回车> 四、程序填空题(共6空,每空5分,共30分) 1、程序功能:矩阵的转置。 #include<stdio.h> #define N 3原创精品资源学科网独家享有版权,侵权必究! void main() { int a[N][N]={1,2,3,4,5,6,7,8,9} ,i,j ,t; for(i=0;i<N;i++) for(j=0; ;j++) ; for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%d",a[i][j]); printf(" ");} } 2、程序功能:将字符串中连续的数字字符取出组成整数,存放到整型数组中。 #include<stdio.h> void main() { char str[]=”s45jabv9Dyu123ba89”; int a[10],i,j,k=0,s; for(i=0;str[i];) if(str[i]>=’0’&&str[i]<=’9’) { j=i;s=0; while( str[j]>=’0’&&str[j]<=’9’) {s= ; j++;} a[k++]=s; ; } else i++; for(i=0;i<k;i++) printf(“%d ”,a[i]); } 3、将子串的所有字符插入到有序的母串中,使母串仍然有序。 #include<stdio.h> #include<string.h> void main() { char str[50]={“cdhkoru”},substr[]=”ajfv”,ch; 原创精品资源学科网独家享有版权,侵权必究! int i,j; for(i=0;i<strlen(substr);i++) { ch=substr[i]; while( ) { str[j+1]=str[j]; j--;} str[j+1]=ch; } printf(“%s ”,str); } 五、程序改错题(共20分) 1、程序功能:在输入的三个字符串中,找出最小字符串。现有2处错误,请在找出错误语句,并写出完整的正确语句。(找出错误2分,改正错误3分) L1 #include<stdio.h> L2 #include<string.h> L3 void main() L4 { char minstr[20],str[3][20]; L5 int i; L6 for(i=0;i<3;i++) L7 scanf(“%s”,&str[i]); L8 strcpy(minstr,str[0]); L9 if(minstr>str[1]) strcpy(minstr,str[1]); L10 if(strcmp(minstr,str[2])>0) strcpy(minstr,str[2]); L11 printf(“最小字符串是:%s”, minstr); } 2、程序功能:输入10个[10,50]范围的正整数,按升序排序。现有2处错误,请在找出错误语句,并写出完整的正确语句。(找出错误2分,改正错误3分) L1 #include<stdio.h> L2 #include<stdlib.h> L3 #define N 10 L4 void main() L5 { int a[N],t; L6 int i,j; 原创精品资源学科网独家享有版权,侵权必究! L7 for(i=0;i<N;i++) L8 a[i]=rand()%40+10; L9 for(i=0;i<N-1;i++) L10 for(j=N;j>=i;j--) L11 if(a[j]<a[j-1]) L12 {t=a[j];a[j]=a[j-1];a[j-1]=t;} L13 for(i=0;i<N;i++) L14 printf(“%d ”,a[i]); } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

第七章 数组《C语言程序设计教程》(清华大学出版社第三版) 章节关过卷
1
第七章 数组《C语言程序设计教程》(清华大学出版社第三版) 章节关过卷
2
第七章 数组《C语言程序设计教程》(清华大学出版社第三版) 章节关过卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。