C语言程序设计

更新时间:2023-03-08 09:07:01 阅读量: 综合文库 文档下载

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

《C语言程序设计》试卷(答案)

一、填空题(共12小题,每空1分,本题共25分)

1. C程序是由函数构成的,一个C源程序至少包含一个(main函数),函数是C程序的基本单位。

2. C语言源程序文件名的后缀是.C;经过编译后,生成文件的后缀是.obj;经过连接后,生成文件的后缀是.exe。

3. C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。

4. 1111(2)=F(16)=15(10 )

5. 两个整数相除的结果为整数,5/3的结果为1,-5/3的结果为-1。

6.算术运算符的结合方向为自左至右;“++”与“――”的结合方向为自右至左。 7. 若K为int型变量且赋值11,请写出运算K++后表达式的值11,变量K的值12。 8. 结构化程序的三种基本结构:顺序结构,选择结构,循环结构。

9. “&&” 与“Ⅱ”均为双目运算符;“!”为一目运算符;条件运算符为三目运算符(选填一目、双目、三目)。

10. C语言提供的构造类型数据有数组类型、结构体类型、共用体类型。 11. 函数的返回值通过函数中的return语句获得。

12. 从变量的作用域分,变量可分为全局变量和局部变量;从变量值存在的时间看, 可以分为静态存储方式和动态存储方式。

二、选择题(共12小题,每题2分,本题共24分) 1.以下选项中正确的整型常量是(B)

A)12. B)-20 C)1,000 D)4.56 2.以下程序中不合法的用户标识符是(C) A)_123 B)printf C)A$ D)Dim

3.若变量已经正确定义并赋值,符合C语言语法规定的表达式是(B ) A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b; 4.合法的C语言的赋值语句是(D)

A)a=b=58 B)k=int(a+b); C)a=58,b=58 D)--i;

5.若变量已经正确定义为int型,要给a,b,c输入数据,正确的输入语句是(D) A)read(a,b,c);

B)scanf(“%d%d%d”,a,b,c) C)scanf(“%D%D%D”,&a,%b,%c); D) scanf(“%d%d%d”,&a,&b,&c); 6.下列运算符中优先级最高的是(A) A)! B)% C)-= D)&&

7.为表示关系: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) 8.以下叙述中正确的是(D)

A)do-while语句构成的循环不能用其他语句构成的循环来代替 B)do-while语句构成的循环只能用break语句退出

C)用do-while语句构成的循环时,只有在while后的表达式为非零时结束循环 D)用do-while语句构成的循环时,只有在while后的表达式为零时结束循环

9.C语言中,字符(char)型数据在微机内存中的存储形式是(D) A)反码 B)补码 C)EBCDIC码 D)ASCⅡ码 10.设有定义语句:char a=’\\72’;则变量a(A)

A)包含一个字符 B)包含2个字符 C)包含3个字符 D)定义不合法

11. 若有定义:double W[10]; 则W数组元素的下标的上限是(A),下限是(A)。 A) 9, 0 B) 10, 0 C) 10,1 D) 9,1 12.以下叙述中正确的是(C)

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

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

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

三、综合题:(共5小题,1—3题每题5分,4、5题每题8分,本题共31分) 1.找出下列程序中的错误,并改正。 Void main () { int a,b; long c,d; float e,f;

scanf(“=%f%d%ld%f%5.1f”,a,b,c,d,e,f); printf(“a=%d,b=%d,c=%d,e=%d\\n”,a,b,c,e); }

