11.以下叙述中错误的是(
D )。
A) C语言源程序经编译后生成后缀为.obj的目标程序
B) C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件 C) 用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中 D) C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
12.以下选项中合法的标识符是( A) 1 2 B) 12
B )。
C) 2-1 D) 12
13.设有定义:int x=3;,以下表达式中,值不为12的是( A) B) C)
D )。
D)
14.下列程序的输出结果是(
C )。
main()
{ double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf(\,d*y);}
A) 3 B) 3.2 C) 0 D) 3.07
15.有以下程序:
#include
main(){char a,b,c,d; a=getchar();b=getchar(); scanf(\,&c,&d);
printf(\,a,b,c,d); }
当执行程序时,按下列方式输入数据(从第1列开始,
234
则输出结果是( C )。
A) 1234 B) 12
34
C) 1
23
D) 1
234
16.下列程序的运行结果是(
C)。
#include \main()
{ int x=-9,y=5,z=7;
if(x if(y<0)z=0; else z+=1; printf(\,z);} A) 6 B) 7 C) 8 D) 9 17.以下选项中不属于C语言的类型的是( B )。 A) unsigned long int B) long short C) unsigned int D) signed short int 18.有以下定义语句,编译时会出现编译错误的是( A) char a=?'a'?; B) char a=?'\\n'?; C) char a=?'aa'?; D) char a=?'\\x2d'?; 19.要求以下程序的功能是计算:s=1+1/2+1/3+…+1/100。 C )。 main(){ int n; float s; s=1.0; for(n=100;n>1;n--) s=s+1/n; printf(\,s); } 程序运行后输出结果错误,导致错误结果的程序行是(C )。 A) s=1.0; B) for(n=100; n>1;n--) C) s=s +1/n; D) printf(\ 4f\\n \,s 20.有如下嵌套的if语句: if(a if(b 以下选项中与上述if语句等价的语句是( C )。 A) k=(a B) k=(ac)?b:c); C) k=(a 21.在下列选项中,没有构成死循环的是( A) int i=100; D )。 while(1) { i=i0+1; if(i>100)break; } B) for(;;); C) int k=10000; do{k++;}while(k>10000); D) int s=36; while(s)--s; 22.有以下程序段: int n,t=1,s=0; scanf(\%d\,&n); do {s=s+t;t=t-2; }while(t!=n); 为使程序段不陷入死循环,从键盘键入的数据应该是( D )。 A) 任意正奇数 B) 任意负偶数 C) 任意正偶数 D) 任意负奇数 23.若运行以下程序时,从键盘输入 ADescriptor 是( D )。 #include { char c; int v0=1,v1=0,v2=0; do{ switch(c=getchar()) { case ?'a'?:case ?'A'?: case ?'e'?:case ?'E'?: case ?'i'?:case ?'I'?: case ?'o'?:case ?'O'?: case ?'u'?:case ?'U'?:v1+=1; default:v0+=1;v2+=1; } }while(c!=?'\\n'?); printf(\=%d,v1=%d,v2=%d\\n\,v0,v1,v2);} A) v0=7,v1=4,v2=7 B) v0=8,v1=4,v2=8 C) v0=11,v1=4,v2=11 D) v0=13,v1=4,v2=12 24.数字字符0的ASCII值为48,若有以下程序: main(){char a=?'1'?,b=?'2'?; printf(\,\,b++); printf(\,b-a); } 程序运行后的输出结果是( C )。 A) 3,2 B) 50,2 C) 2,2 D) 2,50 25.有以下程序: #include void f(int *p,int *q); main() { int m=1,n=2,*r=&m; f(r,&n);printf(\,%d\,m,n); } void f(int *p,int *q) {p=p+1;*q=*q+1;} 程序运行后的输出结果是( A )。 A) 1,3 B) 2,3 C) 1,4 D) 1,2 26.有以下程序: #include void f(int *q){ int i=0; for(;i<5;i++) (*q)++; } main(){ int a[5]={5,4,3,2,1},i; f(a); for(i=0;i<5;i++) printf(\,\,a[i]); } 程序运行后的结果是( D )。 A) 6,4,3,2,1 B) 6,5,4,3,2 C) 5,4,3,2,1 D) 10,4,3,2,1 27.有以下程序: #include main(){int a[4]={1,2,3,4},s; s=f(a,4); printf(\,s); } int f(int t[],int n){if(n>0) return t[n-1]+f(t,n-1); else return 0; } 程序运行后的输出结果是( B)。 A) 4 B) 10 C) 14 D) 6 28.阅读下面程序段,则执行后的结果为( C )。 #include \main() { int m=4,n=2,k; k=fun(m,n); printf(\,k);} fun(int m,int n) { return(m*m*m-n*n*n);} A) 64 B) 8 C) 56 D) 0 29.有以下程序: #include main(){ int s[12]={1,2,3,4,5,6,7,8,9,10,11,12},c[5]={0},i; for(i=0;i<12;i++) c[s[i]]++; for(i=1;i<5;i++) printf(\,c[i]); printf(\; } 程序的运行结果是( D )。 A) 1 2 3 4 B) 5 6 7 8 C) 9 10 11 12 D) 1 1 1 1 30.以下程序的输出结果是( A )。 void change(int k[]){k[0]=k[5];} main(){int x[10]={1,2,3,4,5,6,7,8,9,10},n=0; while(n<=4){change(&x[n]);n++;} for(n=0;n<5;n++)printf(\,x[n]); printf(\; } A) 678910 B) 13579 C) 12345 D) 62345 31.若有以下定义: int x[10],*pt=x; 则对x数组元素的正确引用是( B )。 A) *&x[10] B) *(x+3) C) *(pt+10) D) pt+3 32.若有定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的是(A) p=s; B) p=k; C) p=s[0]; D) k=s; 33.以下程序运行后的输出结果是( C )。 #include void f(char p[][10],int n) C )。