桂林电子科技大学信息科技学院09级C程序设计期中测试卷一、选择题(20题,共40分)1.一个C程序总是从开始执行。
A. 程序的第一个语句B. 主函数C. 子程序D. 主程序2.下列标识符中,合法的用户标识符为。
A. P#AdB. 12aC. charD. _int3.下面4组常量,合法的一组C语言常量是。
A. 0B. 10C. 0.01D. 0.10x10 10L "\"" 3E+02E+9 E1 "\' ""\""'a'"a"'t''tt'''''\0''\t' 0124.执行下列程序片段时输出结果是。
unsigned int a=65535;printf(“%d”,a);A)65535 B)-1 C)-32767 D)15.若有定义(说明)int a[3][4]; 则对数组a的元素的引用非法的是。
A. a[2][2*1]B. a[1][3]C. a[4-2][0]D. a[0][4]6.以下不能对二维数组a进行正确初始化的语句是。
A. int a[2][3] ={0};B. int a[][3] ={{1,2},{0}};C. int a[2][3] ={{1,2},{3,4},{5,6}};D. int a[][3] ={1,2,3,4,5,6};7.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的输入方式是。
int a1,a2; char c1,c2;scanf(“%d%d”,&a1,&a2);scanf(“%c%c”,&c1,&c2);A)1020AB↙B)10 20↙AB↙C)10 20 AB↙D)10 20AB↙8.下列表达式中,不满足“当x的值为偶数时值为真,为奇数时值为假”的要求。
A)x%2==0 B)!x%2!=0 C)(x/2*2-x)==0 D)!(x%2)9.对下述程序,是正确的判断。
main ( ){ int x,y;scanf(“%d,%d”,&x,&y);if (x>y)x=y;y=x;elsex++;y++;printf(“%d,%d”,x,y);}A)有语法错误,不能通过编译B)若输入3和4,则输出4和5 C)若输入4和3,则输出3和4 D)若输入4和3,则输出4和5 10.若a、b为int型变量,则执行下列语句后的b值是。
a=15;b=15;do{ b-=a;a++;}while(b--<0);A. 0B. -15C. -16D. -111.若a,b均为int型常量,且a=100,则关于循环语句for(b=100;a!=b;++a,++b) printf("------"); 的正确说法是。
A.循环体只执行一次B.死循环C.循环体一次也不执行D.输出--------12.下述程序的输出结果是。
main ( ){ int x=-1,y=4,k;k=x++<=0 && !(y--<=0);printf(“%d,%d,%d”,k,x,y);}A)0,0,3 B)0,1,2 C)1,0,3D)1,1,213.运行下面程序后,其输出结果是。
main(){ int i=1;while(i<19)if(i++%5!=3) continue;else printf("%d",i);printf("\n",i);}A. 257911131517B. 369121518C. 491419D. 38131719 14.运行下面的程序,其正确输出是。
#include<stdio.h>main(){ int i;for(i=1;i<=6;i++){ if(i%2){ printf("#");continue;}printf("*");}printf("\n");}A. ***###B. ###***C. #*#*#*D. *#*#*#15、下列程序运行后的输出结果是。
#include <stdio.h>#define MAX 10void main(){ int i,sum,a[]={1,2,3,4,5,6,7,8,9,10};sum=1;for(i=0;i<MAX;i++)sum-=a[i];printf(“sum=%d\n”,sum);}A. sum=55B. sum= -54C. sum= -55D. sum=5416、下面的程序运行后,其输出结果是____。
#include<stdio.h>main(){ int y=18,i=0,j,a[8]do{ a[i]=y%2;i++; y=y/2;}while(y>=1);for(j=i-1;j>0;j--)printf("%d",a[j]);}A.1000B.1001C.1010D.1100 17.下列程序运行后的结果是。
#include<stdio.h>main(){ int x=1,y=0,a=0,b=0;switch(x){ case 1:switch(y){ case 0:a++;break;case 1:b++;break;}case 2:a++;b++;break;}printf("a=%d,b=%d\n",a,b);}A. a=2,b=1B. a=1,b=1C. a=1,b=0D. a=2,b=218.下面程序的输出结果是。
main ( ){ int x=9;for (; x>0; x--) {if (x%3==0) {printf(“%d”,--x);continue ;}}}A)741 B)852 C)963 D)875421 19.下面程序的输出结果是。
main ( ){ char c=‟A‟;int k=0;do {switch (c++) {case …A‟ : k++ ; break ;case …B‟ : k-- ;case …C‟ : k+=2 ; break ;case …D‟ : k%=2 ; continue ;case …E‟ : k*=10 ; break ;default : k/=3 ;}k++;} while (c<‟G‟) ;printf (“k=%d”,k) ;}A)k=3 B)k=4 C)k=2 D)k=0 20.运行下面程序后,其输出结果是。
#include <stdio.h>main(){ int i; int n=2;while(++n<20){ i=1;while(++i<n){ if(n%i==0) break;if(i==n-1) printf("%d\t",n);}}printf("\n");}A. 2 5 7 9 13 17 19B. 3 5 7 11 13 17 19C. 2 3 5 7 11 13 17 19D. 3 5 7 11 13 17 20二、填空题(10题,共30分)1.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是2。
if (a<b)if (c<d) x=1;elseif (a<c)if (b<d) x=2;else x=3;else x=6;else x=7;2.下面程序的输出结果是k=0,m=5。
main ( ){ int k=0,m=0,i,j;for (i=0; i<2; i++) {for (j=0; j<3; j++)k++ ;k-=j ;}m = i+j ;printf(“k=%d,m=%d”,k,m) ;}A)k=0,m=3 B)k=0,m=5 C)k=1,m=3 D)k=1,m=5 3.下列程序的输出结果是8。
#include<stdio.h>main(){ int a=24,b=16,c,w;while(b) { w=a%b; a=b; b=w; }c=a;printf("%d\n",c);}4.若运行以下程序时,输入2473↙,则程序的运行结果是668977。
main ( ){ int c;while ((c=getchar( )) ! =‟\n‟)switch (c-…2‟) {case 0 :case 1 : putchar (c+4) ;case 2 : putchar (c+4) ; break ;case 3 : putchar (c+3) ;default : putchar (c+2) ; break ;}printf(“\n”);}5.写出下面程序运行的结果8。
main ( ){ int a,b;for (a=1,b=1 ; a<=100 ; a++) {if (b>=20) break;if (b%3==1) { b+=3 ; continue ; }b-=5;}printf(“%d\n”,a);}6、阅读以下程序,写出程序的运行结果。
#include <stdio.h> 1 0 0 0 0main() 0 1 0 0 0{ int a[6][6],i,j; 0 0 1 0 0for(i=1;i<6;i++) 0 0 0 1 0for(j=1;j<6;j++) a[i][j]=(i/j)*(j/i); 0 0 0 0 1for(i=1;i<6;i++){ for(j=1;j<6;j++) printf("%2d",a[i][j]);printf("\n\n");}}7、运行下面程序,其输出结果是__abcdefgabcd____。
#include <stdio.h>main(){ static char s[30]="abcdefg";static char t[ ]="abcd";int i=0,j=0;while(s[i]!='\0')i++;while(t[j]!='\0'){s[i+j]=t[j];j++;}s[i+j]='\0';printf("%s\n",s);}8. 字符串s的长度为14。