1、c语言程序设计等级考试习题汇编 1C语言程序设计等级考试习题汇编分章节练习题汇编数组一、判断题1.数组a5表示a数组有5个元素,下标从1到5。F2.数组的大小不依赖于程序运行过程中变量的值。T3.在C中,变量和数组都必须先定义,然后使用。T4.int new8=0,0,0,0,0,0,0,0等价于int new8=0*8。F5.int a32=1,1,1,2,2,2,3,3,3等价于int a32=1,2,3。F6.用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。T7.数组的名称其实是数组在内存中的首地址。T8.如果在对数组进行初始化时,给定的数据元素个数比数组元素个数少时
2、,多余的数组元素会被自动初始化为最后一个给定元素的值。F9.当数组名作为参数被传递给某个函数时,原数组中的元素的值可能被修改。T10.C语言不检查数组的下标是否越界。T二、单项填空题1.若数组名作实参而指针变量作形参,函数调用实参传给形参的是 (D)2.A.数组的长度 B.数组第一个元素的值3.C.数组所有元素的值 D.数组第一个元素的地址4.已有定义:char a=xyz,b=x,y,z;,以下叙述中正确的是 (C) 5.A.数组a和b的长度相同 B.a数组长度小于b数组长度 6.C.a数组长度大于b数组长度 D.上述说法都不对7.以下能正确定义一维数组的选项是(B)8.A.int a5=0
3、,1,2,3,4,5 B.char a=0,1,2,3,4,5 9.C.char a=A,B,C D.int a5=012310.有以下语句:int b;char c10;,则正确的输入语句是 (B) 11.A.scanf(%d%s,&b,&c) B. scanf(%d%s,&b,c); 12.C.scanf(%d%s,b,c) D.scanf(%d%s,b,&c);13.已有定义:char a=xyz,b=x,y,z;,以下叙述中正确的是 (C) 14.A.数组a和b的长度相同 B.a数组长度小于b数组长度 15.C.a数组长度大于b数组长度 D.上述说法都不对16.以下语句或语句组中,能正
4、确进行字符串赋值的是 (C )17.A.char *sp;*sp=right!; B.char s10;s=right!; 18.C.char s10;*s=right!; D.char *sp=right!;19.有以下程序 20.main() 21.char s=159,*p; 22.p=s; 23.printf(%c,*p+);printf(%c,*p+); 24. 25.程序运行后的输出结果是(A)26.A.15 B.16 C.12 D.5927.有以下程序 28.main() 29.int num44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,
5、j; 30.for(i=0;i4;i+) 31.for(j=0;j=i;j+)printf(%4c, ); 32.for(j=_;j4;j+)printf(%4d,numij); 33.printf(n); 34. 35. 36.若要按以下形式输出数组右上半三角 37.1 2 3 4 38.6 7 8 39.11 12 40.16 41.则在程序下划线处应填入的是 (B)42.A.i-1 B.i C. i+1 D.4-i 43.下面程序(C) (每行程序前面的数字表示行号) 44.1 main( )45.2 46.3 float a10=0,0;47.4 int I;48.5 for (i=0
6、;i3;i+) scanf(“%d”,&ai);49.6 for (i=1;i10;i+) a0=a0+ai;50.7 printf(“%fn”,a0);51.8 52.A.没有错误 B.第3行有错误观点 C.第5行有错误 D.第7行有错误53.若二维数组a有m列,则计算任一元素aij在数组中位置的公式为(D).(假设a00位于数组的第一个位置上)。54.Ai*m+j B.j*m+I C.i*m+j-1 D.i*m+j+155.若有以下程序段:56. 57. int a=4,0,2,3,1,I,j,t;58. for (i=1;i=0 & taj)61. aj+1=aj;j-;62. aj+1
7、=t;63. 64. 则此程序的功能是( B)65.A.对数组a进行插入排序(升序) B.对数组a进行插入排序(降序)66.C.对数组a进行选择排序(升序) D.对数组a进行选择排序(降序)三、程序填空题题1CBBAD以下是使用数组来处理并打印斐波那契数列的前二十项的程序。打印时,每行打印10个数字。斐波那契数列的格式为:当n=0时,f0=0,当n=1时,f1=1,当n1时,fn=fn-1+fn-2。【程序】# include,stdio.h.main() int_(1)_ ; int line=0,j; fbnq0=0; fbnq1=1; for (j=_(2)_;j20;j+) _(3)_
8、; for (j=0.j20;j+); print (%d,”fbqnj); _(4)_; if (line=10)| _(5)_ printf(“n”); return (1);1A. Fbnq B. Fbnq1 to 20 C. Fbnq20 D. Fbnq2A.1 B.2 C.0 D.-13A.fbnqj=fbnqj-1+fbnqj B. fbnqj=fbnqj-1+fbnqj-2 C. fbnqj=fbnq0+fbnq1 D. fbnqj+1=fbnqj-1+fbnqj4A. line+ B.line- C.line=line-1 D.line=05A. line+ B.line- C
9、.line=line-1 D.line=0题有已排序好的字符串a,下面的程序是将字符串s中的每个字符升序的规律插入到a中,请选择填空。【程序】# include main ( ) char a 20 =”cehiknqtw”; char s = “fbla”; int i,k,j;BB for (k = 0;s k!=0);k+) j=0; while (k = 0;s k=a j&aj!=0) j+; for (_(1)_) _(2)_ ; a j= sk; puts(a); 1.i=strlen(a)+k:; i=j; i- B.i=strlen(a);i=j;i- C.i=j; i=st
10、rlen(a)+k;i+ D.i=j;i=strlen9a);i+2A.ai=ai+1 B.ai+1=ai C.ai=ai-1 D.ai-1=aiADA题下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并到字符串c中,请选择填空。【程序】# include main ( ) char a =”acegikm”; char b =”bdfhjlnpq”; char c80,*p int i=0,j=0,k=0; while (ai!=0 & bj!=0) if (aibj) _(1)_ else _(2)_ k+; ck=0; if (_(3)_) p=b+j; else p=
11、a+i; strcat (c,p); puts(c); 1.ck=ai;i+ B. ck=aj;i+ C. ck=ai;j+ D.ck=aj;j+2.ck=ai;i+ B. ck=aj;i+ C. ck=ai;j+ D.ck=aj;j+3A.ai= =0 B. ai! =0 C. ai-1= =0 D. ai-1! =0题下面程序以每行个数据的形式输出a数组,请选择填空。【程序】# define N 20BACmain ( ) int a N,I; for (i=0;iN;i+) scanf(%d”, _(1)_) if (_(2)_) _(3)_ printf(“%d”,ai); print
12、f(“n”); 1A.ai B.&ai C.a D.aN2A.i % 4= =0 B. i % 4! =0 C. i / 4= =0 D. i / 4! =03A. printf(“r”) B. printf(“w”) C. printf(“n”) D. printf(“b”)CBC题下面程序将二维数组a的行和列元素互换后存另一个二维数组b中,请选择填空。【程序】Main ( ) int a23=(1,2,3),(4,5,6); int b32,I,j; printf(“array a:n”); for (i=0;i=1;i+) for (j=0; _(1)_;j+) printf(“%5d”
13、,aij); _(2)_; printf(“n”); printf(“array b: n”); for (i=0; _(3)_;i+) for (j=0;j=1;j+) printf(“%5d”,bij); printf(“n”) 1A.j1 B.j=1 C.j=2 D.j22A.bji=aji B. bji=aij C. bij=aji D. bij=aij3A.j1 B.j=1 C.j=2 D.j2题下面程序可求出矩阵a的两条对角线的元素之和,请选择填空。【程序】Main ( ) int a33 = 1,3,6,7,9,11,14,15,17,sum1=0,sum2=0,i,j; for
14、 (i=0;i3;i+) for (j=0;j=3;j+) if (i= =j) sum1=sum1+aij; for (i=0;i=0 B.j=1 C.j=2 D.j=3题7以下程序可求出所有的水仙花数。(提示:所谓水仙花数是指一个三位正数,其各位数字的立方和等于该正整数)请选择填空。【程序】Main ( ) int x,y,z,a 8 ,m,i=0;BBA printf(“the special numbers are (in the arrange of 1000):n”); for (_(1)_;m+) x=m/100; y=_(2)_; z=m%10; if (x*100+y*10+
15、z=x*x*x+y*y*y+z*z*z) _(3)_ ;i+; for (x=0;xI;x+) printf(“%6d”,ax); 1.m=100;m999 B. m=100;m1000 C. m=1;m1000 D. m=1;m9992A.m/10 B.m/10-x*10 C.m%10 x*10 D.m%103A.ai=m B.ai=xyz C.ai+1=m D.ai+1=xyzACB题下面程序的功能是生成并打印某数列的前项,该项数列第,项分别为和,以后每个奇数编号的项是前两项的和,偶数编号的项是前两项差的绝对值。生成的个数存在一维数组x中,并按每行4项的形式输出,请选择填空。【程序】Mai
16、n( ) int x21,I,j; x1=0;x2=1; i=3; do xi= _(1)_; xi+1= _(2)_; i=_(3)_; while (i=20);for (i=;i=20;i+) printf(“%5d”,xi); if (i%4= =0) printf“n”; 1A.xi-1+xi-2 B.xi+1+xi+2 C. xi+xi-1 D. xi+xi+12A.x(i-1)-x(i) B.x(i)-x(i-1) C.fabs(double)(x(i)-x(i-1) D. fabs(double)(x(i-1)-x(i-2)3A.i+1 B.i+2 C.i+3 D.i-1 BA
17、题下面程序的功能是检查一个二维数组是否对称,请选择填空。【程序】Main( ) int a44=1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4,; int i,j,found=0; for (j=0;j4;j+) for (_(1)_;i4;i+) if (aij! =aji) _(2)_ ;break; if (found) printf(“No”); else printf(“Yes”);1A.i=j B.i=j+1 C.i=0 D.i=12A.found=1 B.found=0 .found=true D.found=falseDBA题a是一个33的矩阵,输入a的元素,如
18、果a是下三角矩阵,输出“YES”,否则,输出“NO”。 (下三角矩阵,即对角线以上的元素都为0,主对角线为从矩阵的左上角至右下角的连线。)【程序】#include void main( ) int flag,i,k; int a33; for (i=0;i3;i+) for (k=0;k3;k+); scanf(%d”,&aik); () ; for (i=0;i3&flag;i+) for(k=i+1;k3&flag;k+) if( () ) () ; if (flag) printf(YESn); else printf(NOn); A.flag=0 B.flag=0 C.flag=1 D
19、.flag=1 A.aki!=0 B.aik=0 C.aik!=0 D.aki=0 A.flag=0 B.flag=0 C.flag=1 D.flag=1题输入一个字符串,将其中的大写字母转换为小写字母后输出。【程序】 #include void main( ) char str80; int k; gets(str); for (k=0;strk!=0;k+); if ( ) ; puts(str); A、A=strkA&strk=A&strk=Astrk=ZA、strk=strk-32 B、strk=strk-a+A C、tolower(strk) D、strk=strk-A+a四、程序阅
20、读题1.45有以下程序2.main() 3. 4.int p8=11,12,13,14,15,16,17,18,i=0,j=0; 5.while(i+7) if(pi%2) j+=pi; 6.printf(%dn,j); 7. 8.请写出程序运行后的输出结果9.7 2有以下程序 10.main() 11. 12.char a7=a00a00; int i,j; 13.i=sizeof(a); j=strlen(a); 14.printf(%d %dn,i,j); 15. 16.请写出程序运行后的输出结果17.有以下程序 18.void f(int *x,int *y) 19. 20.int t
21、; 21.t=*x;*x=*y;*y=t; 22. 23.main() 24. 25.int a8=1,2,3,4,5,6,7,8,i,*p,*q; 26.p=a;q=&a7; 27.while(p28.f(p,q);p+;q-; 29.for(i=0;i8;i+)printf(%d,ai); 30.) 31.写出程序运行后的输出结果32.3 4 58,7,6,5,4,3,2,1,有以下程序 33.main() 34. 35.int a33,*p,i; 36.p=&a00; 37.for(i=0;i9;i+)pi=i; 38.for(i=0;i3;i+)printf(%d,a1i); 39.
22、40.写出程序运行后的输出结果41.1 02 00 0有以下程序 42.main() 43. 44.int a32=0,(*ptr)2,i,j; 45.for(i=0;i2;i+) 46.ptr=a+i;scanf(%d,ptr);ptr+; 47.for(i=0;i3;i+) 48.for(j=0;j2;j+)printf(%2d,aij); 49.printf(n); 50. 51. 52.若运行时输入:1 2 3,写出输出结果53.abcbcc写出以下程序运行后的输出结果54.#include 55.main() 56.char ch=abc,x34;int i; 57.for(i=0;
23、i3;i+)strcpy(xi,ch); 58.for(i=0;i3;i+)printf(%s,&xii); 59.printf(n); 60. 61.6385有如下程序62.main()63. char ch25=“6937”,”8254”,*p2;64.int i,j,s=0;65.for(i=0;i2;i+) pi=chi;66.for(i=0;i0;j+=2)68.s=10*s+pij-0;69.printf(“%dn”,s);70.71.写出该程序的输出结果72.有如下程序段,写出输出的结果73. char str6;str0=”a”;acegikfor (int j=0;j6;j+
24、)for (int k=j+1;k6;k+)strk=strj+2;printf(“%.6s”,str); 五、程序设计题1请用户输入一个含有12个浮点数的一维数组,请分别计算出数组中所有的正数的和以及所有的负数的和。2# include3 main ()4 float data12; /*存放浮点数的一维数组。*/5 float result1=0.0,result2=0.0 / 将要用于分别存放正数和,负数和6 printf(“please inuput 12 float numbers:n”);7 for (int I=0;I12;I+)8 scanf(“f”,&dataI);9 for (I=0;I0.0)11 result1+=dataI;12 else13 result2+=dataI);14 15 printf(“the sum of all the positive number is %.3fn”,result1);16 printf(“then sum of all the negitive numbers is %.3fn”,result2);17 return(1);18 192编写一个程序,输出一个杨辉三角形。# i
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1