改正:Void main () { int a,b; long c,d; float e,f;

scanf(“=%d%ld%ld%f%f”,a,b,c,d,e,f);

printf(“a=%d,b=%d,c=%ld,e=%5.1f\\n”,a,b,c,e);

2.找出下列程序中的错误,改正后写出程序运行的结果 Void main ()

{ int x,y=z=5,aver; x=7;

AVER=(x+y+z)/3;

printf(“AVER=%d\\n”aver); }

改正:Void main () { int x, y=5,z=5, aver; x=7;

aver=(x+y+z)/3;

printf(“AVER=%d\\n”aver); }

程序运行结果为:AVER=5

3. 写出程序运行结果

Void main () { int i,j,m,n; i=8; j=10; m=++i; n=j++;

printf(“%d,%d,%d,%d”,i,j,m,n); }

程序运行结果为:9,11,9,10

4.分析以下程序的作用 Void main ()

{ putchar(getchar()-32);}

若运行时从键盘输入小写字母a,则输出什么?

答:(1)程序的作用是将从键盘输入的小写字母转换为大写字母输出 (2)将输出大写字母A。

5.(1)条件表达式x>=0?x:-x的功能是什么?

(2)用一个条件表达式描述:从a,b,c中找出最大者赋给max。

答:(1)求x的绝对值,相当于函数fabs的功能。 (2)max=(a>b?a:b)>c?(a>b?a:b):c

四、编程题(共3小题,第1、2题每题6分,第3题8分,本题共20分) 1、输入圆的半径,输出其周长和面积。

2、按照公式S=1+2+3+------+100,求出S的值。

3、用如下4*4矩阵初始化数组a【4】【4】,求出其转置矩阵并且输出。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

第一部分 判断题

1.对于int n=3;执行n+=n-=n*n;后n的值是9。( ) 提示 正确答案为×

2.在C语言中,定义int a=b=c=5;是错的,而int a,b,c; a=b=c=5;是正确的.( ) 提示 正确答案为√

3. 若有定义int a=3,b=4,c=5; 则a+b>c&&b==c的值为1。( ) 提示 正确答案为× 4. int x=3,y=2; 则表达式(y++==--x)?y++:x++的值为3。( ) 提示 正确答案为√

5. 在C语言中,不同类型的数据不可以在一起进行算术运算。( ) 提示 正确答案为×

6. 由于计算机的计算精度很高,所以在C语言中程序计算1.0/3*3的结果肯定等于1。( ) 提示 正确答案为×

7. 当一个C语言表达式中同时含有字符型、整型、单精度和双精度类型数据参加运算时,按照\由低到高\的原则,所有的数据都必须先转换为双精度类型数据后方能参加运算。( ) 提示 正确答案为×

8. C语言与其他高级语言一样,对于所有的同级运算符均遵循左结合原则。( ) 提示 正确答案为×

9. 如果被定义函数的返回值类型是整型或字符型,使用前可以不必进行说明。( ) 提示 正确答案为√

10. 若x为整型变量、j为实型变量,当执行语句:x=(int)j;后,j也变为整型变量。( ) 提示 正确答案为×

11. 赋值运算符优先于条件运算符.( ) 提示 正确答案为× 12. “!”的优先级可以比“/”高。( ) 提示 正确答案为√

13. 两个char 型数据相加,其结果为char型。( ) 提示 正确答案为×

14. 若有定义int a; float b=2.1; 则a=int(b+3)是合法的赋值表达式。( ) 提示 正确答案为× 15. 若有int a=4,b=0;则表达式a&&!b的值为0。( ) 提示 正确答案为√ 16. C语言程序中,任何英语单词均可以作标识符。( ) 提示 正确答案为× 17. 在C语言的源程序中,注释使用越多,编译之后的可执行程序的执行效率越低。( ) 提示 正确答案为×

18. 当主程序执行完毕时,亦即程序执行完毕。 ( ) 提示 正确答案为√ 19. C程序有且仅有一个main()函数。 ( ) 提示 正确答案为√ 20. C语言中不区分大小写英文字母。 ( ) 提示 正确答案为×

21. 用C语言编写的程序是一种需要经过编译和连接才能运行的程序。( ) 提示 正确答案为√

22. 格式字符%md中的m不能为负。( ) 提示 正确答案为×

23. 实际上,可以用顺序、分支、循环三种结构构造任何算法。( ) 提示 正确答案为√ 24. 在C语言中,任何一个表达式的最后加上一个分号就构成一个合法的语句。( ) 提示 正确答案为√

25. 下面程序执行结果是32768。( ) main( ) {int a,b;

printf(\提示 正确答案为×

26. continue 语句可以用于switch结构中。( ) 提示 正确答案为× 27. break语句只能用于循环语句中。( ) 提示 正确答案为×

28. do......while循环语句至少要执行一次循环体。 提示 正确答案为√

29. 语句for(; ; ) {循环体} 和 while(1) {循环体}是等价的。( ) 提示 正确答案为√

30. 在C语言中,for语句既可以用于计数类型循环又可以用于条件类型循环。( ) 提示 正确答案为√

31. 在if...else语句中,else总是和它上面最近且未曾配对的if配对。( ) 提示 正确答案为√

32. 在if(<表达式>) <语句序列1> else<语句序列2>中的语句序列1和语句序列2可以为复合语句。( ) 提示 正确答案为√

33. C语言在判断一个量是否为真时,以非0值代表“真”,以0值代表“假”。( ) 提示 正确答案为√

34. C语言预编译命令#include与#include\的功能是完全一样的。( ) 提示 正确答案为×

35. 宏定义不是C语句,不必在行末加分号。( ) 提示 正确答案为√

36. C语言的编译系统对宏命令的处理是在对源程序中其他成份正式编译之前进行的。( ) 提示 正确答案为√

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

38. 在函数定义中,形参变量有时也可以是全局变量。( ) 提示 正确答案为× 39. 在C程序中,函数调用可以作为函数的形参。 提示 正确答案为× 40. 在C程序中,函数调用可以作为函数的实参。 提示 正确答案为√

41. 在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是指针类型。 提示 正确答案为×

42. 对任一变量一旦被指定为某一确定类型后,该变量在程序运行时所占存储空间的多少和所能参加的运算类型便已确定了。( ) 提示 正确答案为√ 43. C语言程序必须包含库函数。( ) 提示 正确答案为×

44. 如果被定义函数的返回值是整型,可以不必进行说明。( ) 提示 正确答案为√

45. 一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量。( ) 提示 正确答案为√

46. return语句可以带有表达式也可以不带。( ) 提示 正确答案为√

47. 若某自定义函数中无return语句,则该函数一定没有返回值。 提示 正确答案为× 48. 在C语言中,变量的初始化都是在编译阶段完成的。 提示 正确答案为×

49. 在同一源文件中,全局变量与局部变量同名,在局部变量作用范围内,全局变量的值等于局部变量的值。 提示 正确答案为×

50. C语言中,任意两个函数间不能嵌套定义,但可以互相调用。( ) 提示 正确答案为× 51. 在函数的定义中,若函数没有参数,则可以省略函数名后的括号。 提示 正确答案为× 52. 函数返回值的数据类型取决于return语句中表达式的数据类型。 提示 正确答案为× 53. 函数返回值的数据类型取决于主调函数传递过来的实参的数据类型。 提示 正确答案为×

54. 函数返回值的数据类型取决于函数定义时为函数指定的数据类型。 提示 正确答案为√ 55. 在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是地址量。 提示 正确答案为√

56. C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是整个数组。 提示 正确答案为× 57. C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首元素值。 提示 正确答案为× 58. C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首地址值。 提示 正确答案为√

59. 求n!既可以用递归的方式,也可以用递推的方式。 ( ) 提示 正确答案为√ 60. 在C语言中,所有函数之间都可以相互调用。 提示 正确答案为×

61. 一个C程序无论有多少个源程序文件组成,在其中一个源程序文件中定义的全局变量的作用域默认为整个C程序。 提示 正确答案为×

62. 一个C程序无论有多少个源程序文件组成,在其中一个源程序文件中定义的全局变量的作用域默认为其所在的源程序文件。

提示 正确答案为√

63. 在C程序的主函数main中定义的变量就是全局变量。 提示 正确答案为× 64. 在C程序的主函数main中定义的变量也是局部变量。 提示 正确答案为√ 65. 在函数定义中,形参变量是局部变量。 提示 正确答案为√ 66. 在函数定义中,形参变量可以是静态变量。 提示 正确答案为× 67. 在一个函数定义中,只能有一个return语句。 提示 正确答案为×

68. 在一个函数定义中,可以根据需要使用多个return语句。 提示 正确答案为√ 69. 在C程序中,函数可以嵌套定义,也可以嵌套调用。 提示 正确答案为× 70. 在C程序中,函数不能嵌套定义,但可以嵌套调用。 提示 正确答案为√ 71. 在C程序中,函数调用只能作为单独语句出现。 提示 正确答案为× 72. 在C程序中,函数调用只能出现在表达式语句中。 提示 正确答案为× 73. 在C程序中,函数调用既可以出现在表达式语句中,也可以作为单独的语句出现。 提示 正确答案为√

74. 在C函数中,形参可以是变量、常量或表达式。 提示 正确答案为× 75. 在C程序中,实参可以是变量、常量或表达式。 提示 正确答案为√

76. C语言规定,函数调用时,若形参和实参都是简单变量,则它们之间的数据传递方式是双向值传递。 提示 正确答案为×

77. C语言规定,函数调用时,若形参和实参都是简单变量,则它们之间的数据传递方式是单向值传递。

提示 正确答案为√

78. 若有定义:long int j, *p;,则操作j=(long int)p;是合法操作。 提示 正确答案为√

79. 设有说明int (*ptr)[M]; 其中ptr是指向含有M个整型元素的一维数组的指针。( ) 提示 正确答案为√

80. 对同一类型的两个指针变量而言,一个变量向另外一个变量赋值的结果是使得两个指针指向同一个对象。 提示 正确答案为√

81. 定义一个指向某种类型函数的指针后,就可以讲任何函数的首地址赋给这个指针变量。 提示 正确答案为×

82. 由于指针的数据类型实际上是指定指针所能指向对象的数据类型,所以不通数据类型的指针变量不能相互赋值。 提示 正确答案为√

83. 函数中使用指针变量作为形式参数,就有可能在被调函数中操作主调函数中的实参。 提示 正确答案为√

84. 若有定义:int a[5],*p;,则操作p=a;是合法的操作。 提示 正确答案为√ 85. 若有定义:int a[5],*p;,则操作p=&a[2];是合法的操作。 提示 正确答案为√ 86. 若有定义:int a[5][5],*p;,则操作p=a;是合法操作。 提示 正确答案为× 87. 若有定义:int a[5][5],*p;,则操作p=*a;是合法操作。 提示 正确答案为√ 88. 若有定义:int a[5][5],*p;,则操作p=a[0];是合法操作。 提示 正确答案为√ 89. 若有定义:int a[5][5],*p;,则操作p=&a[0][0];是合法操作。 提示 正确答案为√ 90. 若有定义:int a[5][5], (*p)[5];,则操作p=a;是合法操作。 提示 正确答案为√ 91. 若有定义:int a[5][5], (*p)[5];,则操作p=*a;是合法操作。 提示 正确答案为× 92. 若有定义:int a[5][5], (*p)[5];,则操作p=a[0];是合法操作。 提示 正确答案为× 93. 若有定义:int a[5][5], (*p)[5];,则操作p=&a[0][0];是合法操作。 提示 正确答案为× 94. 若有定义:double (*dd)[10];则dd是一个指向具有10个元素的double型数组的指针变量。 提示 正确答案为√

95. 如果指针占用的内存大小为2Byte,那么指向它的二重指针占用内存大小为4Byte。( ) 提示 正确答案为×

96. 指针变量的值是无符号整型值,所以指针变量都是整型变量。 提示 正确答案为× 97. 凡是整型变量可以参加的运算,指针变量都可以参加。 提示 正确答案为×

98. 对于指向同一个数组的两个变量而言,两个指针变量相减的操作是有意义的。 提示 正确答案为√

99. 若有定义:long int j, *p;,则操作p=j;是合法操作。 提示 正确答案为×

100. 指针变量的类型确定了该指针能够指向的对象的数据类型。 提示 正确答案为√

一、单项选择题(本大题共20题,每题2分,共40分) 1.以下不是C语言的特点的是() A、C语言简洁、紧凑 B、能够编制出功能复杂的程序

C、C语言可以直接对硬件进行操作 D、C语言移植性好 2.以下不正确的C语言标识符是() A、ABC B、abc C、a_bc D、ab.c 3.一个C语言程序是由()

A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成

4.一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是()

A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性

5.设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为() A、int B、float C、double D、不确定 6.在C语言中,char型数据在内存中的存储形式是() A、补码 B、反码 C、源码 D、ASCII码

7.有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是()。

#include main(){ intx; floaty;

scanf(\ }

A、12345 B、123 C、45 D、345 8.若有以下定义inta,b;floatx,则正确的赋值语句是() A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9.以下程序的执行结果是() #include {

inti=10,j=10;

printf(\ }

A、11,10 B、9,10 C、11,9 D、10,910.巳知字母A的ASCII

码是65,以下程序的执行结果是() #include main() {

charc1='A',c2='Y';

printf(\ A、A,Y B、65,65 C、65,90 D、65,89 11.下列运算符中优先级最高的是() A、< B、十 C、% D、!=

12.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是()。

A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z||1)

13.判断char型变量cl是否为小写字母的正确表达式为() A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z)

C、(‘a’>=c1)(‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14.字符串\在内存中占据的字节个数为() A、0 B、1 C、2 D、3 15.下面有关for循环的正确描述是()

A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体

D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16.下面程序的运行结果是() #include main() {intnum=0; while(num<=2) {num++;

printf(“%d,num); } }

A、1 B、12 C、123 D、1234 17.以下描述正确的是()

A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。

B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。

C、在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。

D、do-while循环中,根据情况可以省略while。 18.以下对一维整形数组a的正确说明是() A、inta(10); B、intn=10,a[n];

C、intn; D、inta[10];scanf(“%d”,&n);inta[n]; 19.以下对二维数组a的正确说明是() A、inta[3][]; B、floata(3,4); C、doublea[1][4]; D、floata(3)(4);

20.若二维数组a有m列,则在a[j]前面的元素个数为() A、j*m+i B、i*m+j C、i*m+j-1 D、i*m+j+1

二、填空题(本大题共10空,每空2分,共20分)

1、结构化设计中的三种基本结构是 顺序结构分支结构循环结构。

2、在C语言中的实型变量分为两种类型,它们是单精度型和 双精度型 3、当a=5,b=4,c=2时,表达式a>b!=c的值是 1 4、下列程序运行后的输出结果是_ #include

main()

* {

** inti,j;

*** for(i=4;i>=1;i--)

**** {printf(\

for(j=1;j<=4-i;j++) printf(\ printf(\ }

5、若有定义:inta[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是_0_a[2][1]得到的初值是_6

6、在C语言中,二维数组元素的内存中的存放顺序是_按行主顺序存放

16. 以下对二维数组a的正确说明是_________。. A. int a[3][]; B. float a[][4]; C. double a[3][4]; D. float a(3)(4);

17.设char s[10]= \,则s和t在内存中分配的字节数分别是_______。

A.6和5 B. 6和6 C. 10和5 D. 10和6

18. switch(表达式)语句中的“表达式”,允许的类型是_________。 A.float, int B.float, int, char C. int, char D. char, double

19. 在C语言中,形参的隐含存储类别是_________。 A. auto B. static C. extern D. register 20. 下列属于文件包含的命令是_________。 A. #define N 25 B. #endif C. #include \ D. #else 21. 设int i,j;

for(i=5;i;i--)

for(j=0;j<4;j++) {?}

则循环体执行次数是________。 A. 5 B.4 C. 20 D.无限次 22.若有以下定义和语句:

char strl[]=\

则用以复制字符串的正确方法是_______。 A. strcpy(str2,\ B. strcpy(strl,\ C. str2=str1; D. str1=\

23.正确的变量定义是________。 A. unsigned long d=1000; B. float m1=m2=10.0; C. char c1='A',c2=A;

D. double x=0.618,x=3.14;

24.下面程序的输出结果是_______。 #include void main() { int s,k;

for(s=1,k=2;k<5;k++) s+=k;

printf(\ }

A. 1 B. 9 C. 10 D. 15 25.下列描述中不正确的是_______。 A. 字符型数组中可以存放字符串

B. 可以对字符型数组进行整体输入、输出 C. 可以对实型数组进行整体输入、输出

D. 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值

二、填空题(本题共10小题,每小题2分,共20分) 请在每小题空格中填上正确答案.错填、不填均无分。 26. 一个C语言程序的执行起点是___________。

27. 设int x=3,y=5; 则执行printf(\后输出_____。 28.定出公式对应的C语言表达式______。

29. 若函数调用语句为f(a,b,f(a+b,a-b,b));,则函数f的参数个数是_______。 30. 设int a=2;,则执行a+=a*=15;后,变量a的值是_______。 31. 设double y[4][5];,则数组y中元素的个数是_______。 32. 设int x=7,y=3,则表达式x%y+x/y的值是________。

33. 设char s[ ]={\,则执行printf(\后输出的值是_____。

34. 当执行下面程序段后,变量i的值是____________。

int a,b,c,d,i,j,k;

a=10; b=c=d=5; i=j=k=0; for( ; a>b; ++b) i++; while(a>++c) j++; do k++; while(a>d++);

35.设int a[3][4]={{1,2,5,3},{2,4,7,9},{3,6,5,8}};则表达式a[1][2]+a[2][3]的值是________。

三、程序分析题(本题共5小题,每小题2分,共10分) 36.写出下面程序的运行结果。 #include void main() {

int x=15; while(x<20) { x++;

if(x/3!=0) {x++;break;} else continue; }

printf(\}

37. 写出下面程序的运行结果。 #include void inv (int x[ ], int n) {int t,i,j;

for (i=0; i

t=x[i]; x[i]=x[j]; x[j]=t;} }

void main()

{int i,a[5]={3,7,9,11,0}; inv(a,5);

for(i=0;i<5;i++)

printf(\ printf(\}

38. 写出下面程序的运行结果。(程序运行时,输入一个整数5) #include void main() {

int a,b[10],c,i=0;

printf(\输入一个整数\\n\

scanf(\ while(a!=0) { c=a%2; a=a/2; b[i]=c; i++; }

for(;i>0;i--) printf(\}

39. 写出下面程序的运行结果。 #include void main() {

int a,b,i; a=b=0;

for(i=0;i<=10;i+=2) { a+=i; b+=i+1; }

printf(\ printf(\}

40. 写出下面程序的运行结果。 #include int a=100; s()

{ static int a =20; a++;

printf(\}

void main() {

int i;

for(i=1;i<=3;i++) { a++;

printf(\ s(); } }

四、程序填充题(本题共2小题,每个空格2分,共10分) 给出下列程序,将横线处缺少的部分补上,使其能正确运行。

41. 对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。 #include

#define _____________ /* 空格1 */ void main() {

int i,a[N];

for(i=N-1;________;i--) /* 空格2 */ scanf(\ /* 空格3 */ for(i=0;i

42.学生成绩的字每等级和分数范围如下: 字母等级 分数范圈 A 90~100 B 80~89 C 70~79 D 60~69 E 0~59 其它字母 输入错误

输入字母等级之后,输出相应的分数范围。 #include void main() {

__________; /* 空格4 */ scanf(\ switch(score) {

case 'A': printf(\ case 'B': printf(\ case 'C': printf(\ case 'D': printf(\ case 'E': printf(\

__________: printf(\输入错误\\n\ /* 空格5 */ } }

五、程序修改题(本题共2小题,共10分)

请在注释“ERROR”处修改程序中的错误,使它能得出正确的结果。注意:不要改动main 函数,不得增行或删行,也不得更改程序结构! 43.用指针变量输出数值。 #include void main() {

int a[ ]={1,2,3,4,5,6,7,8,9,10},*p;

*p=a; /* ERROR1 */ printf(\ /* ERROR2 */ }

44.利用函数求两个整数的最大公约数。 #include void main()

{ int gcd(int a, int b); int a,b,abd;

printf(\

scanf(\ abd=gcd(a,b);

printf(\}

int gcd(int x,int y); { int t;

if(x

{ t=x%y;x=y;x=t;} return x; }

参考答案: ==========

一、单项选择题 1.A 2.D 3. B 4. C 10.B 11.B 12.C 17.D 18.C

/* ERROR3 */ /* ERROR4 */ /* ERROR5 */ 5.B 6.A 7.B 13.B 14.C 8.A 9.B

15.C 16.C

19.A 20.C 21.C 22.B 23.A 24.C 25.C

二、填空题 26. 主函数 27. 1

28. 1.0/2*(x+sqrt(x+y)/(5*x)) 29. 3 30. 60 31. 20 32. 3 33. 6 34. 5 35. 15

三、程序分析题 36. 17

37. 0 11 9 7 3 38. 101 39. a=30 B=25 40. 10121 10222 10323

四、程序填充题 41. N 10、 i>=0、 &a[i] 42. char score、 default 五、程序修改题

43. *p=a; p=a; %f %d

44. scanf(\ scanf(\ int gcd(int x,int y); int gcd(int x,int y) x=t y=t

1.完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( D ) A.连接、编译 B. 连接、运行 C. 编译、运行 D. 编译、连接 2.下列说法正确的是( B )

A.一个c语言程序并非总是从主函数位置开始执行的 B.一个c语言程序有且只有一个主函数 C.函数可以嵌套定义,不可以嵌套调用 D.程序函数的位置不可以任意

3.下面是合法C语言标识符的是( D )

A. 2A_K; B. _M+N; C. –M3; D. AC_2; 4.下列格式符中,可以用于控制字符输出的是( D ) A. %d B. %f C. %o D. %c

5.设x、y、z和k都是int型变量,则执行表达式x=(y=4,z=16,k=30)后,x的值是( C ) A. 4; B. 16; C. 30; D. 50;

6.执行语句“for(i=1,s=0;i<=5;i++) s+=i;”后,变量s、i的当前值是( B ) A. 10,5 B. 15,6 C. 15,5 D. 10,6

7.若有定义 int x,*p;,则以下正确的赋值表达式是( B ) A. p=x; B. p=&x; C. *p=&x; D. *p=*x;

8.以下对结构体类型变量的定义中,不正确的是( C )

A. typedef struct aa B. #define AA struct aa { int n; AA { int n; float m; float m; }AA; }stud; AA stud;

C. struct D. struct { int n; { int n; float m; float m; }aa; }stud; struct aa stud; 9.有如下函数调用语句:

func(rec1,rec2+rec3,(rec4+rec5));

函数调用语句中,含有的实参个数是( A )

A. 3 B. 4

C. 5 D. 以上均不是 10.对于以下宏定义: #define SQ(x) x*x

#define QQ(x,y) SQ(x)- SQ(y)

宏调用QQ(2*3,2+3)执行后值为( C ) A.25 B.11

C.43 D.以上均不是

1.设int a=5, c=32;float b=2.5;,表达式b+c/a的值为___ 8.5 ___。 2.若x和a均是int型变量,则计算x=(a=4,6*2)后x的值是 12 __。 3.设a=3,b=4,c=5。则a+b>c&&b==c的值为 0 ___。 4.有如下程序段: int k=10;

while(k=0) k=k-1;

则循环体语句执行_0_次。 5.int i=0,s=0;

while (i

for(__i=0_,s=0___;__i

6.将p说明为字符数组指针,数组大小为10,应写_char (*p)[10]_; 7.对于 int *p,*q,i=5,j=6; ,执行:

p=&i;q=p;p=&j;

输出结果(*p)=____6___,(*q)=___5_____。

三、程序阅读题(请写出程序的输出结果。每题6分,共30分) 1. #include

main()

{ int i,j,m,n; i=8; j=10; m=++i; n=j++;

printf(″%d, %d, %d, %d″,i,j,m,n); } 输出结果:9,11,9,10

2.. #include

main() { int i;

for(i=3;i<10;i++)

{ if(i*i/20>1) break; printf(\ }

printf(\ }

输出结果:3,4,5,6

3. #include

int fac(int n)

{ static int f=1; f=f*n;

return(f); } main()

{ int i;

for(i=2;i<=5;i++)

printf(“%d!=%d\\n”,i,fac(i)); } 输出结果: 2!=2 3!=6 4!=24 5!=120

4. #include main()

{ char s[]=“ABCD”,*p;

for(p=s+1;*p!=’\\0’;p++)

printf(“%s\\n”,p); }

该程序的输出结果是: BCD CD D

5. #include int f(char *s) { int k=0;

while(*s) k=k*10+*s++-‘0’; return(k); }

main() { int a;

a=f(“1234”);

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

该程序的输出结果是:1234

四、根据下列各编程题题意填空(每空2分,共10分)

1、用for循环打印 1 4 7 10 13 16 19 22 25 , 其语句应为:

for (i=1; i<=9; i++) printf(“=”, _3*i-2__);

2、程序A如下: int f(int n) {

if(n<=1) return n;

else return f(n-1)+f(n-2); }

等价于程序B:

int f(int n) {

Int t0,t1,t_____; t0=0;t1=1;t=n; while(__n>=2__) {

t=__t0+t1____; t0=t1; t1=t; n--; }

return __t____;

}

五、编程题(第1题8分,第2题12分,共20分)

1.求分数序列:2/1,3/2,5/3,8/5,13/8,21/13,?,的前20项之和。 1.#include

main()

{ int n,t;

float a=2,b=1,s=0; for (n=1;n<=20;n++) { s=s+a/b;

t=a; a+=b;b=t; }

printf(“the total is %f\\n”,s); }

2. 输入5个字符串,从中找出最大的字符串并输出。要求:用二维字符数组存放这5个字符串,用指针数组元素分别指向这5个字符串,用一个二级指针变量指向这个指针数组。 2. #include

main()

{ char a[5][80],*p[5],**q,**max; int i;

for (i=0;i<5;i++) p[i]=a[i]; for (i=0;i<5;i++) gets(p[i]); max=&p[0]; q=&p[1];

for (i=1;i<5;i++,q++)

if (strcmp(*max,*q)<0 max=q; puts(*max); }

C语言考试期末考试复习题及答案

一、 选择题

(1) 一个C语言程序总是从()开始执行 A) 书写顺序的第一个函数 B) 书写顺序的第一条执行语句 C) 主函数main() D) 不确定

(2) 设int x=3,y=4,z=5,则下列表达式中的值为0的是 ( ) A) ?x?&&?y? B) x||y+z&&y-z C) x<=y D) !((x

(3) 执行以下程序段后,i的值是 ( ) int i=10; switch(i+1)

{ case 10: i++; break; case 11: ++i; case 12: ++i; break; default : i=i+1; } A) 11 B) 13 C) 12 D) 14

(4) 语句while(!e);中的条件!e等价于 ( ) A) e==0 B)e!=1 C) e!=0 D) 运行时出错 (5) 用 int a[4]={1,2}; 对数组进行初始化后,数组元素a[3]的值是 ( ) A) 随机值 B) 0 C) 1 D) F

(6) 在执行char str[10]=“china\\0”; strlen(str)的结果是 ( ) A)5 B) 6 D) 7 D 9

(7) 若有定义,char *p=”computer”; 则语句printf(“%c”,*(p+2))运行结果是 ( ) A) 随机值 B) m C)o D) omputer (8) 在以下函数调用语句中

fun1(x,10,(x,10),fun2(y,10,(y,10))); 函数fun1参数的个数为 ( ) A) 8 B) 4 C) 5 D) 编译出错

(9) 在说明一个结构体变量时系统分配给它的存储空间是()

A)该结构体中第一个成员变量所需存储空间 B) 该结构体中最后一个成员变量所需存储空间

C)该结构体中占用最大存储空间的成员变量所需存储空间D) 该结构体中所有成员变量所需存储空间的总和

Key:CDCAB ABBD

1. 用C语言编写的代码程序

A)可立即执行 B)是一个源程序 C)经过编译即可执行 D)经过编译解释才能执行 2. C语言中用于结构化程序设计的三种基本结构是

