C语言复习题

更新时间:2024-05-02 16:06:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、 判断题:

1.O C程序的基本组成单位是函数 2.O C程序可以由一个或多个函数组成

3.X C语言可以不用编译就能被计算机识别执行 4.X main()函数必须放在其它函数之前

5.O 每个C程序中都必须要有一个main()函数 6.X 在C程序中main()函数的位置是固定的

7.X C程序中的main()函数必须放在程序的开始位置。 8.X C语言编译时不检查语法

9.O C程序中注释部分可以出现在程序中任意合适的地方 10.O C程序中一行可以写多条语句

11.X 分号是C语句之间的分隔符,不是语句的一部分 12.X 花括号“{”和“}”只能作为函数体的定界符 13.X C程序中的每行只能写一条语句

14.X C程序的执行总是从main函数开始,在main函数结束

15.X C程序的执行总是从main函数开始,在程序的最后一个函数中结束 16.O ++(i+1);是非法的赋值语句

17.O 用户标识符中不可以出现中划线,但可以出现下划线

18.X 用户标识符中可以出现下划线,但不可以放在用户标识符的开头 19.O C语言中,Area与area是不同的标识符 20.X C语言中有逻辑类型

21.X int a=b=0;是正确的定义语句。

22.X 1.2E0.5是符合C语言语法的实型常量

23.X 假定x和y为double型,则表达式x=2,y=x+3/2的值是3.500000 24.X 可以用关系运算符对字符串的大小进行比较

25.X 两个字符串中的字符个数相同时才能进行字符串大小的比较 26.X 设有定义语句:char b= '\\123';则变量b包括4个字符

27.X 若有定义语句:char s[10]=\,则strlen(s)的值是9 28.X a=b+c=1 是正确的赋值表达式

29.O 若变量a、i已正确定义,且i已正确赋值,则 a=a++=5; 是正确的赋值语句( ) 30.O 除逗号运算符外,赋值运算符的优先级最低

31.O C语言中,运算对象必须是整型数据的运算符是 %。

32.X 对于单目运算符++、--,它们的运算对象可以是任何变量和常量 33.X 表达式:10!=9的值是 true 34.O 表达式1||2||3||4的值是1。

35.O 若变量c为char类型,则表达式(c>= 'a')&&(c<= 'z') 能正确判断出c为小写字母 36.X 若变量c为char类型,则表达式 'a'<=c<= 'z' 能正确判断出c为小写字母 37.O sizeof(float)的值是4

38.X sizeof(double)是一种函数调用

39.O if(xy); 是正确的if语句。

41.O 用do-while语句构成的循环,在while后的表达式为零时结束循环 42.X do-while语句构成的循环只能用break语句退出

43.X 对for(表达式1; ; 表达式3)可理解为 for(表达式1;0;表达式3) 。 44.X break语句只能用于switch语句体中

45.X continue语句的作用是:使程序的执行流程跳出包含它的所有循环 46.X 在循环体内使用break语句和continue语句的作用相同

47.X 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

48.X 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是6

49.X 若有定义:int a[2][3];对a数组元素正确引用的是a[2][3] 50.X 若有说明int s[3][4]={0};则只有元素s[0][0] 可得到初值0。

51.O 不能在赋值语句中通过赋值运算符\对字符型数组进行整体赋值 52.O 字符型数组中可以存放字符串

53.X 可以对整型数组进行整体输入、输出 54.X 函数中的形式参数是局部变量

55.O 在不同的函数中可以使用相同名字的变量

56.O 在一个函数内定义的变量只在本函数范围内有效 57.X 函数的定义和函数的调用均可以嵌套

58.X 函数的定义可以嵌套,但函数的调用不可以嵌套 59.O 函数的形参和实参分别占用不同的存储单元

60.X C语言中,每个函数都可以被其它函数调用(包括main函数) 61.X C语言中,在一个函数内部可以定义另一个函数 62.X 实参和与其对应的形参共同占用一个存储单元

63.X 只有当实参和与其对应的形参同名时才共占用存储单元 64.X 若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,B)));在此函数调用语句中实参的个数是6

65.O 用户定义的函数中可以没有return语句

66.X 用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值 67.O 当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址 68.X 若用数组名作为实参,则传递给形参的是数组中全部元素的值。 69.O C语言中形参的默认存储类别是自动(auto)。 70.O C语言中,宏替换没有数据类型限制 71.X C语言中,宏名必须用大写字母表示

72.X C程序对预处理命令行的处理是在程序执行的过程中进行的 73.X 两个字符串中的字符个数相同时才能进行字符串大小的比较

74.O 当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址 75.X break语句只能用于switch语句体中

