C语言考试题2005A

  • 格式:doc
  • 大小:72.00 KB
  • 文档页数:6

课程: C语言程序设计(A卷) 班号: 学号: 姓名: 注:①考试时间为120分钟,必须在30分钟后方可交卷。 ②答题开始前,班长需向监考人员报告应到人数、是否有缺考、缺考人姓名、缺考原因等。 ③答题完毕后,将答题纸交卷,试卷可自行带走。

一、单项选择题(每题2分,共30分) 1.以下选项中,均符合C常量形式的是 (1) 。 A) e5, 0123 B) 0xffce, „\n‟ C) 02468, 0.1e-5 D) 102, 123 2.以下选项中,均符合C变量命名规则的是 (2) 。 A) x_1, 1_a B) π, α C) a.c, N D) China, _1A 3.假定变量a=2, b=3, c=1, 则表达式:c==b>a || a+1==b--, a+b 的值是 (3) 。 A) 0 B) 1 C) 4 D) 5 4.假定 int a=2, b=3, c=0, 表达式: (a==b>1)+(a&&!c)+b/a*2.0 的值是 (4) . A) 2.0 B) 3.0 C) 4.0 D) 5.0 5.以下表达式中,不能正确表达两个非0变量a和b的绝对值相等,但互为异号的是 (5) . A) a==-b && (a>0 || b>0) B) a*b<0 && (a>0 || b>0) C) !abs(a+b) && (a>0 || b>0) D) !(a+b) && a*b<0 6.以下各程序语句中,有语法错误的是 (6) . A) int x=1,y=2,z,a[2*‟n‟]; B) z=x+++y; C) z=x+++y--; D) z=(x+1)++-y; 7.假定a是3行4列的矩阵(int a[3][4]),则对于以下求矩阵元素之和的程序段中, 不正确的是 (7) . A) s=0; B) s=0; for(i=0;i<3;i++) for(j=0;j<4;j++) for(j=0;j<4;j++) s+=a[i][j]; for(i=0;i<3;i++) s+=a[i][j]; C) s=0; D) s=0; for(i=0;i<4;i++) for(i=0;i<3;i++) for(j=0;j<3;j++) s+=a[j][i]; for(j=0;j<4;j++) s+=a[j][i]; 8.假定a是10个元素的一维数组,若要将后9个数往前移一个位置挤掉最前面的一个数,则 正确的操作是 (8) . A) for(j=1; j<10; j++) a[j-1]=a[j]; B) for(j=8; j>0; j--) a[j]=a[j+1]; C) B) for(j=9; j>0; j--) a[j-1]=a[j]; D) for(j=0; j<10; j++) a[j]=a[j+1]; 9.以下各循环语句中,不是无限循环的是 (9) . A) for(k=-1; -10C) for( k=1; k=10; k++); D) for( k=1; k>0; k++) ; 10.字符串”ab’1’\\\12803”的长度是 (10) . A) 8 B) 9 C) 10 D) 13 11.假定有如下求最大值和最小值的程序: main() { int i,a, max=-32768, min=32767; for ( i=0; i<10; i++) { scanf (“%d”, &a ); if (a < min ) min=a; else if ( a > max ) max=a; } printf (“\n max,min= %d,%d”, max, min); } 则以下各结论中正确的是 (11) 。 A) 程序完全正确 B) 当输入递增数据时结果不正确 C) 当输入递减数据时结果不正确 D) 输入任何数据结果都不正确 12.若希望当字符变量a中为数字字符时,表达式的值为“真”,为非数字字符时,表达式的值为“假”。则以下不能满足要求的表达式是 (12) 。 A) a>=0 && a<=9 B) a>=‟0‟ && a<=‟9‟ C) a>=48+0 && a<= 48+9 D) a-„0‟>=0 && a-„0‟<=9 13.上机运行以下程序会出现一个错误,这个错误的性质是 (13) . main() { int i,j,a[]={3,2,1},b[]={6,4,2,0}; float s=0; for(i=0;i<3;i++) { j=b[a[i]]; s+=1.0/j; } printf(“\n %f”,s); } A) 数组说明语法错 B)数组元素引用语法错 C)分母为0运算错 D)数组元素引用下标超界错 14.以下求矩阵a中主对角元素之和的各程序段中,不正确的是 (14) 。 A) int a[3][3]={1,2,3,4,5,6,7,8,9}, s=0, *p=a; for ( p=a; pB) int a[3][3]={1,2,3,4,5,6,7,8,9}, s=0, i; for ( i=0; i<3; i++ ) s+=a[i][i]; C) int a[3][3]={1,2,3,4,5,6,7,8,9}, s=0, *p=a, i; for ( i=0; i<3; i++ ) s+=p[i][i]; D) int a[3][3]={1,2,3,4,5,6,7,8,9}, s=0, *p=a; for ( p=a; p15.在以下表达式中,与 !(a+b) && a*b不等价的是 (15) 。 A) a+b==0 && a*b!=0 B) a<0 || b<0 && a*b>0 C) a!=0 && b!=0 && !(a+b) D) !(a+b) && a

