C语言复习题 联系客服

发布时间 : 星期一 文章C语言复习题更新完毕开始阅读69ffcb4d59eef8c75fbfb3eb

判断题

1. 函数若无返回值,则它一定无形参。×

2. 在 C 程序中 , 函数既可以嵌套定义 , 也可以嵌套调用。× 3. C程序总是从main( ) 函数的第一条语句开始执行的。√ 4. 同一函数内可以有多个return语句。√

5. main函数中的变量名不可以与其它函数相同。×

6. C程序可由多个函数组成,但必须有并且只有一个主函数main。√

7. 在C语言中的每个函数必须要有一个明确的return语句才能返回调用程序。× 8. 主函数中定义的变量的作用域仅限于主函数内。√

9. 传值调用的形参只有在被调用时,才被创建(分配存储单元)。√ 10. C程序执行总是从第一个函数开始。×

11. 一个C程序的执行总是从该程序的main函数开始,在main函数最后结束。× 12. 被main函数调用的函数只能是库函数。×

13. 函数说明指的是在程序中设定一个函数模块。×

14. 在C程序中,若对函数类型未加说明,则函数的隐含类型为void。× 15. 形参可以是常量、变量或表达式。× 16. 函数调用可以作为一个函数的形参。×

17. C语言规定,实参应与其对应的形参类型一致。√ 18. 定义函数时,形参的类型说明可以放在函数体内。×

19. 一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据。√ 20. 全局变量可以被任何一个函数中的任何一个表达式使用。×因为局部变量和全局变量重

名的时候全局变量就不能使用了 21. 函数的隐含存储类型是extern。√

22. 定义在main函数后的任何函数都需在main中进行函数声明。× 23. a是一维数组名,数组元素a[1]还可以写作“*(a++)”。× 24. C语言中数组名是指针常量。√

25. 构成数组的各个元素必须具有相同的类型。√ 26. 数组元素的下标可以选用正整数或正实数。× 27. 数组名可以作为参数进行传递。√

28. 若有定义“int a[4][5];”,则在数组元素a[3][3]前有12个元素。× 29. 若有定义int a[3][4];则共有12个元素,最后一个元素是a[3][4]。× 30. 字符数组中字符串可以整体输入输出。√

31. 若有定义语句“char s1[ ]=\,s2[ ]={'a','b','c'};”,则数组s1和数组s2均有3个元

素。×

32. 若a为一维数组名,则*(a+i)与a[i]等价。√

33. 函数原型为“void sort(float a[],int n)”,调用该函数时,形参数组a被创建,实参数组各34. 35. 36. 37. 38. 39. 40.

元素的值被复制到a数组各元素中。×

C允许对数组的大小作动态定义,即可用变量定义数组的大小。× 数组定义 int a[10]; 也可以写成 int a(10); 。×

在对全部数组元素赋初值时,可以不指定数组长度。√ 定义s为5×6(5行6列)的数组可写成 float a[5,6]; ×

数组定义 int a[10]; 表示数组名为a,此数组有10个元素,第10个元素为a[10]。× static char c[]={'a' ,' ','b','o','o','k','\\0'};与 static char c[]={'a' ,' ' ,'b','o','o','k'}; 等价。×

设已有说明:static char c1[10],c2[10]; 下面程序片段是合法的。c1={“book”}; c2=c1; ×

41. 调用函数时,实参为数组名,则向数组传递的是数组的首地址。√ 42. puts()函数的作用是接收从键盘输入的字符串。×

43. 两个字符串所包含的字符个数相同时,才能进行字符串的比较。× 44. 若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维大小是3。√ 45. 在C语言中,数组下标从1开始。×

46. 若有说明:int a[ ][4]={{0},{0}};则二维数组a的第一维大小为1。×

47. 在C语言中,数组名是一个不可改变的地址常量,不能对它进行赋值运算。√ 48. 若有说明:int a[3][4]={0},则只有元素a[0][0]可得到初值0。× 49. 字符串作为一维数组存放在内存中。√

50. 若有形参定义:int a[10];则a++是合法的表达式。×

51. 定义数组可以采取以下形式: int a[5]; a[1]=1;a[2]=3;a[3]=6;a[4]=7;a[5]=9; ×

52. 设char x[]=”1234”,y[]={?1?,?2?,?3?,?4?,?\\0?};那么x数组的长度等于y数组的长度。√ 53. ?a?和“a”在内存中所占字节相同。×

54. C语言的编译系统对宏命令的处理是在C源程序编译阶段完成的。× 55. 预处理命令如:#include 不属于c语言的一部分。×

56. 若有宏定义:#define M(x,y,z) x*y+z 则宏引用M(2+3,4+5,6+7) 通过宏展开后的表达式应为(2+3)*(4+5)+(6+7)。×

57. C语言中的宏定义允许嵌套定义,也允许带参数。√

58. 宏替换时先求出实参表达式的值,然后代入形参运算求值。× 59. 使用带参数的宏时,参数的类型应与宏定义时的一致。×

60. 若有宏定义:#define PI 3.14i5926,则系统预编译时会报错。√

61. 已知宏定义 #define SQ(x) x*x,执行语句 printf(“10/SQ(3)=%d\;后的输出结

果是10/3*3=1。×

62. 形参为指针变量时,实参必须是数组名。×

63. 若有定义:int a[5],*p;,使p指向最后一个数组元素a[4]的语句是p=a+4;。√ 64. 已有定义:int a[5]={1,2,3,4,5},*s=a;,则表达式*(s+3)的值是3。×

