1、C语言复习题160题 试题 模拟注: 颜色字母为答案, 请大家把颜色先去掉, 做完再核对答案! (2011年12月)= 一、单项选择题 ( 共160题, 180 为基本概念题, 81160题为程序阅读题) 基本概念题第1、2章 概述、数据类型、运算符与表达式1. 计算机能直接执行的程序是:A) 源程序 B) 目标程序 C) 汇编程序 D) 可执行程序2. 下列叙述中错误的是:A) 计算机不能直接执行用C语言编写的源程序 B) 程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件 C) 后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件 D) 后缀为.obj和.
2、exe的二进制文件都可以直接运行3. 若变量均已正确定义并赋值,以下合法的C语言赋值语句是:A) x = y = = 5; B) x = n % 2.5; C) x + n = i; D) x = 5 = 4 + 1; 4. 若以下选项中的变量已正确定义,则正确的赋值语句是:A) x1 = 26.8 %3 B) 1+2 = x2 C) x3 = 0x12 D) x4 = 1+2 = 3;5. 若已定义x和y为double类型,则表达式:x = 1,y = x + 3/2的值是:A) 2.0 B) 2 C) 2.5 D) 16. 已知字符 A 的ASC代码值是65,字符变量c1的值是 A, c2
3、的值是 D,执行语句print f ( %d, %d , c1, c2-2 );后,输出结果是:A) A,B B) A,68 C) 65,66 D) 65,68 7. main ( ) char a1 = M, a2 = m; printf ( %c n , (a1, a2) ); 根据以上程序, 以下叙述中正确的是:A) 程序输出大写字母M B) 程序输出小写字母mC) 格式说明符不足,编译出错 D) 程序运行时产生出错信息8. 已有定义:int x = 3, y = 4, z = 5;,则表达式 ! ( x + y ) + z -1 & y + z / 2的值是:A) 6 B) 0 C)
4、2 D) 19. 设x和y均为int 型变量,则以下语句:x += y; y = x-y; x -= y; 的功能是:A) 交换x和y中的值 B) 把x和y按从小到大排列C) 无确定结果 D) 把x 和y按从大到小排列10. 以下选项中非法的表达式是A) 0 = x 100 B) i = j = = 0 C) (char) ( 65+3 ) D) x+1 = x+111. 若x和y代表整型数,以下表达式中不能正确表示数学关系 | x - y | 10的是:A) abs (x-y ) -10 & x-y10 C) (x-y) 10 D) (x-y) * (x-y) b) & +n; 则n的值是:
5、A) 1 B) 2 C) 3 D) 413. 若有表达式 (w) ? (-x):(+y), 则其中与w等价的表达式是:A) w = = 1 B)w = = 0 C) w!=1 D) w != 014. 设已有定义 int a = 5, b = 6, c = 7, d = 8, m = 2,n = 2; 则逻辑表达式 ( m = ab ) & ( n = cd ) 运算后,n的值为:A) 0 B) 1 C) 2 D) 315. 已有定义:char c; ,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是:A) isupper (c) B) A= c =
6、Z C)A= c & c = Z D) c = (z-32) & (a-32) = c第3章 语句和控制结构16. 以下叙述中错误的是A) C语言是一种结构化程序设计语言 B) 结构化程序有顺序、分支、循环三种基本结构组成C) 使用三种基本结构构成的程序只能解决简单问题 D) 结构化程序设计提倡模块化的设计方法17. 有以下程序段int m = 0, n = 0; char c = a;scanf ( %d %c %d , &m,&c,&n); printf ( %d, %c, %d n , m, c, n);若从键盘上输入:10A10,则输出结果是:A) 10, A, 10 B) 10, a
7、, 10 C) 10, a, 0 D) 10, A, 018. 若有说明语句:int a, b, c, *d = &c;,则能正确从键盘读入三个整数分别赋给a、b、c的语句是:A) scanf ( %d %d %d, a, b, *d ); B) scanf ( %d %d %d, &a, &b, &d );C) scanf (%d %d %d, a, b, d ); D) scanf (%d %d %d,&a, &b, d ) 19. 若在定义语句:int a, b, c,*p = &c; 之后,接着执行以下选项中的语句,则能正确执行的语句是:A) scanf (%d, a,b,c); B)
8、scanf (%d%d%d, a,b,c); C) scanf (%d, p); D) scanf (%d, &p);20. 有定义语句:int x, y; ,若要通过scanf ( %d,%d, &x, &y ); 语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是:A) 11 12 B) 11,12 C) 11, 12 D) 11,1221. 若变量已正确定义为int 型,要通过语句scanf (”%d, %d, %d”, &a, &b, &c ); 给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是:(代表一个空格符)A) 1, 2, 3 B) 123 C
9、) 1,2, 3 D) 1, 2, 322. 有以下程序段 int j; float y; char name50; scanf ( %2d %f %s, &j, &y, name); 当执行上述程序段,从键盘上输入55566 7777abc后,y的值为:A) 55566.0 B) 566.0 C) 7777.0 D) 566777.0 23. 当用户要求输入的字符串中含有空格时,应使用的输入函数是:A) scanf ( ) B) getchar ( ) C) gets ( ) D) getc( ) 24. C语言中用于结构化程序设计的三种基本结构是:A) 顺序、选择、循环 B) if、swi
10、tch、break C) for、while、do-while D) if、for、continue25. 要使以下程序中t的输出结果为4,则输入a和b应满足的条件是:main () int s = 1, t = 1, a, b;scanf ( %d %d , &a, &b );if ( a 0 ) s += 1; if ( ab ) t = s + t;else if ( a= =b ) t = 5;else t = 2 * s;printf ( %d n , t );A) a0并且ab B) a0并且a0并且ab D) ab26. 有以下程序段int n, t = 1, s = 0; sc
11、anf ( %d , &n); do s = s + t; t = t-2; while (t != n );为使此程序段不陷入死循环,从键盘输入的数据应该是:A) 任意正奇数 B) 任意负偶数 C) 任意正偶数 D) 任意负奇数27. 在循环语句的循环体中,continue语句的作用是:A) 立即终止整个循环 B) 继续执行continue语句之后的循环体各语句C) 结束本次循环 D) 结束本次循环并跳出循环28. 若变量已正确定义,有以下程序段,其输出结果是:i = 0; do printf ( %d, , i ) ; while ( i+ ); printf ( %d n , i );A
12、) 0,0 B) 0,1 C) 1,1 D) 程序进入无限循环 29. 若定义int i;, 则循环语句:for ( i = 2;i = = 0;) printf ( %d , i-);执行次数是:A) 无限次 B) 2次 C) 1次 D) 0次30. 若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值 ( c大于0) for (s = a, b = 1; b= c; b +) s = s + 1;则与上述程序段功能等价的赋值语句是:A) s = a + b; B) s = a + c; C) s = s + c; D) s = b + c;第4章 函数与程序结构31. 对
13、于一个正常运行的C程序,以下叙述中正确的是:A) 程序的执行总是从main函数开始,在main函数结束 B) 程序的执行总是从程序的第一个函数开始,在main函数结束 C) 程序的执行总是从main函数开始,在程序的最后一个函数中结束 D) 程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束32. 以下正确的叙述是:A) 在C语言中,main函数必须位于文件的开头B) C语言的每行中只能写一条语句C) C语言本身没有输入、输出语句D) main函数可以在任何地方出现33. C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是:A) void B) int C) float
14、D) double34. 下面的函数调用语句中func ( f2 (v1,v2), (v3, v4, v5), (v6, max (v7, v8) ) );,函数的实参个数是:A) 3 B) 4 C) 5 D) 835. 以下叙述中错误的是A) 用户自定义的函数中可以没有return语句B) 用户自定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值C) 用户自定义的函数中若没有return语句,则应当定义函数为void类型D) 函数的return语句中可以没有表达式36. 若程序中定义了以下函数double myadd (double a,double b) return
15、(a+b); 并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下错误的说明是:A) double myadd (double a, b); B) double myadd (double, double );C) double myadd (double b, double a); D) double myadd (double x, double y);37. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是:A) 地址传递 B) 双向值传递 C) 单向值传递 D) 传递方式由用户指定38. 若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是:A)
16、 函数的实参和其对应的形参共占同一存储单元B) 形参只是形式上的存在,不占用具体存储单元C) 同名的实参和形参占同一存储单元 D) 函数的形参和实参分别占用不同的存储单元 39. 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是:A) 函数调用可以作为独立的语句存在 B) 函数调用可以作为一个函数的实参C) 函数调用可以出现在表达式中 D) 函数调用可以作为一个函数的形参40. 凡在函数内未指定的存储类型变量,其隐含的存储类型为:A) register B) static C) extern D) auto41. 以下叙述中正确的是:A) 未在定义语句中赋初值的变量初值都是随机值
17、B) 全局变量的作用域一定比局部变量大 C) static类别变量的生存期贯穿于整个程序的运行期间 D) 函数的形参都属于全局变量42. 在一个C语言源程序文件中所定义的全局变量,其作用域为: A) 所在文件的全部范围 B) 所在程序的全部范围 C) 所在函数的全部范围 D) 由具体定义位置和extern 说明来决定范围 第6章 数组43. 若在main ( ) 中有定义 int a 5 ; 则数组a 中所有元素的初值为:A) 不确定 B) 0 C) 1 D) -144. 若有以下定义语句:int m = 5, 4, 3, 2, 1 ,i = 4;, 则下面对m数组元素的引用中错误的是:A)
18、m -i B) m 2*2 C) m m 0 D) m mi 45. 若定义a 2 = 1, 2, 3, 4, 5, 6, 7 ;则a数组中行的大小是:A) 2 B) 3 C) 4 D) 无确定值46. 若有定义语句:int a36; ,按在内存中的存放顺序,a数组的第10个元素是 A) a04 B) a13 C) a03 D) a14 47. 以下能正确定义数组并正确赋初值的语句是:A) int N = 5, bNN; B) int a12 = 1, 3;C) int c2 = 1, 2, 3, 4 D) int d32 = 1, 2, 3, 4;48. 以下能正确定义二维数组的是:A) i
19、nt a 3; B) int a 3=22*3; C) int a 3=1; D) int a23=1,2,3,449. 若定义a 3 = 1, 2, 3, 4, 5, 6, 7,8 ;,则数组a中行的大小是:A) 2 B) 3 C) 4 D) 无确定值50. 在以下定义中,正确的说明语句为:A) int a a B) int a3, 4 C) int a D) int *a10; 51. 用数组名作为函数参数时,它传递给函数是:A) 数组首地址 B) 整个数组 C) 数组的第一个值 D) 数组的全部地址52. 以下能正确定义一维数组的选项是: A) int a3=0,1,2,3; B) ch
20、ar a =0,1,2,3,; C) char a=A,B,C; D) int a3=012;53. 若有定义语句:char s10 = 123456700 ; ,则strlen (s) 的值是:A) 7 B) 8 C) 9 D) 10 第7章 指针54. 设有定义:int n1=0, n2, *p = &n2, *q = &n1;,以下赋值语句中与n2 = n1;语句等价的是:A) *p = *q; B) p = q; C) *p = &n1; D) p = *q;55. 若有定义:int x = 0, *p = &x;,则语句printf ( %d n , *p ); 的输出结果是:A)
21、随机值 B) 0 C) x的地址 D) p的地址 56. 设有定义:char p =1,2,3, *q = p; ,不能计算出一个char型数据所占字节数的表达式是:A) sizeof ( p ) B) sizeof ( char ) C) sizeof ( *q ) D) sizeof ( p0 )57. 有如下说明 int a 10 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 , *p = a; 则数值为9的表达式是:A) *p+9 B) *(p+8) C) *p += 9 D) p+858. 有以下定义和语句: int a32=1,2,3,4,5,6, *p3; p0
22、 = a1; 则*(p0+1)所代表的数组元素是:A) a01 B) a10 C) a11 D) a1259. 若有以下说明和语句,int c45, (*p)5; p = c; 能正确引用c数组元素的是:A) p+1 B) *(p+3) C) *(p+1)+3 D) *( p0+2)60. 若有定义语句:int a23, *p3; ,则以下语句中正确的是:A) p=a; B) p0=a; C) p0=&a12; D) p1=&a; 61. 若有定义int a35,i,j;(且0i3,0j5), 则地址 &aij 对应元素的不正确表示是:A) *(a+i*5+j) B) *(ai+j) C) *
23、(a+i)+j D) *(*(a+i)+j);62. 以下各语句或语句组中,正确的操作是:A) char s5=abcde; B) char *s; gets(s); C) char s5; gets (&s); D) char *s =abcde;63. 把字符串 OK! 赋值给变量不正确的语句或语句组是:A) char a = OK! ; B) char a 8 = O, K, ! , 0 ;C) char *p ; p = OK! ; D) char p; strcpy ( p , OK! ) ;64. 定义compare (char*s1,char*s2) 函数,以实现比较两个字符串大
24、小的功能。以下程序运行结果为 -32,选择正确答案填空。main ( ) printf ( ”%d n”, compare ( ”abCd”, ”abc”) ); compare (char*s1,char*s2) while (*s1 & *s2 & ) s1+; s2+;return *s1-*s2;A) *s1 != *s2 B) *s1 = = *s2 C) *s1 = *s2 D) s1 != s265. 有以下函数,关于aaa函数的功能叙述正确的是:int aaa (char *s) char *t = s; while ( *t+ ); t-; return (t-s); A)
25、求串s的长度 B) 比较两串的大小 C) 将串s复制到串t D) 求串s所占字节数 66. 设有定义:int n = 0, *p = &n, *q = &p; ,则以下选项中,正确的赋值语句是:A) p = 1; B) *q = 2; C) q = p; D) *p = 5;67. 若有定义 char * language = FORTRAN, BASIC , PASCAL, C; 则language2的值是:A) 一个字符 B) 一个地址 C) 一个字符串 D) 不定68. 若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是:A) p =2* (int*) malloc
26、 (sizeof (int) ); B) p = (int*) malloc (2 * sizeof (int) );C) p = (int*) malloc (2*2 ); D) p = (int*) calloc (2, sizeof (int) ); 第8章 结构及其地数据类型69. 若要说明一个类型名STP,使得定义语句STP s;等价于char *s;,以下选项中正确的是:A) typedef STP char *s; B) typedef *char STP; C) typedef STP *char; D) typedef char* STP70. 若有定义typedef cha
27、r STR 520;STR s;,则s是:A) 字符指针数组变量 B) 字符数组变量 C) 字符变量 D) 字符指针变量71. 有以上程序段:typedef struct NODE int num; struct NODE *next; OLD;以下正确的叙述是:A) 以上的说明形式非法 B) NODE是一个结构体类型C) OLD是一个结构体类型 D) OLD是一个结构体变量72. 设有以下说明语句 typedef struct int n; char ch8; PER;,则下面叙述中正确的是:A) PER 是结构体变量名 B) PER是结构体类型名C) typedef struct 是结构体
28、类型 D) struct 是结构体类型名73. 根据下面的定义,能打印出字母M的语句是:struct person char name9; int age; class10 = John,17, Paul,19, Mary,18, Adam,16;A) printf (%cn, class3.name ); B) printf (%cn, class3.name1 ); C) printf (%cn, class2.name1 ); D) printf (%cn, class2.name0 );74. 设有说明如下, 则能正确定义结构体数组并赋初值的语句是:typedef struct int n; char c; double x; STD ; A) struct STD tt 2 = 1,A, 6, 2,B, 7; B) struct tt 2 = 1,A,2,B;C) STD tt 2 = 1, A, 6, 2, B, 7 ; D) STD tt 2 = 1,A, 6, 2, 7;75. 若定义:stru
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1