A)顺序结构、选择结构、循环结构 B)if、switch、break C)for、while、do-while D)if、for、continue

3. 以下定义语句中正确的是

A)char a='A'b='B'; float a=b=10.0;C)int a=10,*b=&a; D)float *a,b=&a; 4.下列选项中,不能用作标识符的是

A)_1234_ B)_1_2 C) int_2_ D)2_int_ 5.在函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则

A)称为函数的直接递归调用 B)称为函数的间接递归调用

C)称为函数的循环调用 D)C语言中不允许这样的递归调用 6.以下叙述中正确的是

A)局部变量说明为static存储类,其生存期将得到延长 B)全局变量说明为static存储类,其作用域将被扩大 C)任何存储类的变量在未赋初值时,其值都是不确定的 D)形参可以使用的存储类说明符与局部变量完全相同

7.若变量已正确定义,要求程序段完成求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); 8.有以下程序 main()

{ char a='a',b;

(3) 编一程序:从键盘输入10个整数,计算并输出这10个数的平均数。

(4) 通过键盘输入3*4矩阵,编写一个函数求所有元素中的最大值,其中主函数完成3*4矩阵的输入和最大元素的输出。

Key: 3.

(1) main() { float c,f;

scanf(“%f”,&f); c=5.0*(f-32)/9; printf(“c=%f”,c); }

(2) int f(int a,int b) { return (a-b)*(a+b); } main() {int a,b;

scanf(“%d,%d”,&a,&b); printf(“y=%d”,f(a,b)); }

(3) main() {int a[10],j; float ave=0;

for (j=0;j<10;j++) { scanf(“%d”,&a[j]); ave=ave+a[j]; }

printf(“ave=%f”,ave/10); }

(4)

#include main()

{ int max(int array[][4]);; int k,j,a[3][4]; for (k=0;k<3;k++)

for (j=0;j<4;j++)

scanf(“%d”,&a[i][j]); printf(\ }

int max(int array[][4]) { int k,j,max; max=array[0][0]; for (k=0;k<3;k++) for (j=0;j<4;j++)

if (array[k][j]>max) max=array[k][j]; return(max); }

C语言考试期末考试复习题及答案 一、 选择题

(1) 一个C语言程序总是从(C )开始执行 A) 书写顺序的第一个函数 B) 书写顺序的第一条执行语句 C) 主函数main( ) D) 不确定