65. 若有定义:int a[5]={10,20,30,40,50},*p=a,*s=a+2;,表达式s-p的值是2。√ 66. 在int *p;和语句printf(“%d”, *p);中的*p含义相同。× 67. 设有说明int(*ptr)(int);,则ptr是一个函数名。×

68. 位运算赋值有6个,但位运算组成复合的赋值运算符只有5个。√ 69. 说明:char s[]=“world”,*p;,执行语句 p=s后,*(p+5)的值是?d?。(*(p+4)的值是?d?) × 70. 结构体类型中各成员项的数据类型可以不同。√

71. 在程序中定义了一个结构体类型,将为此类型分配存储空间。×

72. 在说明一个结构体变量时系统分配给它的存储空间是该结构体中所有成员所需存储空

间的总和。√

73. 若打开文件的方式为“w”而该文件已经存在,则文件中原有数据被清空。√ 74. 若用fopen( )函数打开一个已存在的文本文件,保留该文件原有数据且可以读也可以写,

则文件的打开模式是“r+”。√

75. C文件使用前需要打开,使用后需要关闭。√

76. 对文件进行操作的一般步骤包括:打开/建立要操作的文件;对文件进行读写等操作;

关闭被操作的文件。√

77. 若fp已正确定义并指向某文件,当未遇到该文件结束标志时函数feof(fp)的值为1(为

非零值)。×

78. 文件由二进制数据序列组成,C语言只能读写二进制文件。×

79. feof函数只能对二进制文件进行判定。× 80. 利用fclose函数关闭已打开的文件。√ 选择题

1. 下列叙述中,正确的叙述项是( B )。

A.定义函数时,必须要有形参

B.函数中可以没有return语句,也可以有多条return语句 C.函数f可以用f(f(x))形式调用,这种调用形式是递归调用 D.函数必须有返回值

2. 下列叙述中,不正确的叙述项是( D )。

A.函数调用时,形参变量只有在被调用时才被创建(分配存储单元) 错误!未指定书签。B.函数调用时,实参可以是常量、变量或表达式 C.定义变量时,省略对变量的存储类别定义,则变量是自动型变量 D.语句return(a,b);则函数可以返回两个值

3. 传值调用的特点是( B )。

A.实参传给形参变量的数据是地址

B.在函数中形参变量值改变后,不改变实参变量的值 C.在函数中形参变量值改变后,实参变量的值随之也改变 D.实参必须是变量

4. 如果在函数中定义一个变量,有关该变量作用域正确的是( A )。

A.只在该函数中有效 B.在该文件中有效 C.在本程序中有效 D.为非法变量

5. 根据下面函数print的定义,选出调用函数print(5378)的值是( A )。

void print(long n)

{ if (n==0) return ; else{

print(n/10);

printf(\ d\ return ; } }

A.5 3 7 8 B.8 7 3 5 C.3 5 7 8 D.8 7 5 3

6. 根据下面函数f,选出f(f(3))的值是( C )。

int f(int x)

{ static int k=0; x=x+k;

k--; return x; } A.5 B.3 C.2 D.4

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

A.C程序总是从第一个函数开始执行 B.C程序中,函数最多不能超过2个 C.C程序总是从main()函数开始执行

D.C程序的main()函数必须放在程序的最前面 8. 以下函数调用语句中实参的个数为( D )。 aver((v1,v2),(v3,v4,v5),v6);

A.6 B.5 C.4 D.3

9. 下列程序的输出结果是( D )。 fun(int a, int b, int c) { c =a*b; } main( ) { int c;

fun(2,3,c);

printf(\}

A.0 B.1 C.6 D.无法确定 10. 执行下列程序后的输出结果是( A )。 #include char f(char s[],int n) { return (s[n]); } main()

{ char a[]=\ printf(\}

A.D B.C C.B D.A 11. 对于以下递归函数f( ),调用f(4),其返回值为( A )。

int f(int n)

{ if(n) return f(n-1)+n;

else return n; }

A. 10 B. 4 C. 0 D.以上均不是 12. 下列能正确定义一维数组a的语句是( D )。

A.int a(10); B.int n=10,a[n]; C.int n;scanf(\,&n); D.#define n 10

int a[n]; int a[n];

13. 若有定义语句“int a[10];”则下列对a中数组元素正确引用的是( A )。

A.a[10/2–5] B.a[10] C.a[4.5] D.a(1)

14. 能对一维数组正确初始化的语句是( A )。

A.int a[6]={6*1} B.int a[6]={1,,,3} C.int a[6]={} D.int a[6]=(0,0,0)

15. 以下能正确定义二维数组的语句为( D )。

A.int a[][]; B.int a[][4]; C.int a[3][]; D.int a[3][4];

16. 若有数组定义语句“int a[4][5];”,则对a中数组元素的正确引用是( D )。

A.a[4][1] B.a[2,1] C.a[4][5] D.a[4–1][5–5]

17. 下列各语句定义数组,其中不正确的是( C )。

A.char a[3][10]={\.int x[2][2]={1,2};

C.float x[2][]={1,2,4,6,8,10}; D.int m[][3]={1,2,3,4,5,6}; 18. 数组定义为int a[3][2]= {1,2,3,4,5,6},下列表述中正确的是( D )。 A.a[3][2]的值为6 B.a[6]的值为6 C.a[0]的值为1 D.a[2][1] 的值为6 19. 以下能对二维数组a进行正确初始化的语句为( D )。

A.int a[2][]={{1},{4,5}}; B.int a[2][3]={1,2,3,4,5,6,7};