76.X C程序中的main()函数必须放在程序的开始位置。 77.O if(x>y); 是正确的if语句。 78.O ++(i+1);是非法的赋值语句 79.X 若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,B)));在此函数调用语句中实参的个数是6

80.O 函数的形参和实参分别占用不同的存储单元 81.O 在不同的函数中可以使用相同名字的变量 82.X 表达式:10!=9的值是 true

83.O C语言中,宏替换没有数据类型限制

84.O C程序中注释部分可以出现在程序中任意合适的地方 85.X 设有定义语句:char b= '\\123';则变量b包括4个字符

86.O 用do-while语句构成的循环,在while后的表达式为零时结束循环 87.O if(x

88.X continue语句的作用是:使程序的执行流程跳出包含它的所有循环 89.X 1.2E0.5是符合C语言语法的实型常量

90.X 若有定义语句:char s[10]=\,则strlen(s)的值是9

91.X 若变量c为char类型,则表达式 'a'<=c<= 'z' 能正确判断出c为小写字母 92.X 可以用关系运算符对字符串的大小进行比较 93.O 每个C程序中都必须要有一个main()函数 94.X 函数的定义和函数的调用均可以嵌套 95.O sizeof(float)的值是4 96.X C语言中有逻辑类型

97.O 字符型数组中可以存放字符串

98.X 分号是C语句之间的分隔符,不是语句的一部分 99.O C程序可以由一个或多个函数组成

100X. 若有说明int s[3][4]={0};则只有元素s[0][0] 可得到初值0。

101.X 用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值 102.X C语言中,每个函数都可以被其它函数调用(包括main函数)

二、 单选题

1. 以下说法中正确的是( C )

A) C语言程序总是从第一个的函数开始执行

B) 在C语言程序中,要调用的函数必须在main()函数中定义 C) C语言程序总是从main()函数开始执行

D) C语言程序中的main()函数必须放在程序的开始部分

2. 下选项中不是C语句的是( A )。 A) {int i; i++; printf(“%d\\n”,i);} B) ;

C) a=5,c=10 D) { ; }

3. 以下选项中不能作为C语言合法常量的是 ( ) A) 'cd' B) 0.1e+6 C) \D) '\\011'

4. 若x,a,b和c均是int型变量,则执行表达式x=(a=1,b=2)后x的结果为( B )。 A) 1 B) 2 C) 3

D) 不确定

5. 以下能正确定义整型变量a,b和c并为其赋初值1的语句是( D )。 A) int a=b=c=1; B) int a,b,c=1; C) a=b=c=1;

D) int a=1,b=1,c=1;

6. 字符串\中的字符数(不算’\\0’)为( D ) A) 5 B) 14 C) 8

D) 4

7. 对两个静态函数A和B进行如下初始化: char A[]=\

char B[]={'A','B','C','D','E','F'}; 则下列叙述正确的是( D )。 A) A和B完全相同 B) A和B只是长度相等

C) A和B不相同,A是指针数组 D) A数组长度比B数组长 8. 若有以下定义: char a;int b; float c;double d;

则表达式a*b+d-c值的类型为( D ) A) float B) int C) char D) double

9. 在C语言中,运算对象必须是整型数的运算符是( A ) A) % B) / C) %和\\ D) **

10. 有以下程序 main()

{ int x, y, z; x=y=1;

z=x++,y++,++y;

printf(\ }

程序运行后的输出结果是 ( C ) A) 2,3,3 B) 2,3,2 C) 2,3,1 D) 2,2,1

11. 以下选项中,当x为大于1的奇数时,值为0的表达式是( D ) A) x%2==1 B) x/2 C) x%2!=0 D) x%2==0

12. 以下程序的输出结果是( C )。 main() {

int x=10,y=3;

printf(\}

A) 0 B) 1 C) 3

D) 不确定的值

13. 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是( C )

A) -3 B) 9 C) -12 D) 6

14. 有以下程序 main() {

char a='a',b; printf(\printf(\}

程序运行后的输出结果是 ( A ) A) b,b B) b,c C) a,b D) a,c

15. 设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为( C ) A) 0 B) 1 C) 2 D) 3

16. 设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为( C ) A) 不定值 B) 4 C) 3 D) 1

17. 有以下程序段 int k=0 ;

while(k=1)k++;

while循环执行的次数是( A ) A) 无限次

B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次

18. 能正确表示逻辑关系“a>=10或a<=0”的C语言表达式是( D ) A) a>=10 or a=10 B) a>=0|a<=10 C) a>=10&&a<=0 D) a>=10||a<=0

19. 表示关系x≤y≤z的c语言表达式为( A ) A) (x<=y)&&(y<=z) B) (x<=y)AND(y<=z) C) (x<=y<=z) D) (x<=y)&(y<=z)