(2) 设int x=3,y=4,z=5,则下列表达式中的值为0的是 ( D ) A) ‘x’&&’y’ B) x||y+z&&y-z C) x<=y D) !((x

(3) 执行以下程序段后,i的值是 ( C ) int i=10; switch(i+1)

{ case 10: i++; break; case 11: ++i;

case 12: ++i; break; default : i=i+1; }

A) 11 B) 13 C) 12 D) 14 (4) 语句while(!e);中的条件!e等价于 ( A )

A) e==0 B)e!=1 C) e!=0 D) 运行时出错 (5) 用 int a[4]={1,2}; 对数组进行初始化后,数组元素a[3]的值是 ( B ) A) 随机值 B) 0 C) 1 D) F

(6) 在执行char str[10]=“china\\0”; strlen(str)的结果是 ( A ) A)5 B) 6 D) 7 D 9 (7) 若有定义,char *p=”computer”; 则语句printf(“%c”,*(p+2))运行结果是 ( B ) A) 随机值 B) m C)o D) omputer (8) 在以下函数调用语句中

fun1(x,10,(x,10),fun2(y,10,(y,10))); 函数fun1参数的个数为 ( B ) A) 8 B) 4

C) 5 D) 编译出错

(9) 在说明一个结构体变量时系统分配给它的存储空间是( D )