二、程序阅读题(每题4分,共40分) 16.以下程序的运行结果是 (16) 。 main() { int i, n=0; for( i=1; i<20; i++) if ( i%3==0&&i%5) n++; printf (“\n %d”, n); } A) 1 B) 5 C) 6 D) 7 17.以下程序的运行结果是 (17) 。 main() { int n=2345; while(n) { printf("%d",n%10); n/=10;} } A) 5432 B) 2345 C) 4320 D) 3450 18.以下程序的运行结果是 (18) 。 void f(char *s) main() { char *p=s; { char *a="abCD12"; for (; *s; s++) f(a); if (*s>='A' && *s<='Z')*p++=*s; printf ("\n%s",a); *p=0; } } A) abCD12 B) CD C) ab12 D) CD12 19.以下程序的运行结果是 (19) 。 main() f ( char *c ) { char *a[]=”FORTRAN77”; { for ( ; *c; c++) f ( a+1 ); printf (“%s”,a ); if (*c>=‟A‟ && *c<=‟Z‟) *c=*c+32; } } A)Fortran77 B) fortran77 C) FORTRAN77 D) fORTRAN77 20.以下程序的运行结果是 (20) 。 main() { char a[]=”abcXYZ789”; int j,k=0; for ( j=0; a[j]; j++) if ( a[j] >a[k] ) k=j; j=a[0]; a[0]=a[k]; a[k]=j; printf ( “%s”, a); } A) ZbcXYa789 B) cbaXYZ789 C) 7bcXYZa89 D) 9bcXYZ78a 21.以下程序的运行结果是 (21) 。 #include "stdio.h" main() { int i; char a[]="ab12"; for ( i=0; a[i]; i++) switch ( a[i] ) { case 1 : printf ( "%d", a[i] ); break; case 2 : printf ( "%d", a[i] ); break; default : if ( a[i]>='a' && a[i]<='z' ) putchar ( a[i] ); else printf ( "%d",a[i]+1 ); } } A) ab23 B) ab12 C) ab4950 D) ab5051 22.以下程序的运行结果是 (22) 。 int a=3, b=5; f ( int a ) { a++; b+=a;} main() { int a=6; f (a-1); printf("\n %d,%d",a,b); } A) 3,8 B) 3,11 C) 6,8 D) 6,11 23.以下程序的运行结果是 (23) 。 main() int f(int m) { int i,s=0; { int i; for(i=3;i<8;i++) s+=f(i); for(i=2;iprintf("\n%d",s); if(!(m%i)) return 0; } return 1; } A) 3 B) 5 C) 15 D) 25 24.以下程序的运行结果是 (24) 。 main() { int i,b,k=0; for (i=1; i<=5; i++) { b=i%2; while (b––>=0) k++; } printf (“%d,%d”,k,b); } A) 3,–1 B) 8,–1 C) 3,0 D)8,–2 25.以下程序的运行结果是 (25) 。 #define F x+y main() { int x=4, y=5, z; if(x++printf(“\n %d”,z); } A) 5 B) 7 C) 15 D) 20

三、程序填充题(每空3分,共30分) 选择适当的内容填在以下各程序的下划线处,以使程序完整。