20. 设有:int a=1, b=2, c=3, d=4, m=3, n=3; 执行 (m=a>b)||(n=c>d)后n的值为( A )。 A) 0 B) 1 C) 2

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)类别变量的生存期贯穿于整个程序的运行期间

) )。

C) 函数的形参都属于全局变量

D) 未在定义语句中赋初值的auto变量和static变量的初值都是随机值 55. 有以下程序 main()

{ char s[]=\ p=s;

printf(\pritnf(\}

程序运行后的输出结果是 ( A ) A) 15 B) 16 C) 12 D) 59

56. 以下语句或语句组中,能正确进行字符串赋值的是( A) char *sp; *sp=\B) char s[10]; s=\C) char s[10]; *s=\D) char *sp=\

57. 下面程序段的运行结果是( A )。 char *p= \p+=2;

printf(\A) 6 B) 12 C) 4 D) 7

58. 下面程序段的运行结果是( B )。 char str[ ]= \printf(\A) 67 B) 0

C) 字符'C'的地址 D) 字符'C'

59. 以下程序运行后,输出结果是( C ) main()

{ char *s=\ s+=2;

printf(\,s);} A) cde

B) 字符c的ASCII码值 C) 字符c的地址 D) 出错

60. 有以下程序: main()

{ char *p[10]={\printf(\}

执行后输出结果是( A ) A) 2

C ) B) 3 C) 4 D) 5

61. 若有语句:char *line[5];,以下叙述中正确的是( A )

A) 定义line是一个数组,每个数组元素是一个基类型为char的指针变量 B) 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 C) 定义line是一个指针数组,语句中的*号称为间址运算符 D) 定义line是一个指向字符型函数的指针

62. 设有如下定义: char *aa[2]={\;则以下说法中正确的是( D )。 A) aa数组成元素的值分别是\和ABCD\

B) aa是指针变量,它指向含有两个数组元素的字符型一维数组

C) aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D) aa数组的两个元素中各自存放了字符串\和\的首地址 63. 以下函数调用语句中含有( B )个实参。 fun((exp1,exp2),(exp3,exp4,exp5)); A) 1 B) 2 C) 4 D) 5

64. 以下所列的各函数首部中,正确的是( C ) A) void play(var a :integer,var b:integer) B) void play(int a,b) C) void play(int a,int b)

D) Sub play(a as integer,b as integer)

65. C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( B ) A) void B) int C) float D) double

66. 下面的函数调用语句中func函数的实参个数是 ( A )

func(f2(v1, v2), (v3, v4, v5), (v6, max(v7, v8))); A) 3 B) 4 C) 5 D) 8

67. 有以下程序 fun(int x, int y) { static int m=0, i=2;

i+=m+1; m=i+x+y; return m; }

main()

{ int j=1, m=1, k;

k=fun(j,m); printf(\ k=fun(j,m); printf(\}

执行后的输出结果是 ( B ) A) 5, 5 B) 5, 11 C) 11, 11

D) 11, 5

68. 以下函数值的类型是 ( A )

fun ( float x ) { float y; y= 3*x-4; return y; }

A) int B) 不确定 C) void D) float

69. 以下程序的输出结果是 ( C )

fun(int x, int y, int z) { z=x*x+y*y; } main()

{ int a=31; fun(5,2,a); printf(\}

A) 0 B) 2 C) 31 D) 无定值 70. 有以下程序

void f(int x,int y) { int t;

if(x

main()

{ int a=4,b=3,c=5;

f(a,b); f(a,c); f(b,c); printf(\}

执行后输出的结果是( D ) A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 4,3,5

71. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( A) 地址传递 B) 单向值传递

C) 由实参传给形参,再由形参传回实参 D) 传递方式由用户指定 72. 有以下程序 void f(int b[]) { int i;

for (i=2; i<6; i++) b[i] *= 2; }

main()

B ) { int a[10]={1,2,3,4,5,6,7,8,9,10}, i; f(a);

for (i=0; i<10; i++) printf(\}

程序运行后的输出结果是( B ) A) 1,2,3,4,5,6,7,8,9,10, B) 1,2,6,8,10,12,7,8,9,10, C) 1,2,3,4,10,12,14,16,9,10, D) 1,2,6,8,10,12,14,16,9,10,

73. 在C语言中,函数返回值的类型最终取决于 ( C )

A) 函数定义时在函数首部所说明的函数类型 B) return语句中表达式值的类型

C) 调用函数时主调函数所传递的实参类型 D) 函数定义时形参的类型

74. 调用一个函数,此函数中没有return语句,下列说法正确的是:该函数( A A) 没有返回值

B) 返回若干个系统默认值

C) 能返回一个用户所希望的函数值 D) 返回一个不确定的值

75. 若有以下调用语句,则不正确的fun函数的首部是( D ) main() { … int a[50],n; … fun(n, &a[9]); … }

