1、第七章 数 组1.在C语言中引用数组元素时,下面关于数组下表数据类型的说法错误的是( )A)整型常量 B)整型表达式C) 整型常量或整型表达式 D) 任何类型的表达式2.以下能正确定义一维数组a的选项是()A)inta=5=0,1,2,3,4,5; B) char a =0,1,2,3,4,5;C)char a= A,B,C,; D) int a5= 0,1,2,3 3.以下能正确定义一维数组a的选项是( )A) int a(10); B) int n=10, an;C) int n; D) #define SIZE 10 scanf(%d,&n); int aSIZE; int an;4.若
2、有定义:int a10;则正确引用数组a元素的是( )A) a10 B) a3 C) a5 D) a-105.以下不正确的数组定义是( )A) double x5=2.0,4.0,6.0,8.0,10.0;B) int y5=0,1,3,5,7,9;C) char c1 =1,2,3,4,5;D) char c2 =x10,xa,x8;6.以下叙述中错误的是( )A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出B)数组名代表的是数组所占存储区的首地址,其值不可改变C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D)可以通过赋初值的
3、方式确定数组元素的个数7.以下正确的二维数组定义是( )A)int a =1,2,3,4,5,6; B)int a2 =1,2,3,4,5,6;C)int a 3=1,2,3,4,5,6; D)int a2,3=1,2,3,4,5,6;8.以下对二维数组a进行初始化正确的是( )A)int a2 =1,0,1,5,2,3;B)int a 3=1,2,3,4,5,6;C)int a24=1,2,3,4,5,6;D)int a 3=1,0,1, ,1,1;9.以下不能对二维数组a进行初始化的是( )A)int a23=0;B)int a 3=1,2,0;C)int a23=1,2,3,4,5,6;
4、D)int a 3=1,2,3,4,5,6;10.若有定义:int a34;则正确引用数组a元素的是( )A)a24 B)a33 C)a00 D)a3411.若定义了int b 3=1,2,3,4,5,6,7;则b数组第一维的长度是( )A)2 B)3 C)4 D)无确定值12.若有定义:int a34=0;以下叙述中正确的是( )A)只有元素a00可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元素均可得到初值013.若有定义:int a 4=0,0;以下叙述中错误的是( )A)数组a的每个元素都可得到初值0B)二维数组a的第一维大小为1C)因
5、为初值个数除以a中第二维大小的值的商为0,故数组a的行数为1D)只有元素a00和a01可得到初值0,其余元素均得不到初值014.若二维数组a有m列,则计算元素a i j 在数组中相对位置的公式为( )A)i*m+j B)j*m+i C)i*m+j1 D)i*m+j+115.设char x =12345,y =1,2,3,4,5,0;以下叙述中正确的是( )A)x数组的长度等于y数组的长度 B)x数组的长度大于y数组的长度C)数组的长度少于数组的长度D)数组与数组的存储区域相同16.下面是对字符数组s进行初始化,其中不正确的是( )A)char s5=abc; B)char s5=a,b,c;C
6、)char s5= ; D)char s5=abcde;17.字符数组s不能作为字符串使用的是( )A)char s =happy; B)char s6=h,a,p,p,y,0;C)char s =happy; D) char s5= h,a,p,p,y,0;18.下面有关字符数组的描述中错误的是( )A)字符数组可以存放字符串B)字符串可以整体输入、输出C)可以在赋值语句中通过赋值运算对字符数组整体赋值D)不可以用关系运算符对字符数组中的字符串进行比较19.下面程序段执行后的输出结果是( ) int k,a33=1,2,3,4,5,6,7,8,9; for (k=0;kb) B)if (st
7、rcmp (a,b) )C)if (strcmp(b,a)0) D)if (strcmp(a,b)0)25.表达式strcmp(3.14,3.278)的值是( )A)非零整数 B)浮点数 C)0 D)字符26.以下叙述中正确的是( )A)两个字符串所包含的字符个数相同时,才能比较字符串B)字符个数多的字符串比字符个数少的字符串大C)字符串STOP与STOP相等D)字符串That小于字符串That27.有以下程序: # include # include void main( ) char p =a,b,c,q10=a,b,c; printf (%d %d,strlen(p), strlen(q
8、); 以下叙述正确的是( )A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3D)由于p和q数组中都没有字符串结束符,故长度都不能确定28.下面程序运行时从键盘上输入:123 456 789,其输出结果是( ) # include void main( ) char s100;int c, i; scanf (%c,&c);scanf (%d,&i);scanf (%s,s); printf(%c,%d,%s,c,i,s); A
9、)123,456,789 B)1,456,789 C)1,23,456,789 D)1,23,45629.下面程序运行时从键盘上输入:ABC,其输出结果是( ) # include # include void main( ) char ss10=12345; gets (ss);strcat(ss,6789);printf(%s,ss); A)ABC6789 B)ABC67 C)12345ABC6 D)ABC45678930.下面程序执行后的输出结果是( ) # include #include void main( ) char arr24; strcpy (arr,you);strcpy
10、(arr1,me); arr03=&; printf(%s,arr); A)you&me B)you C)me D)错误31.下面程序执行后的输出结果是( ) # include void main( ) char ch7=12ab56;int i,s=0; for (i=0;chi0&chi=9;i+=2) s=10*s+chi-0; printf(%d,s); A)1 B)1256 C)12ab56 D)ab32.下面程序执行后的输出结果是( ) # include void main( ) char str =SSWLIA, c;int k; for (k=2;( c=strk )!=0
11、;k+) switch ( c ) case I:+k;break; caseL:continue; default:putchar( c );continue; putchar( * ); A)SSW B)SW* C)SW*AD)SW33.下面程序执行后的输出结果是( ) # include void main( ) int a33= 1,2 , 3,4 . 5,6 ,i , j , s=0; for (i=1;i3;i+) for (j=0;j=i;j+) s+=aij; printf(%d,s); A)18 B)19 C)20 D)2134.下面程序执行后的输出结果是( ) # incl
12、ude void main( ) char w 10=ABCD,EFGH,IJKL,MNOP , k; for (k=1;k3;k+) printf(%s,wk); A)ABCDFGHKL B)ABCDEFGIJM C)EFGJKO D)EFGHIJKL35.下面程序执行后的输出结果是( ) # include void main( ) int aa44= 1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6 ; int i,s=0; for (i=0;i4;i+) s+=aai1; printf(%d,s); A)11 B)13 C)19 D)20二、填空题1、C语言数组的下标总
13、是从_开始,不可以为负数;数组各个元素具有相同的_.2. 在C语言中,二维数组的元素在内存中的存放顺序是_.3.在C语言中,一个二维数组可以看成若干个_数组.4.若定义:int a34=1,2,0,4,6,8,10;则初始化后a12的值为_,a21得到的值为_5.若定义:double x35;则x数组中行下标的上限为_,列下标的上限为_6.字符串是以_为结束标的一维字符数组.若有定义:char a=” “;则a数组的长度是_.7.字符串”abn012”的长度是_.8.若定义:char a=”abcdefg”,b10=”abcdefg”;语句printf(“%d,%d”,sizeof(a),si
14、zeof(b);.”执行后的输出结果是_.9.若要求从键盘读入含有空格的字符串,应使用_函数.10.欲为字符串s1输入”hello world”,其语句是_11.欲为字符串s1复制到字符串S2中,其语句是_12,如果在程序中调用了strcat函数,则需要预处理命令_。如果在程序中调用了gets函数,则需要预处理命令_。13.如果在程序中调用了isupper函数,则需要预处理命令_。14.若定义:char a=”windows”,b=”9x”;则执行语句printf(“%s”,strcat(a,b);”后的输出结果为:_。15.下面程序执行后的输出结果是#include Void main( )
15、int p8=11,12,13,14,15,16,17,18,i=0,j=0;while (i+7) if(pi%2) j+=pi;printf(“%d”,j);16.下面程序执行后的输出结果是#include void main( )inta33=1,2,9,3,4,8,5,6,7,I,s=0;for(i=0;i3;i+) s+=aii+ai3-i-1;printf(“%d”,s);17. 下面程序执行后的输出结果是char x=”the teacher”;int i=0;while(x+i!=0) if(xi-1= =t) printf(“%c”,xi);18. 下面程序执行后的输出结果是
16、#include void main( )char b=”hello,you”; b5=0; printf(“%s”,b);19. 下面程序执行后的输出结果是char a7=”a00a00”;int i,j;i=sizeof(a);j=strlen(a);printf(“%d,%d”,i,j);20. 若定义:char a80=”95”,b=”windows”;则执行语句printf(“%s”,strcat(a,b);”后的输出结果为:_三、程序阅读题1-201./*写出下面程序执行后的运行结果*/#includevoid main() int i,n=0,0,0,0,0; for(i=1;i
17、=4;i+) ni=ni-1*2+1; printf(%d,ni);2./*写出下面程序执行后的运行结果*/#includevoid main() int i,a5; for(i=0;i2)%5; for(i=4;i=0;i-) printf(%d,ai);3./*下面程序运行时从键盘上输入:7 4 8 9 1 5 ,写出程序的运行结果。*/#includevoid main() int a6,i,j,k,m;/int a6=7,4,8,9,1,5,i,j,k,m; for(i=0;i=0;i-) k=a5; for(j=4;j=0;j-) aj+1=aj; a0=k; for(m=0;m6;
18、m+) printf(%d,am); printf(n); 4./*下面程序运行时从键盘上输入:1 2 3 -4 ,写出程序的运行结果。*/#includevoid main() int i,k=0,s=0,a10; while(1) scanf(%d,&ak); if(ak=0) break; s=s+ak+; for(i=0;ik;i+) printf(%d,ai); printf(%d,s);5./*写出下面程序执行后的运行结果*/#includevoid main() int i,k=5,a10,p3; for(i=0;i10;i+) ai=i; for(i=0;i3;i+) pi=a
19、i*(i+1); for(i=0;i3;i+) k+=pi*2; printf(%dn,k);6./*写出下面程序执行后的运行结果*/#includevoid main() int x=1,3,5,7,2,4,6,0,i,j,k; for(i=0;i=i;j-) if(xj+1xj) k=xj;xj=xj+1;xj+1=k; for(i=0;i3;i+) for(j=4;jxj) k=xj;xj=xj+1;xj+1=k; for(i=0;i3;i+) for(j=4;jxj+1) k=xj;xj=xj+1;xj+1=k; for(i=0;i8;i+) printf(%d,xi);7./*写出下
20、面程序执行后的运行结果*/#includevoid main() int a66,i,j; for(i=1;i6;i+) for(j=1;j6;j+) aij=(i/j)*(j/i); for(i=1;i6;i+) for(j=1;j6;j+) printf(%2d,aij); printf(n); 8./*写出下面程序执行后的运行结果*/#includevoid main() int a33=1,2,3; int b33=1,2,3; printf(%d,a10+b01); printf(%dn,a01+b10);9./*写出下面程序执行后的运行结果*/#includevoid main(
21、int a44=1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18; int i=0;j=0;s=0; while(i+4) if(i=2|i=4) continue; j=0; do s+=aij;j+ while(j4); printf(%d,s);10./*写出下面程序执行后的运行结果*/#includevoid main() int a33=1,4,17,3,6,19,2,5,18,i,s=0; for(i=0;i=2;i+) s=s+ai2-i; printf(s=%d,s);11./*写出下面程序执行后的运行结果*/#includevoid main()
22、 int b33=(0,1,2,0,1,2,0,1,2,i,j,t=1; for(i=0;i3;i+) for(j=i;j=i;j+) t=t+bibjj; printf(%d,t); 12. /*写出下面程序执行后的运行结果*/#includevoid main() int i,j,a44; for(i=0;i4;i+) for(j=0;j4;j+) aij=1+i-j; for(i=0;i4;i+) for(j=0;j0) printf(%3d,aij); putchar(n); 13./*写出下面程序执行后的运行结果*/#includevoid main() int a43=1,2,3,
23、-2,0,2,1,0,1,-1,2,-3; int b32=-1,3,-2,2,2,1; int c42,i,j,k,s; for(i=0;i4;i+) for(k=0;k2;k+) s=0; for(j=0;j3;j+) s+=aij*bjk; cik=s; printf(%4d,s); printf(n); 14./*写出下面程序执行后的运行结果*/#includevoid main() int i,j,a3=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) for(j=i+1;j3;j+) aji=0; for(i=0;i3;i+) for(j=0;j3;j+) pri
24、ntf(%d,aij); printf(n); 15. /*写出下面程序执行后的运行结果*/#includevoid main() char a8= ,t; int j,k; for(j=0;j5;j+) aj=(char)(a+j); for(j=0;j0;k-) ak=ak-1; a0=t; printf(%s,a);16. /*写出下面程序执行后的运行结果*/#includevoid main() char s80; int i=0; gets(s); while(si!=0) if(si=a) si=z+a-si; i+; puts(s);17. /*写出下面程序执行后的运行结果*/#
25、includevoid main() int i=0; char a=abm,b=aqid,c10; while(ai!=0& bi!=0) if(ai=bi) ci=ai-32; else ci=bi-32; i+; ci=0; puts(c); 18./*写出下面程序执行后的运行结果*/#includevoid main() int i=0; char c,s=SABC; while(c=si) switch(c) case A:i+;break; case B:+i; default:putchar(c);i+; putchar(*); 19. /*写出下面程序执行后的运行结果*/#in
26、cludevoid main() int i,c; char s25=1980,9876; for(i=3;i=0;i-) c=s0i=s1i-2*0;s0i=c%10; for(i=0;i=1;i+) puts(si); 20./*写出下面程序执行后的运行结果*/#includevoid main() char ch=abc,x34;int i; for(i=0;i3;i+) strcpy(xi,ch); for(i=0;i3;i+) printf(%s,xii);四、程序填空题1-20/*1.下面程序的功能是将十进制整数n转换成base进制。请填空使程序完整、正确*/#includevoi
27、d main()int i=0,base,n,j,num20;scanf(%d,&n);scanf(%d,&base);doi+;numi=【1】;n=【2】;while(n!=0);for(【3】)printf(%d,numj);/*2.下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数。请填空使用程序完整、正确。*/#includevoid main()int a10,max,min,i,j,k;for(i=0;i10;i+) scanf(%d,&ai);max=min=a0,j=k=0;for(i=0;i10;i+) if(aimax) m
28、ax=ai;【2】;【3】;for(i=0;i10;i+) printf(%d,ai);/*3.下面程序的功能是将数组输入数据,逆序置换后输出。逆序置换是指数组的首元素和末元素置换,第二个元素和倒数第二个元素置换请填空使用程序完整、正确。*/#include#define N 8void main() int i,j,t,aM; for(i=0;iN;i+) scanf(%d,ai); i=0;j=N-1; while(ij) t=ai,【1】,ai=t; i+,【2】; for(i=0;iN;i+) printf(%5d,ai);/*4.下面程序的功能是用“两路合并法”把两个已按升序(由小到
29、大)排列的数组合并成一个新的升序数组。请填空使程序完整、正确。*/#includevoid main() int c10,i=0,j=0,k=0; int a3=5,9,10;int b5=12,24,26,37,48; while(i3 & j5) if(【1】) ck=bj;k+;j+; else ck=ai;k+;i+; while (【2】) ck=ai;i+;k+; while(【3】) ck=bj;j+;k+; for(i=0;ik;i+) printf(%d,ci);/*5.下面程序的功能是读入n(n=10)个整数并放入一个数组r中,统计并输出比相邻元素小的数组元素的个数。请填空
30、使程序完整、正确。*/#includevoid main() int k,count,n,r10; scanf(%d,&n): for(k=0;kn;k+) scanf(%d,&rk); 【1】; for(k=1;kn-1;k+) if(【2】) count+; if(【3】) count+; if(rn-1rn-2) count+; printf(count=%d,count);/*6.下面程序的功能是用“顺序查找法”查找数组a中是否存在某一关键字。请填空使程序完整、正确。*/#includevoid main() int a10=2557,48,371,123,291,18,22,44;
31、int i=0,x; scanf(%d,&x);【1】;while(ai!=x) i+;if(【2】) printf(找到在%d,i);else printf(找不到!);/*7.下面程序的功能是用“插入法”对数组a进行由大到小的排序。请填空使程序完整、正确。提示:简单插入排序算法的基本思想是将数组处理n-1,第k次处理时,前面的元素插入到目前的位置。第k次的元素是这样插入的:在第k次处理时,前面的元a0,a1,ak-1必定已排成了升序,将ak与ak-1,ak-2,a0逐个比较(由后向前),若有ajak,则ak插入到aj之后,否则ak维持原位不变。*/#includevoid main() int a10=191,3,6,4,11,7,25,13,89,