一、选择题(蓝色加粗为正确选项)
在C语言中,合法的字符常量是()。
A. '字'
B. "A"
C. "ABC"
D. '\x41'
在C语言中,用户能使用的合法标识符是()。
A. 姓名
B. _xyz
C. 5i
D. for
在C语言中,不合法的实型常量是()。
A. -0.123
B. -.123
C. -1.23e-1
D. -123e-3.0
C语言的下列运算符中,优先级最高的运算符是()。
A. ++
B. +=
C. ||
D. !=
设有说明语句int k,i=5,j=10;,则表达式k=(++i)*(j--)的值是()。
A. 50
B. 60
C. 45
D. 55
设有说明语句int i,j;,则表达式i>=j||i A. 视i、j的具体值而定 B. FALSE 页脚内容1 C. TRUE D. 1 已知'A'的ASCII码的十进制值为65,'0'的ASCII码的十进制值为48,则以下程序运行结果是()。main() { char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); } A. 67,D B. C,D C. C,68 D. 67,68 设有语句int x=2,y=3;,则表达式x=(y==3)的值是()。 A. 0 B. 1 C. 2 D. 3 以下程序的运行结果是()。 main() { unsigned a = 0x3ef, b; b = a << 2; 页脚内容2 printf("%x,%x\n", a, b); } A. 3ef,fb B. 3ef,fbc C. fbc,3ef D. fbc,fbc 下列语句中,符合C语言语法的赋值语句是()。 A. a=7+b+c=a+7; B. a=7+b++=a+7; C. a=7+b,b++,a+7; D. a=7=b,c=a+7; 为表示x≥y≥z,须用的C语言表达式为()。 A. (x>=y)&&(y>=z) B. (x>=y)AND(y>=x) C. x>=y>=z D. (x>=y)&(y>=z) 设int a,b;,用语句scanf('%d%d",&b); 输入a、b值时,不能作为输入数据分隔符的是()。 A. 空格 B. , C. 回车 D. [Tab] 以下程序运行时,若从键盘输入5,则输出结果是()。 main() { int a; 页脚内容3 scanf("%d",&a); if(a++>5) printf("%d\n", a); else printf("%d\n",a--); } A. 7 B. 4 C. 5 D. 6 以下程序的运行结果是()。 main() { int a, b, c; a = b = c = 1; if ( a++ || ++b ) c++; printf("%d, %d, %d\n", a, b, c); } A. 2, 1, 2 B. 1, 2, 1 C. 2, 2, 2 D. 2, 2, 1 以下程序的运行结果是()。 main() 页脚内容4 { int i=3,j=2,k; k=i+j; { int k=8; if(i==3) printf("%2d",k); else printf("%2d",j); } printf("%2d%2d\n",i,k); } A. 8 3 5 B. 8 3 8 C. 3 8 3 D. 5 8 3 有以下程序: main() { int c; while((c=getchar())!= '\n') { switch(c-'2') 页脚内容5 { 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"); } 当输入:247<回车>,程序的输出结果是()。 A. 689 B. 6689 C. 66778 D. 66887 以下程序的运行结果是()。 main() { int a=1,b=0; switch(a) { 页脚内容6 case 1: switch(b) { case 0: printf("0000\n"); case 1: printf("1111\n");break; } case 2:printf("2222\n");break; } } A. 0000 1111 B. 0000 1111 2222 C. 0000 2222 D. 1111 页脚内容7 2222 以下程序的运行结果是()。 void main() { int a=1; switch(a) { case 1: printf("aaaa\n"); case 2: printf("bbbb\n"); break; default: printf("cccc\n"); } } A. aaaa B. aaaa bbbb cccc C. aaaa 页脚内容8 bbbb D. aaaa cccc 以下程序运行后,a的值是()。 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; } } A. 101 B. 100 C. 8 D. 7 以下程序段的运行结果是()。 main() 页脚内容9 { int i,j; i=10; j=20; for(;j>=0;j-=20) { if(i=j) printf("Good! "); else printf("Not good!"); } } A. Good!Good! B. Not good! C. Good! D. Good! Not good! 以下程序的运行结果是()。 main() { int a,b,c,n=13; printf(" A B C\n"); for(a=1;a<=n;a++) 页脚内容10 for(b=1;b<=n;b++) for(c=b;c<=n;c++) if(a*a==b*b+c*c) printf("%3d%3d%3d\n",a,b,c); } A. A B C 5 3 4 10 6 8 13 5 12 B. A B C 3 5 4 6 10 8 5 13 12 C. A B C 4 5 3 8 10 6 12 13 5 页脚内容11 D. A B C 5 4 3 10 8 6 13 12 5 以下程序段的运行结果是()。 int x=3; do{ printf("%3d, ", x-=2 ); }while(!(--x)); A. 1 B. 30 C. 死循环 D. 1, -2 设E为表达式,以下与do …while(E);不等价的语句是()。 A. do … while(!E==0); B. do … while(E>0||E<0); C. do … while(E==0); D. do … while(E!=0); 以下程序的运行结果是()。 页脚内容12 main() { int i,s; i=0; s=1; do{ s/=s+1; i++; }while(i<=10); printf("%2d%2d\n",i,s); } A. 10 2 B. 11 2 C. 10 0 D. 11 0 下列程序段中,非死循环的是()。 A. int i=100; while(1) { i=i%100+1; if(i>=100) break; 页脚内容13 } B. int k=0; do{ ++k; }while(k>=0); C. int s=10; while(++s%2+s%2) s++; D. for(;;) 循环语句循环体中执行continue语句,其作用是()。 A. 立即终止程序运行 B. 继续执行continue语句之后的循环体各语句 C. 结束本次循环 D. 结束本次循环,跳出循环 下列do...while循环的循环次数是()。 int i=5; do{ 页脚内容14 printf("%d\n",i--); i--; }while(i!=0) A. 0 B. 2 C. 5 D. 死循环 设已定义char s[]="\"Name\\Address\023\n";,则字符串中字符个数是()。 A. 19 B. 15 C. 18 D. 14 已定义char x[8]; int i;,为了给该数组赋值,下列语句正确的是()。 A. x[8]="Turbo C"; B. x="Turbo C"; C. x[]="Turbo C"; D. for(i=0;i<7;i++) x[i]=getchar(); 设int a[][4]={0,0};,则下列描述错误的是()。 A. 数组a的每个元素的值为0 B. 二维数组a的第一维大小为1 C. 数组a有4个元素 D. 只有元素a[0][0]和a[0][1]的值为0,其余元素的值不确定 页脚内容15 以下程序段的运行结果是()。 main() { int i=4,j; j=i; pic(i+2*j-2,'*'); putchar('\n'); for(j-=2;j>=0;j--) { pic(3-j, ' '); pic(i+2*j, '*'); putchar('\n'); } } pic(int len,char C. { int k; for(k=1;k<=len;k++) putchar(C.; } A. * 页脚内容16 *** ***** ******* B. ********** ********** ********** ********** C. **** ****** ******** ********** D. ********** ******** ****** **** 以下程序运行结果是()。 页脚内容17 main() { char a[][5]={ "ABCD","1234","abcd","5678","EFGH"}; int i; for(i=0;i<3;i++) printf("%s",a[i]); } A. A1a B. ABCD1234abcd C. ABC D. ABCD1234abcd5678EFGH 以下程序的运行结果是()。 main() { int array[4][4]; int i,j; for(i=0;i<4;i++) for(j=0;j<4;j++) array[i][j]=i+j; for(i=0;i<4;i++) for(j=0;j<4;j++) if(i==j||i+j==3) array[0][j]=0; 页脚内容18 for(j=0;j<4;j++) printf("%2d",array[0][j]); printf("\n"); } A. 2 0 0 5 B. 1 0 0 4 C. 0 1 2 0 D. 0 4 5 0 设有下列语句,则()是对a数组元素的不正确引用,其中0≤i<10。 int a[1={0,1,2,3,4,5,6,7,8,9}, *p=a; A. a[p-a] B. *(&a[i]) C. p[i] D. *(*(a+i)) 若有以下程序: main { char ch[]="I am student! ", *p; p=ch; printf("%x\n",p); printf("%x\n",p+9); } 页脚内容19 其中第一个printf()运行结果是ffd6,则第二个printf()运行结果是()。 A. ffdf B. ffe8 C. ffd6 D. ffcf 以下程序的运行结果是()。 main() { int i; char aa[][3]={'a','b','c','d','e','f'}; char (*p)[3]=aa; for(i=0;i<2;i++) if(i==0) aa[i][i]+=**(p++); printf("%c\n",**p); } A. a B. b C. c D. d 设有下列语句: char str1[]="string",str2[8],*str3,*str4="string"; 则()是对库函数strcpy的不正确调用。此函数用来复制字符串。A. strcpy(str3,"HELLO3"); B. strcpy(str2,"HELLO2"); 页脚内容20