A) void fun(int m, int x[]) B) void fun(int s, int h[41]) C) void fun(int p, int *s) D) void fun(int n, int A) 76. 有以下程序

void swap(char *x, char *y) { char t;

t=*x; *x=*y; *y=t; } main()

{ char *s1=\

swap(s1,s2); printf(\ }

程序执行后的输出结果是 ( C ) A) 123,abc B) abc,123 C) 1bc,a23 D) 321,cba

77. 以下程序的输出结果( B ) #include sub(int x,int y,int * z)

)。 {

*z=y-x; } main() {

int a, b, c;

sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);

printf(\}

A) 5,2,3 B) -5,-12,-7 C) -5,-12,-17 D) 5,-2,-7

78. 已定义以下函数 int fun( int *p) { return *p; } fun函数返回值是 ( C )

A) 不确定的值 B) 一个整数

C) 形参p中存放的值 D) 形参p的地址值 79. 已定义以下函数: fun (char* p2, char* p1)

{ while ((*p2=*p1) != '\\0') {pl++;p2++;} } 函数的功能是 ( C )

A) 将p1所指字符串复制到p2所指内存空间 B) 将pl所指字符串的地址赋给指针p2

C) 对pl和p2两个指针所指字符串进行比较

D) 检查p1和p2两个指针所指字符串中是否有'\\0' 80. 有以下程序 #include int fun(int a, int b)

{ if (b==0) return a;

else return (fun(--a, --b)); }

main()

{ printf(\程序的运行结果是( B ) A) 1 B) 2 C) 3 D) 4

81. 以下程序的输出结果是 ( B ) int a,b; void fun()

{ a=100; b=200; }

D) 1

132. 设变量x和y均己正确定义并赋值。以下if语句中,在编译时将产生错误信息的是 ( A )

A) if (x++);

B) if (x>y && y!=0); C) if (x>0) x-- else y++;

D) if (y<0) {;} else x++;

133. 有以下程序 main()

{ int p[7]={11,13,14,15,16,17,18},i=0,k=0; while(i<7&&p[i]%2){k=k+p[i]; i++;} printf(\}

执行后输出的结果是( D ) A) 58 B) 56 C) 45 D) 24

134. 对于下述for循环语句,说法正确的是( B )。 int i,k;

for(i=0,k=-1;k=1;i++,k++) printf(\

A) 判断循环结束的条件非法 B) 是无限循环 C) 只循环一次 D) 一次也不循环

135. C语言源程序名的后缀是( B ) A) .exe B) .C C) .obj D) .cp

136. 在C语言中,如果下面的变量都是int类型,则输出结果是( A sum=a=5;

a=sum++,a++,++a; printf(\A) 7 B) 6 C) 5 D) 4

137. 以下关于运算符优先顺序的描述中正确的是( C ) A) 关系运算符<算术运算符<赋值运算符<逻辑与运算符 B) 逻辑与运算符<关系运算符<算术运算符<赋值运算符 C) 赋值运算符<逻辑与运算符<关系运算符<算术运算符 D) 算术运算符<关系运算符<赋值运算符<逻辑与运算符 138. 下述语句中,( C )中的if语句语法是错误的。 A) if(x>y);

B) if(x==y) x+=y;

C) if(x!=y) scanf(\D) if(x

) 139. 以下程序的输出结果是( A ) # include # include main()

{ char str[12]={'s','t','r','i','n','g'}; printf(\ } A) 6 B) 7 C) 11 D) 12

140. 若x为int型变量,y是float型变量,输入语句格式为: scanf(\

则为使x=20,y=166.6,正确的输入是( B )。 A) 20 166.6 <回车> B) x=20,y=166.6 <回车> C) 20 <回车> 166.6 <回车> D) 20,166.6 <回车> 141. 有以下程序 #include #include main()

{ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1]; printf(“%d,”,strlen(p));printf(“%s\\n”,p); }

程序运行后的输出结果是( C ) A) 9,One*World B) 9,One*Dream C) 10,One*Dream D) 10,One*World

142. 以下程序运行后,如果从键盘上输入: book <回车>

book <空格><回车> 则输出的结果是( B ) #include main()

{char a1[80],a2[80],*s1=a1, *s2=a2; gets(s1); gets(s2);

if(! strcmp(s1,s2)) printf(\else printf(\

printf(\}

A) *8 B) #9 C) #6 D) *9

143. 若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是( A) for(i=1, p=1; i<=5; i++) p*=i; B) for(i=1; i<=5;i++){ p=1; p*=i; } C) i=1; p=1; while(i<=5){ p*=i; i++;} D) i=1;p=1;do{p*=i; i++; } while(i<=5) 144. 以下程序运行后,输出结果是( B )

