c程序测试题(答案)(共3页)
--本页仅作为文档封面,使用时请直接删除即可-- --内页可以根据需求调整合适字体及大小--
一、选择题
1. 以下叙述正确的是(A)。
A. C语言允许直接访问物理地址,可以直接对硬件进行操作 B. C语言程序不必编译,即可在计算机上运行
C. C语言不允许直接访问物理地址,不可直接对硬件进行操
作
D. C语言程序只需编译,不需要连接即可在计算机上运行
2. 在一个C程序中(B)。
A. main函数出现在所有函数之前。C程序不必都有main函
数
B. main函数可以在任何地方出现。一个C程序必须有且仅有
一个main函数
C. main函数必须出现在所有函数之后。一个C程序只能有一
个main函数
D. main函数出现在固定位置。一个C程序可以有多个main
函数
3. 下列叙述正确的是(B)。
A. C语言中既有逻辑类型也有构造类型数据 B. C语言中没有逻辑类型,但有构造类型 C. C语言中有逻辑类型,但没有构造类型 E. C语言中既没有逻辑类型也没有构造类型
4. 下列关于C语言用户标识符的叙述中正确的是(B)。 A. 用户标识符中可以出现下划线和中划线(减号) B. 用户标识符中不可以出现中划线,但可以出现下划线 C. 用户标识符中可以出现下划线,但不可以放在标识符开头 D. 用户标识符中可以出现下划线和数字,他们都可以放在标
识符开头
5. 下列转义字符中,错误的是(A)。 A. ‘\\0xa5’ B. ‘\\031’ C. ‘\\b’ D. ‘ \\” ’
6. 字符串 “\\\\\\\\1234\\\\\\\\\\n” 在内存中占用的字节数是(C)。 A. 14 B. 9 C. 10 D. 11
7. 已知梯形的上底为a, 下底为b,高为h,用C语言写的正确的面积公式是(B)。
A. 1/2*(a+b)*h B. 2*(a+b)*h C. (a+b)h D. 2*a+b*h
8. 与k=n++完全等价的表达式是(D)。
A. n=n+1, k=n B. k+=n+1 C. K=++n D. k=n, n=n+1
9. 已定义char s1, s2;, 下面正确的语句是(C)。 A. scanf(“%s%c”, s1,s2); B. scanf(“%s%c”, s1, &s2); C. scanf(“%c%c”, &s1,&s2); D. scanf(“%c%c”, s1,s2);
10. 为下面的程序输入数据,使得i=10, k=’a’, j=15, 正确的键盘输入方法是(D)。
A. 10,a,15<回车> B. 10<回车>a<回车>15<回车> C. 10’a’15<回车> D. 10a15<回车>
11. 已知float x=, y=;, 根据下面的输出结果,正确的程序段是(B)。 x=,y= y+x=,y-x=
A. printf(“x=%,y=%”,x,y); printf(\"y+x=%,y-x=%\\n\B. printf(“x=%,y=%\\n”,x,y); printf(\"y+x=%,y-x=%\\n\C. printf(“x=%,y=%\\n”,x,y); printf(\"y+x=%,y-x=%\\n\D. printf(“x=%f,y=%f”,x,y); printf(\"y+x=%f,y-x=%f\\n\
12. 下列表达式中,值为0的表达式是(D)。 A. 3 !=0 B. 3 !=3>4 C. 3>4==0 D. 6>5>4
13. 下列表达式中,结果为1的表达式是(A)。 A. !0==1 B. !6 C. !2>=3 D. !3!=0
14. 设int a=3; 则表达式a<1&&--a>1的运算结果和a的值分别是(B)。
A. 0和2 B. 0和3 C. 1和2 D. 1和3
15. 下面程序的运行结果是(B)。 main(){ int x=3;
do{printf(\"%3d\}
A. 死循环 B. 1 -2 C. 10 D. 1
16. 下面程序的运行结果是(D)。 main(){int i,j,k,sum;
for(i=2;i<7;i++) {sum=1;
for(j=i;j<7;j++) sum=sum+j;
}
printf(“%d”,sum); }
A. 48 B. 49 C. 1 D. 7
17. 不能把字符串“Hello!”赋给数组a的语句是(B)。 A. char a[10]={‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘!’}; B. char a[10]; a=“Hello!”; C. char a[10]; strcpy(a, “Hello!”); D. char a[10]= “Hello!”;
二、完善程序或写出程序运行结果
1. 根据以下给定公式计算e的值(取前n项) printf(“f=%d\\n”, f); }
5. 以下程序的输出结果是 #& 。 main(){ int a=2, b=7, c=5;
switch(a>0){
case 1: switch(b<0)
{ case 1: printf(“@”); break;
case 2: printf(“!”); break; }
case 0: switch(c==5)
{ case 0: printf(“*”); break; case 1: printf(“#”); break; default: printf(“#”); break; }
default: printf(“&”); } printf(“\\n”); }
6. 以下程序的输出结果是 12 。 main(){ int a[10],i,k=0;
for(i=0; i<10; i++) a[i]=i; for(i=1; i<4; i++) k+=a[i]+i; printf(“%d\\n”, k); }
e11111....... 1!2!3!n!main(){ double sum=, x=, y=; int n;
scanf(\"%d\&n ); while(n){
y=x*y ;
sum=sum+ y ; x++; --n; }
printf(\"sum=%f\}
2. 用10元人民币兑换角币(1角、2角、5角),有多少种换法?
main(){ int i, j, k, m=0;
for(i=0; i<= 20 ; i++) for(j=0; j<=(100- 5*i )/2; j++) for(k=0; k<=100-5*i-2*j; k++) if(i*5+j*2+k==100) m++; printf(”m=%d ”,m); }
3. 1988年世界人口数为50亿,按年增长率11‰计算,哪一年开始世界人口数突破100亿?
main(){ int year=1988;
float r=, no=5E9, n; n=no;
do{n= n * (1+r); year++;} while ( n <2*no); printf(“year=%d\\npupulation=%f ”, year, n); }
4. 下面程序的功能是求矩阵B(不包括外围元素)的元素之积。
main(){ int i, j, f=1;
int b[][4]={1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7}; for(i=0; i<4; i++){
for(j=0; j<4; j++) printf(“%4d”, b[i][j]); printf(“\\n”); }
for(i=1; i<3 ; i++) for(j=1; j<3; j++) f=f* b[i][j] ;
三、计算表达式的值
若有变量定义char a=’a’; int i=3, j=5, b; float x=; double y=, z; 计算下面表达式的值。 1. a+i-j+x/y: 3. y+=i-=j*=++x: 5. a=a+i, a+j: 105
2. (x+y)+i++: 4. b=a+=j%i: 99 6. a=(a+i, a+j) : 102
7. y=(x=2, x+1, x+2) : 8. i-=j*=x+y: -34 9. (i++)*(--j) : 12 11. (int)x/(int)y+y: 13. –j%i+j: 3
2 3
10. z=(i++)*(j++): 12. (float)i/(++j) : 14. (int)y%i%(int)(x+y) :
四、编程
下面是一个5阶螺旋方阵,试编程打印出此形式的n(n<10)阶的方阵(顺时针方向旋进)
1 2 3 16 17 18 15 24 25 14 23 22 13
12
11
4 5 19 6 20 7 21 8 10
9
4
因篇幅问题不能全部显示,请点此查看更多更全内容