A)该结构体中第一个成员变量所需存储空间 B) 该结构体中最后一个成员变量所需存储空间

C)该结构体中占用最大存储空间的成员变量所需存储空间D) 该结构体中所有成员变量所需存储空间的总和

1. 用C语言编写的代码程序( B )

A)可立即执行 B)是一个源程序 C)经过编译即可执行 D)经过编译解释才能执行 2. C语言中用于结构化程序设计的三种基本结构是( A )

A)顺序结构、选择结构、循环结构 B)if、switch、break C)for、while、do-while D)if、for、continue

3. 以下定义语句中正确的是( C )

A)char a='A'b='B'; float a=b=10.0;C)int a=10,*b=&a; D)float *a,b=&a; 4.下列选项中,不能用作标识符的是( D ) A)_1234_ B)_1_2 C) int_2_ D)2_int_

5.在函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则 ( B )

A)称为函数的直接递归调用 B)称为函数的间接递归调用

C)称为函数的循环调用 D)C语言中不允许这样的递归调用 6.以下叙述中正确的是 ( A )

A)局部变量说明为static存储类,其生存期将得到延长 B)全局变量说明为static存储类,其作用域将被扩大 C)任何存储类的变量在未赋初值时,其值都是不确定的 D)形参可以使用的存储类说明符与局部变量完全相同