B ) 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(\printf(\ }

A) 10000 B) 10010 C) 00110 D) 10100

145. 在一个C语言程序中( B )

A) main函数必须出现在所有函数之前 B) main函数可以在任何地方出现 C) main函数必须出现在所有函数之后 D) main函数必须出现在固定位置 146. 有以下程序 #include main() { int c=0,k;

for (k=1;k<3;k++) switch (k)

{default: c+=k case 2: c++;break; case 4: c+=2;break; }

printf(“%d\\n”,c); }

程序运行后的输出结果是( A ) A) 3 B) 5 C) 7 D) 9

147. 有以下程序 main()

{ char str[][10]={\printf(\}

程序运行后的输出结果是( B ) A) China B) Beijing C) ng D) ing

148. 下列函数定义中,会出现编译错误的是( B A) max(int x, int y, int* z) { *z = x>y?x:y; } B) int max(int x, y) {

) int z;

z = x>y?x:y; return z; }

C) max(int x, int y) { int z;

z = x>y?x:y; return(z); }

D) int max(int x, int y) { return (x>y ? x : y); }

149. 假定a和b为int型变量,则执行以下语句后b的值为( D ) a=1;b=10; do

{b-=a;a++;} while(b--<0); A) 9 B) -2 C) -1 D) 8

150. 如果假设

a=2,b=3,x=3.5,y=2.5

那么下面的算术表达式的值是( B )。 (float)(a+b)/2+(int)x%(int)y A) 2 B) 3 C) 3.5 D) 2.5

151. 以下程序段给数组所有的元素输入数据,请选择正确答案填入( #include main() {

int a[10],i=0; while(i<10)

scanf(\}

A) a+(i++) B) &a[i+1] C) a+i D) &a[i++]

152. 以下选项中可作为C语言合法整数的是( C ) A) 10110B B) 386 C) 0Xffa D) x2a2

153. 有以下程序 main()

{ int i, s=0, t[]={1,2,3,4,5,6,7,8,9}; for(i=0;i<9;i+=2) s+=*(t+i); printf(\}

D )。 程序执行后的输出结果是 ( C ) A) 45 B) 20 C) 25 D) 36

三、 多项选择题:

1. 以下叙述中正确的是( BCD )

A) 用户所定义的标识符允许使用关键字

B) 用户所定义的标识符应尽量做到“见名知意” C) 用户所定义的标识符必须以字母或下划线开头 D) 用户定义的标识符中,大、小写字母代表不同标识 2. 下列定义变量的语句中正确的是( ABC ) A) int _int; B) double int_; C) char For; D) float US$;

3. 设有定义:int k=1, m=2;float f=7;,则以下选项中符合C语言语法的表达式是 ( ABD ) A) k=k>=k B) -k++ C) k%int(f) D) k<>m

4. 若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0}, *p=x;则正确引用x数组元素的是( ACD ) A) *p B) x[5] C) *(p+1) D) *x

5. 若要求定义具有10个int型元素的一维数组a,则以下定义语句中正确的是 ( ABC )

A) #define N 10 int a[N];

B) #define n 5 int a [2*n]; C) int a[5+5]; D) int n=10,a[n];

6. C源程序中可以表示的数制是 ( BCD ) A) 二进制 B) 八进制 C) 十进制 D) 十六进制

7. 按照C语言规定的用户标识符命名规则,能出现在标识符中的是( ACD ) A) 大写字母 B) 连接符 C) 数字字符 D) 下划线

8. 以下不合法的字符型常量是( AC )

A) '\\x13' B) '\\081' C) '\\065' D) \

9. 以下合法的字符常量是 ( BCD ) A) '\\018' B) '\\\C) '\\\\' D) '\\0xcc'

10. 以下叙述中正确的是( ABD ) A) C语句必须以分号结束

B) 复合语句在语法上被看作一条语句

C) 空语句出现在任何位置都不会影响程序运行 D) 赋值表达式末尾加分号就构成赋值语句 11. 以下合法的赋值语句是(ABD ) A) n=(i=2,++i); B) j++; C) ++(i+1); D) x=j>0;

12. 以下能正确定义二维数组的选项是 ( AB )

A) int a[2][2] = {{1}, {2}}; B) int a[ ][2] = {1, 2, 3, 4}; C) int a[2][2] = {{1}, {2},{3}}; D) int a[2][ ] = {{1, 2}, {3, 4}};

13. 若有定义:int aa[8];则以下表达式中能代表数组元aa[1]的地址的是 ( ABD ) A) &aa[0]+1 B) &aa[1] C) &aa[0]++ D) aa+1

14. 已有定义:int i,a[10],*p; , 则不合法的赋值语句是( AB ) A) p=100; B) p=a[5] C) p=&a[2]+2 D) p=a+2;

