D) 3
21. 以下关于逻辑运算符两侧运算对象的叙述中正确的是 ( D )
A) 只能是整数0或1
B) 只能是整数0或非0整数 C) 可以是结构体类型的数据 D) 可以是任意合法的表达式
22. 若x和y都是int型变量,x=100,y=200,且有下面的程序片段: printf(\
上面程序片段的输出结果是( A ) A) 200 B) 100 C) 100 200
D) 输出格式符不够,输出不确定的值
23. 在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则( B )
A) 称为函数的直接递归调用 B) 称为函数的间接递归调用 C) 称为函数的循环调用
D) C语言中不允许这样的递归调用 24. 以下程序的输出结果是( D ) main()
{ int k=17;
printf(\,%o,%x \\n\,k,k,k); }
A) 17,021,0x11 B) 17,17,17 C) 17,0x11,021 D) 17,21,11
25. x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是( B )。 A) INPUT x、y、z;
B) scanf(\C) scanf(\
D) read(\26. 有以下程序 main() {
int i;
for(i=0;i<3;i++) switch(i) {
case 0: prinft(\case 2: prinft(\default: prinft(\ } }
程序运行后的输出结果是( C ) A) 022111 B) 021021 C) 000122
D) 012
27. C语言中用于结构化程序设计的三种基本结构是( A ) A) 顺序结构、选择结构、循环结构 B) if、switch、break C) for、while、do-while D) if、for、continue
28. 在嵌套使用if语句时,C语言规定else总是 ( C )
A) 和之前与其具有相同缩进位置的if配对 B) 和之前与其最近的if配对
C) 和之前与其最近的且不带else的if配对 D) 和之前的第一个if配对 29. 设有以下程序片段: switch(X) {
case 'A': printf(\case 'B': printf(\default: printf(\}
假设X='A',程序输出结果是( D ) A) A B) B C) error D) ABerror 30. 读程序: main()
{ int num=0; while (num<=2)
{ num++; printf(\ \ }
上面程序的输出结果是( C ) A) 1 B) 2 2 C) 1 2 3 D) 1 2 3 4
31. 以下程序段的执行结果是( A )。 int x=5;
do{printf(\while(!x); A) 5
B) 无任何输出 C) 4
D) 陷入死循环
32. 设变量已正确定义,则以下能正确计算f=n!的程序段是 ( D )
A) f=0; for(i=1;i<=n;i++) f*=i; B) f=1;
for(i=1;i C) f=1; for(i=n;i>1;i++) f*=i; D) f=1; for(i=n;i>=2;i--) f*=i;D 33. 以下程序的输出结果是( )。 main() { int a, b; for(a=1,b=1;a<=100;a++) { if(b>=10) break; if(b%3==1) { b+=3; continue; } } printf(\} A) 101 B) 6 C) 5 D) 4 34. 下列合法的数组定义是( D )。 A) int a[]=\ B) int a[5]={0,1,2,3,4,5}; C) char a=\ D) char a[]={0,1,2,3,4,5}; 35. 以下定义语句中,错误的是( D ) A) int a[]={1,2}; B) char *a[3]; C) char s[10]=\D) int n=5,a[n]; 36. 以下正确的数组定义语句是( D )。 A) int y[1][4]={1,2,3,4,5}; B) float x[3][]={{1},{2},{3}}; C) long s[2][3]={{1},{1,2},{1,2,3}}; D) int m[1][4]={4}; 37. 以下程序的输出结果是( C )。 main() { int i,a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf(\} A) 258 B) 741 C) 852 D) 369 38. 若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是( A) a[0][4] B) a[1][3] C) a[0][3] B ) D) a[1][4] 39. 以下数组定义中不正确的是( D ) A) int a[2][3]; B) int b[][3]={0,1,2,3}; C) int c[100][100]={0}; D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 40. 以下程序的输出结果是( A )。 main() { int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf(\} A) 0650 B) 1470 C) 5430 D) 输出值不定 41. 以下程序的输出结果是 ( B ) main() { char cf[3][5]={\printf(\} A) \B) \C) \D) \ 42. 设有数组定义: char array [ ]=\则数组 array所占的空间为( C A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节 43. 以下选项中,不能正确赋值的是( A )。 A) char s1[10];s1=\B) char s2[]={'C','t','e','s','t'}; C) char s3[20]=\D) char *s4=\44. 给出以下定义: char x[]=\ char y[]={'a','b','c','d','e','f','g'}; 则正确的叙述为( C )。 A) 数组x和数组y等价 B) 数组x和数组y长度相同 C) 数组x的长度大于数组y的长度 D) 数组x的长度小于数组y的长度 45. 若要求从键盘读入含有空格字符的字符串,应使用函数 ( B ) A) getc() B) gets() C) getchar() D) scanf() 46. 有语句: ) char str1[10],str2[10]={\ 则能将字符串books赋给数组str1的正确语句是( B )。 A) str1={\B) strcpy(str1,str2); C) str1=str2; D) strcpy(str2,str1); 47. 以下语句的输出结果是( A ) printf(\A) 5 B) 14 C) 8 D) 输出项不合法,无正常输出 48. 若有语句int *point, a=4; 和point=&a; 下面均代表地址的一组选项是( D )。 A) a, point, *&a B) &*a, &a, *point C) *&point, *point, &a D) &a, &*point, point 49. 设已有定义:float x;,则以下对指针变量p进行定义且赋初值的语句中正确的是( D A) float *p = 1024; B) int *p = (float)x; C) float p = &x; D) float *p = &x; 50. 设有语句:int a=1,b=2,*p1=&a,*p2=&b; 以下可使指针p1指向变量b的赋值语句是( C A) p1=*p2 B) *p1=p2 C) p1=p2 D) *p1=*p2 51. 有以下程序 main() { int a[]={1,2,3,4,5,6,7,8,9,0},*p; for(p=a;p 程序运行后的输出结果是( A ) A) 1,2,3,4,5,6,7,8,9,0, B) 2,3,4,5,6,7,8,9,10,1, C) 0,1,2,3,4,5,6,7,8,9, D) 1,1,1,1,1,1,1,1,1,1, 52. 若已定义char s[10]; 则在下面表达式中不能表示s[1]的地址的是( B )。 A) s+1 B) s++ C) &s[0]+1 D) &s[1] 53. 在以下选项中,操作不合法的一组是( B )。 A) int x[6], *p; p=&x[0]; B) int x[6], *p; *p=x; C) int x[6], *p; p=x; D) int x[6],p; p=x[0]; 54. 以下叙述中正确的是( B ) A) 全局变量的作用域一定比局部变量的作用域范围大 B) 静态(static)类别变量的生存期贯穿于整个程序的运行期间 ) )。