2012-2013 学年第 2 学期 课号 I04BT014
课程名称 C语言程序设计 (A卷;、闭卷) 适用班级(或年级、专业) 12级、全院
考试时间 120 分钟 班级 学号 姓名
| 题 号 | 一 | 二 | 三 | 四 | 五 | 六 | 七 | 八 | 九 | 十 | 成绩 |
| 满 分 | 40 | 30 | 30 | 100 | |||||||
| 得 分 | |||||||||||
| 评卷人 |
1 一个C语言程序是从 B 开始执行的。
A 程序中第一个函数 B 名为main的函数
C 包含文件(头文件)的第一个函数 D 程序中的第一个语句
2 假设在程序中a,b,c 均被定义成整型,并且已赋大于1的值,则下列能正确表示代式
A 1/a*b*c B 1/(a*b*c) C 1/a/b/(float)c D 1.0/a/b/c
3 已知int y,a,i=1;,则语句printf("%d,%d",-i++,(y=a=3.6*3));的输出结果为 A 。A -1,10 B -2,1.8 C 0,3 D 1,18
4 以下程序运行后的输出结果是_B__。
main()
{ unsigned short a=65536; int b;
printf("%d\\n",b=a);}
A 65536 B 0 C 1 D -1
5 设a、b和c都是int型变量,且a=3,b=0,c=5,则以下值为0的表达式是_C__。
A 'a'&&'b' B a&&b||c C a&&b&&c D a||b&&c
6 以下程序运行后的输出结果是_D__。
main()
{ int a=1,b=2,c=3;
if(bif(b<0) c=0; else c++; printf("%d\\n",c); } A 0 B 1 C 2 D 3 7 以下程序运行后的输出结果是_A__。 main() { int a=0,b=0,c=0,d=0; if(a=1) b=1,c=2; else d=3; printf("%d,%d,%d,%d\\n",a,b,c,d); } A 1,1,2,0 B 0,0,0,3 C 0,1,2,0 D 编译有错 8 以下程序的执行结果是_B__。 main() { int x=23;do{ printf("%d",x--); }while(!x); } A 321 B 23 C 不输出任何内容 D 陷入死循环 9 有以下程序段,输出结果是_C_。 int x=3; do { printf("%d ",x-=2); }while(!(--x)); A 1 B 3 0 C 1 -2 D 死循环 10 以下程序的输出结果是_A_。 main() { int a=0,i;for(i=1;i<5;i++){ switch(i) { case 0: case 3: a+=2;case 1: case 2: a+=3;default:a+=5; }}printf("%d\\n",a); } A 31 B 13 C 10 D 20 11 以下程序执行后的输出结果是_C__。 main() { int x=0,y=0; while(y<=5) { if(x>=10) break; if(x%2==0) { x+=5; continue; } x-=3; y++; } printf("%d,%d",x-1,y); } A 6,6 B 7,6 C 10,3 D 7,3 10 以下程序运行后的输出结果是 。 #include void main() { int x=13,y=19,z=0; switch (x/8) { case 1: z=z+1; switch (y/21) { default : z=z+1; case 0: z=z+1;break; } case 2: z=z+1;break; } printf("%d\\n",z); } A 1 B 2 C 3 D 4 11 以下程序的输出结果是 。 #include void main(){ int i=0,a=0; while(i<10){ for(; ;) if((i%5)==0) break; else i--; i+=11; a+=i; } printf("%d\\n",a); } A 11 B 21 C 32 D 33 12 以下程序运行后的输出结果是 。 #include void main() { int a, b; for(a=1,b=1; a<=20; a=a+1) { if(b>=3) break; if(b%3==1) { b=b+3; continue; } } printf("%d\\n",a); } A 1 B 2 C 10 D 20 13 以下程序执行后的输出结果是 。 #include void main() { int x=1,y=1; while(y<=3) { if(x>=5) break; if(x%2==0){ x+=2; continue; } x-=3; y++; } printf("%d,%d",x,y); } A 6,2 B 6,6 C 7,2 D 7,3 14 以下程序的输出结果是 。 #include void main() { int i,k,a[5],p[3]; k=5; for(i=0;i<5;i++) a[i]=i; for(i=0;i<3;i++) p[i]=a[i*i]; for(i=0;i<3;i++) k+=p[i]*2; printf("%d\\n",k); } A 13 B 14 C 15 D 16 15 若运行以下程序时输入:1 3 5<回车>,则输出结果是 。 #include void main() { int x[2][2]={0},i; for(i=0;i<2;i++) scanf("%d",x[i]); printf("%3d%3d%3d\\n",x[0][0],x[0][1],x[1][0]); } A 1 0 0 B 2 0 0 C 1 0 3 D 1 0 5 16 以下程序运行后的输出结果是 。 #include void reverse(int a[], int n) { int i, t; for(i=0; i a[i]=a[n-1-i]; a[n-1-i]=t; } } void main() { int b[6]={1,2,3,4,5,6}, i, s=0 ; reverse (b, 4); for(i=4; i<6; i++) s+=b[i]; printf("%d\\n",s); } A 10 B 11 C 12 D 13 17 以下程序运行后的输出结果是 。 #include void main() { char a[2][4]; strcpy(a,"you"); strcpy(a[1],"me"); a[0][3]='&'; printf("%s\\n",a); } A you B you& C me D you&me 18 以下程序运行后的输出结果是 。 #include long fun(int n) { long s; if(n==1||n==2) s=2; else s=n-fun(n-1); return s; } void main() { printf("%ld\\n",fun(3)); } A 1 B 2 C 3 D 4 19 以下程序运行后的输出结果是 。 #include void main() { int i, x[3][3]={9,8,7,6,5,4,3,2,1}, *p=&x[1][1]; for(i=0; i<4; i+=2) printf("%d ", p[i]); } A 5 1 B 5 2 C 5 3 D 9 7 20说明语句int *(*p)();的含义为 。 A. p是一个指向int型数组的指针 B. p是指针变量,它构成了指针数组 C. p是一个指向函数的指针,该函数的返回值是一个整型 D. p是一个指向函数的指针,该函数的返回值是一个指向整型的指针 二 填空题(每题3分,共30分) 1 设x为int型变量,请写出描述“x是偶数”的表达式是 。 2 以下程序的输出结果是 。 #include void main() { char c; c=0362; printf("%d\n",c); } 3 若float x;以下程序段的输出结果是 。 x=5.1; printf("%f\\n",(int)(x*1000+0.5)/(float)1000); 4 下面的程序运行时从键盘上输入9876543210<回车>,程序的输出结果是 。 #include void main() { int a; float b,c; scanf("%2d%2f%2f",&a,&b,&c); printf("a=%d,b=%.1f,c=%.0f",a,b,c); } 5 若输入字符串:abcde<回车>,则以下while循环体将执行 次。 while((ch=getchar())=='e') printf("*"); 6 下列程序的输出结果是 。 #include void main() { int s,i; for(s=0,i=1;i<3;i++,s+=i); printf("%d\\n",s); } 7 若int类型变量占两个字节,定义int x[10]={0,2,4};,则数组x在内存中所占的字节数是 。 8 以下程序的输出结果是 。 #include void main() { char ch[]="abc",x[3][4]; int i; for(i=0;i<3;i++) strcpy(x[i],ch); for(i=0;i<3;i++) printf("%s",&x[i][i]); printf("\n"); } 9 运行下面程序,从键盘输入四个字符xyz#,其输出是 。 #include void recursion() { char c; c=getchar(); putchar(c); if(c!='#') recursion(); putchar(c); } void main() { void recursion(); recursion(); } 10 以下程序的输出结果是 。 #include void swap(int *a, int *b) { int *t ; t=a; a=b; b=t; } void main() { int i=2, j=5, *p=&i, *q=&j; swap(p,q); printf("%d %d\\n", *p,*q) } 三 程序填空题(每空3分,共30分) 1 以下程序的功能是从键盘输入若干个学生的成绩,统计最高成绩和最低成绩,当输入为负数时,结束输入。请填空使程序完整。 #include void main() { float x,max,min; scanf("%f",&x); max=min= 【1】 ; do{ if(x>max) max=x; if(x } while( 【3】 ); printf("%f,%f",max,min); } 2 以下程序,数组a中存放一个递增数列。输入一个整数,并将它插入到数组a中,使之仍为一个递增数列。请填空。 #include void main() { int a[20]={1,10,20,30,40,50,60,70,80,90},x,i,p; scanf("%d",&x); for(i=0,p=10;i<10;i++) if(x for(i=9;i>=p;i--) a[i+1]=a[i]; 【5】 ; for(i=0;i<=10;i++) printf("%5d\\n",a[i]); printf("\\n"); } 3 以下程序的功能是:将任意十进制正整数转换成二进制数,请填空使程序完整。 #include"stdio.h" int dtob(int n,int *p) { int m,i=0; do { m=n%2; 【6】 ; n=n/2; i++; }while(n!=0); return i; } void main() { int n,j,a[20]; printf("Input the umber: \\n"); scanf("%d",&n); j=dtob(n,a); for(;j>0;j--) printf("%d 【7】 ); } 4 下面程序的功能是将一个正整数字符串转换为一个整数,例如:“1234”转换为1234,请填空。 #include int chnum(char *p) { int num=0,k,len,j ; len = strlen(p) ; for ( ; 【8】; p++) { k=【9】; j=(--len) ; while (【10】) k=k*10 ; num = num + k ; } return (num); } void main() { int a; char p[10]; gets(p); a=chnum(p); printf(“%d\\n”,a); } 2011-2012学年第2学期C语言期末考试试卷(A卷)答题纸 班级学号 姓名 成绩 一 单项选择题(每题2分,共40分) 二 填空题(每题3分,共30分) 【1】x 【2】min=x 【3】x>=0 【4】break 【5】a[p]=x 或者a[i+1]=x 【6】*(p+i)=m 【7】a[j-1] 【8】*P 【9】*p -‘0’ 【10】j-- 出卷人:桂林电子科技大学信息科技学院 吕元长下载本文
A D A C C
1-5 6-10B B C D D B D A C D
11-15 16-20A B A C C
三 程序填空题(每空3分,共30分)1 x%2==0 6 5 2 -14 7 20 3 5.169000 8 abcbcc 4 a=98,b=76.0,c=54 9 xyz#zyx 5 0 10 2 5