15. 以下能正确进行字符串赋初值的语句是( BD ) A) char str[5]=\B) char str[]=\C) char *str=\

D) char str[5]={?g',?o',?o',?d'};

16. 已知大写字母A的ASCⅡ码是65,小写字母a的ASCⅡ码是97。以下能将变量c中的大写字母转换为对应小写字母的语句是( ABC ) A) c=(c-'A')&+'a' B) c=c+32 C) c=c-'A'+'a'

D) c=('A'+c)&-'a'

17. 设有以下定义和语句 char str[20]=\p=str;

则以下叙述中错误的是(CD ) A) *p与str[0]中的值相等 B) 可以执行p++操作 C) 可以执行str++操作

D) str数组长度和p所指向的字符串长度相等

18. 对于下面①,②两个循环语句,正确的描述是(AB )。 ① while(1); ② for( ; ; ); A) ①是无限循环 B) ②是无限循环 C) ①循环一次 D) ②循环一次

19. 以下错误的函数定义形式是( BCD ) A) double fun (int x , int y) B) double fun (int x ; int y) C) double fun (int x , int y) ; D) double fun (int x , y) ;

20. 对于基本类型相同的两个指针变量之间,可以进行的运算是( ABD ) A) < B) = C) + D) -

21. 能把字符串:Hello!赋给数组b的语句是( ACD ) A) char b[10]={'H','e','l','l','o','!'}; B) char b[10];b=\

C) char b[10];strcpy(b,\D) char b[10]=\

22. 以下能对二维数组a进行正确初始化的语句是( AD ) A) int a[2][3]={0};

B) int a[2][ ]={{1, 2}, {0}};

C) int a[2][3]={{1, 2}, {3, 4}, {5, 6}}; D) int a[ ][3]={1, 2, 3, 4, 5, 6}; 23. sizeof(double)是 CD A) 一种函数调用

B) 一个双精度型表达式 C) 一个整型表达式 D) sizeof是运算符

24. 设a为整型变量,能正确表达数学关系:10

B) a==11||a==12||a==13||a==14 C) a>10&&a<15 D) (a<10)||(a>15)

25. C语言中基本的数据类型包括( ABD ) A) 整型 B) 实型 C) 逻辑型 D) 字符型

26. 以下对一维整型数组y的错误定义是( ABC )。 A) int y(10); B) int k=10,y[k];

) C) int k;

D) #define SIZE 8 int y[SIZE];

27. 若已定义:int a[ ]={0,1,2,3,4,5,6,7,8,9}, *p=a,i;其中 0≤i≤9, 则对a数组元素正确的引用是( ABC ) A) a[p-a] B) *(&a[i]) C) p[i] D) a[10]

28. 若a、b、c、d都是int类型变量且初值为0,以下选项中正确的赋值语句是( ABD )。 A) a=b=c=100; B) d++; C) c+b;

D) d=(c=22)-(b++);

29. 设有定义:char p[]={'1', '2', '3'},*q=p; ,以下能计算出一个char型数据所占字节数的表达式是( BD ) A) sizeof(p) B) sizeof(char) C) sizeof(*q) D) sizeof(p[0])

30. 下列选项中,合法的C语言关键字是(BD ) A) VAR B) char C) integer D) default

31. 若变量x、y已正确定义并赋值,以下不正确的表达式是 ( BCD ) A) ++x,y=x-- B) x+1=y

C) x=x+10=x+y D) double(x)/10

32. 以下定义语句中错误的是 (ACD ) A) int a=b=0;

B) char A=65+1,b='b';

C) float a=1,*b=&a,*c=&b; D) double a=0.0;b=1.1;

33. 已定义ch为字符型变量,以下赋值语句中正确的是( CD ) A) ch='\\'; B) ch=62+3; C) ch=NULL; D) ch='\\xaa';

34. 下列选项中,正确的赋值表达式是( BC ) A) (a+b)++

B) n1=(n2=(n3=0)) C) k=i=j D) a=b+c=1

35. 以下叙述中错误的是 ( ABC )

A) C程序中的注释只能出现在程序的开始位置和语句的后面 B) C程序书写格式严格,要求一行内只能写一个语句

C) C程序书写格式自由,一个语句可以写在多行上 D) 用C语言编写的程序只能放在一个程序文件中 36. 指出下面正确的赋值语句( CD ) A) a++ B) a==b; C) a+=b; D) a=1,b=1;

37. 下面正确的字符常量为( BD )。 A) \B) '\\\\' C) 'ab' D) 'u'

38. 若程序中定义了以下函数: double myadd(double a,double b) { return (a+b);}

并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中正确的说明是( BCD )

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); 39. 下选项中是C语句的是( ABD )。 A) {int i; i++; printf(“%d\\n”,i);} B) ;