7.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是( B) 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); 8.有以下程序(a) main()

{ char a='a',b;

printf(\ printf(\

程序运行后的输出结果是a)b,b B)b,c C)a,b D)a,c 9.有以下函数定义:(c)

void fun(int n, double x) { ?? }

若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是

A) fun(int y,double m); B)k=fun(10,12.5) C)fun(x,n); D)void fun(n,x) 10.已定义c为字符型变量,则下列语句中正确的是(c)

A)c='97'; B)c=\)c=97; D)c=\ 11.以下能正确定义一维数组的选项是(b)

A)int num[]; B) #define N 100 C)int num[0..100]; D) int N=100; int num[N]; int num[N]; 12.以下能正确定义数组并正确赋初值的语句是(d)

A)int N=5,b[N][N]; B)int a[1][2]={{1},{3}};C)int c[2][]= {{1,2},{3,4}}; D)int d[3][2]={{1,2},{34}}; 13.有以下程序(a) main() { int i;

for (i=0; i<3; i++) switch (i)

{ case 1: printf(\case 2: printf(\default : printf(\}

执行后输出结果是

A)011122 B)012 C)012020 D)120 14.有以下程序(d) 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(\}

执行后输出结果是

A)58 B)56 C)45 D)24 15.以下叙述中正确的是(c)