C) a=5,c=10 D) { ; }

40. 以下叙述中错误的是( ABC )

A) 预处理命令行必须位于源文件的开头 B) 在源文件的一行上只能有一条预处理命令 C) 宏名必须用大写字母表示 D) 宏替换不占有程序的运行时间

41. 设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则能正确执行的语句是( CD )

A) k=*p1+*p2; B) p2=k; C) p1=p2;

D) k=*p1 *(*p2);

42. 以下叙述中正确的是 ( ABD )

A) C程序必须由一个或一个以上的函数组成 B) 函数调用可以作为一个独立的语句存在

C) 若函数有多个返回值,必须通过多个return语句返回 D) 函数形参的值改变也可以传回给对应的实参 43. 设有以下定义

int a=0; int *p=&a; char c='A'; #define d 2

则下面语句中正确的是( AC ) A) a++; B) b++; C) c++; D) d++;

44. 关于形参和实参的说法中,错误的是( ABD )。 A) 形参是虚设的,所以它始终不占存储单元 B) 实参与它所对应的形参占用不同的存储单元 C) 实参与它所对应的形参占用同一个存储单元

D) 实参与它所对应的形参同名时可占用同一个存储单元

45. 若有说明:int n=2,*p=&n,*q=p;,则以下正确的赋值语句是( AB ) A) p=q; B) *p=*q; C) n=*q; D) p=n;

46. 下列错误的C语言标志符的是( ACD )。 A) Aa+ B) __123 C) a*bc D) b&cd

47. 以下叙述中正确的是(BCD )

A) 改变函数形参的值,不会改变对应实参的值 B) 函数可以返回地址值

C) 可以给指针变量赋一个整数作为地址值

D) 当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL 48. 下面正确的转义字符是( BC )。 A) '\\101' B) '\\' C) '\\xaf' D) '\\018'

49. 以下选项中,合法的字符常量是( AD ) A) '\\t' B) '\\18' C) \D) '\\xaa'

50. 下列叙述中错误的是( AC ) A) break语句只能用于switch语句 B) 在switch语句中可以不使用default

C) break语句必须与switch语句中的case配对使用 D) 在switch语句中,不一定使用break语句

51. 下面不能正确进行字符串赋值操作的是( BD )。 A) char s[5]={“ABCDE”};

B) char s[5]={?A?,?B?,?C?,?D?,?E?}; C) char *s; s= “ABCDE”; D) char *s; scanf(“%s”, s);

52. t为int类型,进入下面的循环之前,t的值为0 while( t=l ) { …… }

则以下叙述中正确的是( BD ) A) 循环控制表达式的值为0 B) 循环控制表达式的值为1 C) 循环控制表达式不合法 D) 该循环为死循环

53. 下面正确的字符串常量是( BCD ) A) 'abc'

B) \C) \D) \

54. 若有说明:int a[3][4]; 则不能对a数组元素的正确引用是( ABD )。 A) a[2][4] B) a[1, 3] C) a[1][0] D) a (2)(1)

55. 以下选项中合法的标识符是 ( ABD ) A) print B) FOR C) &a D) _00

56. 以下数组定义中正确的是( ABC ) 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}}; 57. 下列选项中,能用作标识符的是( AC A) _1234_ B) a-2 C) int_2_ D) 2_int_

58. 以下为无限循环的语句或语句组是 ( BD ) A) n=0;

do {++n;} while (n<=0); B) n=0;

while (1) {n++;} C) n=10; while (n); {n--;}

D) for (n=0, i=1; ; i++) n+=i;

59. 以下不能正确定义二维数组的是 ( CD )

A) int a[2][3];

B) int a[][3]={2*3}; C) int a[][3]={};

D) int a[2][3]={{1},{2},{3,4}};

60. 下列标识符中合法的是( BC )。 A) student-name B) _name C) name8 D) 3_DS

61. 以下选项中,合法的常量是( AD ) A) 1.234e04 B) 1.234e0.4 C) e+4

D) 1.234e-2

62. 设有如下程序段 char s[20]=\

) p = s;

则执行p=s;语句后,以下叙述错误的是(BC ) A) 可以用*p表示s[0]

B) s数组中元素的个数和p所指字符串长度相等 C) s和p都是指针变量

D) 数组s中的内容和指针变量p中的内容相同 63. 以下定义语句中错误的是(ABD ) A) char a='A' b='B'; B) float a=b=10.0; C) int a=10,*b=&a; D) float *a,b=&a;

64. 以下合法的用户标识符是 ( ABD ) A) j2_KEY B) Double C) 4d D) _8_

65. 已定义c为字符型变量,则下列语句中错误的是 (BCD ) A) c = '97'; B) c = \C) c = 97; D) c = \