A)C语言比其他语言高级 B)C语言可以不用编译就能被计算机识别执行 C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D)C语言出现的最晚,具有其他语言的一切优点 16.下列叙述中正确的是(d)

A)C语言中既有逻辑类型也有集合类型B)C语言中没有逻辑类型但有集合类型 C)C语言中有逻辑类型但没有集合类型D)C语言中既没有逻辑类型也没有集合类型 17.以下叙述中正确的是(a) A)C程序中注释部分可以出现在程序中任意合适的地方B)花括号\和\只能作为函数体的定界符

C)构成C程序的基本单位是函数,所有函数名都可以由用户命名D)分号是C语句之间的分隔符,不是语句的一部分

二) 阅读程序,写出程序运行结果 (1) #include main()

{ char ch=’A’;

ch=(ch>=’A’&& ch<=’Z’)?(ch+32):ch; printf(“%c”,ch); }

程序的运行结果是: (2) #include main( )

{ int sum=0,i=11; while (i<=10) {

sum=sum+i; i++; }

printf(“%d”,sum); }

程序的运行结果是: (3) #include main()

{ char str[ ]=”1a2b3c”; int i;

for(i=0;str[i]!=’\\0’;i++)

if (str[i]>=’0’ && str[i]<=’9’) printf(“%c”,str[i]); }

程序的运行结果是: (4) main() { int a,b; a=5; b=8; p(a,b); p(a+b,a); }

p(int x,int y) {

y=x+y;

printf(“%d %d”,x,y); }

程序的运行结果是: (5) #include void main()

{ int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int j,s=1;

for(j=0;j<=2;j++) s=s*a[j][j]; printf(\}

程序的运行结果是:

Key: (1) a (2) 0 (3) 123 (4) 5 13 13 18 (5) 45

三) 改错题(每个程序只有一个错误,填入错误语句所在的行号以及修改后的语句) (1)下段程序的功能是先输入一个整数,然后将输入的整数输出。 1 main()

char c1='A',c2='Y';

printf(\

A、 A,Y B、 65,65 C、 65,90 D、 65,89 11、下列运算符中优先级最高的是 ( ) A、 < B、 十 C、 % D、 !=

12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是 ( ) 。

A、 ’x’&&’y’ B、 x<=y

C、 x||y+z&&y-z

D、 !((x<y)&&!z ||1)

13、判断char型变量cl是否为小写字母的正确表达式为 ( ) A、 ’a’<=c1<=f’z’ B、 (c1>=a)&&(c1<=z)

C、 (‘a’>=c1) (‘z’<=c1) D、 (c1>=’a’)&&(c1<=’z’) 14、字符串\在内存中占据的字节个数为 ( ) A、 0 B、 1 C、 2 D、 3

15、下面有关for循环的正确描述是( )

A、 for循环只能用于循环次数已经确定的情况 B、 for循环是先执行循环体语句,后判定表达式 C、 在for循环中,不能用break语句跳出循环体

D、 for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main()

{int num=0; while(num<=2) {num++;

printf(“%d ,num); } }

A、 1 B、 1 2 C、 1 2 3 D、 1 2 3 4

17、以下描述正确的是 ( )

A、 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。

B、 do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。

C、 在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。

D、 do-while循环中,根据情况可以省略while。 18、以下对一维整形数组a的正确说明是 ( ) A、 int a(10); B、 int n=10,a[n];

C、 int n; D、 int a[10]; scanf(“%d”,&n); int a[n];

19、以下对二维数组a的正确说明是 ( ) A、 inta[3][]; B、 float a(3,4);

C、 double a[1][4]; D、 float a(3)(4);

20、若二维数组a有m列,则在a[j]前面的元素个数为 ( ) A、 j*m+i B、 i*m+j C、 i*m+j-1 D、 i*m+j+1

二、填空题(本大题共10空,每空2分,共20分)

1、结构化设计中的三种基本结构是 ___________________

2、在C语言中的实型变量分为两种类型,它们是________ 和 _________ 3、当a=5,b=4,c=2时,表达式 a>b!= c的值是 _______ 4、下列程序运行后的输出结果是 _____________ #include main() { int i,j;

for(i=4;i>=1;i--) {printf(\

for(j=1;j<=4-i;j++) printf(\ printf(\ }

5、若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是___________ a[2][1]得到的初值是 ________________

6、在C语言中,二维数组元素的内存中的存放顺序是_______________ 三、程序分析题(本大题共2题,每题4分,共8分,描述程序功能并写出程序执行结果)

1、#include main( )

{int a,s,n,count;

a=2;s=0;n=1;count=1;

while(count<=7) {n=n*a; s=s+n; ++count;} printf(“s=%d”,s); }

2、#include main()

{int a=[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j; for (i=0;i<3;i++) for(j=0;j<3;j++)

if (i==j) sum=sum+a[j];

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

四、编程题(本大题共4题,每题8分,共32分)

1、编写摄氏温度、华氏温度转换程序。要求:从键盘输入一个摄氏温度,屏幕就显示对应的华氏温度,输出取两位小数。转换公式:F=(C+32)×9/5 。 2、试编程判断输入的正整数是否既是5又是7的正倍数。若是,则输出yes;否则输出no。

3、判断数m是否为素数(只能被1和它本身整除的整数)? 4、对15个数进行排序,按从小到大的顺序输出。

《C语言程序设计》期末考试试卷(A卷)评分标准及标准答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、 B 2、 D 3、 B 4、 B 5、 C 6、 D 7、 B 8、 B 9、 A 10、D 11、C 12、D 13、D 14、C 15、D 16、C 17、C 18、D 19、C 20、B

二、填空题(本大题共10空,每空2分,共20分) 1、 顺序结构 分支结构 循环结构

2、 单精度型(或:float型) 双精度型(或;double型] 3、 1 4、 * * * * * * * * * * 5、 0 6

6、 按行主顺序存放

三、程序分析题(本大题共2题,每题4分,共8分)

能正确表达出题目的含义、要求,即可得分,部分正确可按比例得分,否则不得分。

1、功能:求S=0+2+4+8+16+32+64+128 和。 输出结果:s=254

2、功能:出矩形阵a的主对角线上的元素之和。 输出结果:27

四、编程题(本大题共4题,每题8分,共32分)

能正确表达出题目的含义、要求,且格式正确,即可得满分,不要求形式完全相同。部分正确可按比例得分,否则不得分。 1、 #include main() { float c,f;

printf(\…………………………………………….2分 scanf(\…………………………………………….2分 f= (c+32.0)*9.0/5.0; …………………………………………….2分 printf(\…………………………………………….2分 }

2、#include

main() {int x;

scanf(\…………………………………………….2分

if(x%5==0&&x%7==0) …………………………………………….2分 printf(\…………………………………………….2分 else

printf(\…………………………………………….2分 }

3、 # include # include main() {int m,i,k;

scanf(\

k=sqrt(m); …………………………………………….2分 for(i=2;i<=k;i++)…………………………………………….2分 {if(m%i==0)

break; …………………………………………….2分 }

if(i>k)

printf(\…………………………………………….2分 }

4、 # include main()

{int i,j,a[15],t;

printf(\for(i=0;i<15;i++)

scanf(\…………………………………………….2分 for(j=0;j<15;j++)…………………………………………….2分 for(i=0;i<15-j;i++)…………………………………………….2分 if(a[i]>a[i+1])

{t=a[i];a[i]=a[i+1];a[i+1]=t;} …………………………………………….2分 for(i=0;i<15;i++) printf(\

c语言程序设计期末试题A(含答案)

一、单项选择题(选择一个最佳答案,每题2分,共20分)

1. 一个C程序的执行是从(A )。

A) 本程序的main函数开始,到main函数结束

B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序的main函数开始,到本程序文件的最后一个函数结束 D) 本程序文件的第一个函数开始,到本程序main函数结束

2. 下列选项中,不能用作标识符的是(D )。 A) _1234_

B) _1_2

C) int_2_

D) 2_int_

3. 以下定义语句中正确的是( C)。 A) char a='A'b='B'; C) int a=10,*b=&a;

B) float a=b=10.0;

D) float *a,b=&a;

4. 设有以下定义:#define d 2

int a=0; double b=1.25; char c=’A’; 则下面语句中错误的是(B)。 A) a++;

B) b++

C) c++;

D) d++;

5. 以下4个选项中,不能作为一条C语句的是(D)。 A) {;}

B) a=0,b=0,c=0; C) if(a>0); D) if(b==0) m=1;n=2;

6. 有以下定义语句 double a,b; int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是( C)。 A) a=a+b=b++ B) w%(int)a+b) C) (c+w)%(int)a D) w=a==b;

7. 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是(D)。 A) p=1;

B) *q=2;

C) q=p;

D) *p=5; 选D.

A.p是一个指针,不能给它赋一个整型的值1

B.*q仍然是一个指针,*q就是p.所以也不能给它赋一个整型的值. C.q=p;q是个二级指针,p是一级指针,不能把一级指针赋给二级指针. *p=5,即给n赋值为5,正确.

8. 设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是( A)。 A) scanf(“%d”,pa) ; C) scanf(“%d”,&pa) ;

B) scanf(“%d”,a) ; D) scanf(“%d”,*pa);

9. 若有说明:char *language[]={”FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则表达

式*language[1]>*language[2]比较的是(A)。

A)字符B和字符P B) 字符串FORTRAN和字符串BASIC C)字符F和字符B D) 字符串BASIC和字符串PASCAL

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

Top