66. 若有以下程序 #include void f(int n); main()

{ void f(int n); f(5); }

void f(int n)

{ printf(\ }

则以下叙述中正确的是( ABD )

A) 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f

B) 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f C) 对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明 D) 函数f无返回值,所以可用void将其类型定义为无值型

67. 若x和y代表整型数,以下表达式中能正确表示数学关系|x-y|<10的是( AD ) A) abs(x-y)<10

B) x-y>-10 && x-y<10 C) !(x-y)<-10 || !(y-x)>10 D) (x-y)*(x-y)<100

68. 若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,能表示a[1]地址的表达式是( AB ) A) p+1 B) a+1 C) a++ D) p[1]

69. 下列函数定义中,完全正确的是( ACD ) A) max(int x, int y, int* z) { *z = x>y?x:y; }

B) int max(int x, y) { int z;

z = x>y?x:y; return z; }

C) max(int x, int y) { int z;

z = x>y?x:y; return(z); }

D) int max(int x, int y) { return (x>y ? x : y); }

70. 请选出可以作为C语言用户标识符的一组标识符号 ( AB )

A) void define WORD B) a3_b3 _123 IF C) for -abc case D) 2a D0 size

71. 对函数嵌套的叙述中,错误的叙述为( ACD )。 A) 函数定义可以嵌套,但函数调用不能嵌套 B) 函数定义不可以嵌套,但函数调用可以嵌套 C) 函数定义和调用均不能嵌套 D) 函数定义和调用均可以嵌套

72. 设有语句:int a=1,b=2,*p1=&a,*p2=&b; 以下不能使指针p1指向变量b的赋值语句是(ABD )。 A) p1=*p2 B) *p1=p2 C) p1=p2 D) *p1=*p2

73. 以下不能正确定义字符串的语句是( AC ) A) char str[]={'\\064'}; B) char str[]=\C) char str=''; D) char str[]=\

74. 判断字符串s1是否大于字符串s2,不能达到目的的是( ABC ) A) if (s1>s2)

B) if (strcmp (s1, s2)) C) if (strcmp (s2, s1)>0) D) if (strcmp (s1, s2)>0)

75. 若变量已正确定义并赋值,下面不符合C语言语法的表达式是( AD ) A) a:=b+1 B) a=b=c+2 C) (int)18.5%3 D) a=a+7=c+b

76. 下列语句中不符合C语言语法的赋值语句是( ACD )。 A) x=(3+b,z)=x+3; B) x=7+y,y++,z++; C) x=y+2=x+y+z; D) x=3+y++=x+3;

77. 设c1,c2均是char类型变量,则以下正确的函数调用为( AD )。 A) printf(\B) getchar(c1); C) putchar(\D) putchar(c1);

78. 以下所列的C语言常量中,正确的是( AC ) A) 0xFF B) 1.2e0.5 C) 2L D) '\\72'

79. 下列选项中错误的语句是( AC ) A) char s[8];s={\; B) char s[8]={\; C) char s[8]=\; D) char *s;s =\;

80. 若已定义的函数有返回值,则以下关于该函数调用的叙述中正确的是( ABC A) 函数调用可以作为独立的语句存在 B) 函数调用可以作为一个函数的实参 C) 函数调用可以出现在表达式中 D) 函数调用可以作为一个函数的形参

81. 已知ch是字符型变量,下面错误的赋值语句是(AD )。 A) ch=”\\”; B) ch=?\\xff?; C) ch=?123?; D) ch=?\\08?;

82. 下面各语句行中,不能正确进行赋字符串操作的语句行是( BD ) A) char st[]={\

B) char s[5]={'A','B','C','D','E'}; C) char *s; s=\D) char *s; scanf(\

83. 以下正确的定义语句是( AB ) A) int x[][3]={{0}, {1}, {1, 2, 3}};

B) int x[4][3]={{1, 2, 3}, {1, 2, 3}, {1, 2, 3}, {1, 2, 3}}; C) int x[4][]={{1, 2, 3}, {1, 2, 3}, {1, 2, 3}, {1, 2, 3}}; D) int x[][3]={1, 2, 3, 4};

84. 以下数组定义中正确的是( ACD ) A) int x[][3]={0};

B) int x[2][3]={{1,2},{3,4},{5,6}}; C) int x[][3]={{1,2,3},{4,5,6}}; D) int x[2][3]={1,2,3,4,5,6};

85. 以下叙述中正确的是( ABD ) A) C语言是一种结构化程序设计语言

B) 结构化程序由顺序、分支、循环三种基本结构组成 C) 使用三种基本结构构成的程序只能解决简单问题 D) 结构化程序设计提倡模块化的设计方法

)

本文来源:https://www.bwwdw.com/article/bd1g.html

Top