C语言程序设计.docx
《C语言程序设计.docx》由会员分享,可在线阅读,更多相关《C语言程序设计.docx(77页珍藏版)》请在冰豆网上搜索。
![C语言程序设计.docx](https://file1.bdocx.com/fileroot1/2023-2/23/8c1c7e65-0e4c-4bc3-b3f4-bdfa05b9dabe/8c1c7e65-0e4c-4bc3-b3f4-bdfa05b9dabe1.gif)
C语言程序设计
《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(“%3d%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(“%3d%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】,求出其转置矩阵并且输出。
1234
5678
9101112
13141516
第一部分 判断题
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("%d\n",b=(a=32767,a+1));} 提示 正确答案为×
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"myfile.h"的功能是完全一样的。
( ) 提示 正确答案为×
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、ABCB、abcC、a_bcD、ab.c
3.一个C语言程序是由()
A、一个主程序和若干子程序组成B、函数组成
C、若干过程组成D、若干子程序组成
4.一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是()
A、有零个或多个输入B、有零个或多个输出
C、有穷性D、可行性
5.设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为()
A、intB、floatC、doubleD、不确定
6.在C语言中,char型数据在内存中的存储形式是()
A、补码B、反码C、源码D、ASCII码
7.有如下程序,输入数据:
12345M678<cR>后(表示回车),x的值是()。
#include
main(){
intx;
floaty;
scanf("%3d%f",&x,&y);
}
A、12345B、123C、45D、345
8.若有以下定义inta,b;floatx,则正确的赋值语句是()
A、a=1,b=2B、b++;C、a=b=5D、b=int(x);
9.以下程序的执行结果是()
#include
{
inti=10,j=10;
printf("%d,%d\n",++i,j--);
}
A、11,10B、9,10C、11,9D、10,910.巳知字母A的ASCII码是65,以下程序的执行结果是()
#include
main()
{
charc1='A',c2='Y';
printf("%d,%d\n",c1,c2);
A、A,YB、65,65C、65,90D、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-zD、!
((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"在内存中占据的字节个数为()
A、0B、1C、2D、3
15.下面有关for循环的正确描述是()
A、for循环只能用于循环次数已经确定的情况
B、for循环是先执行循环体语句,后判定表达式
C、在for循环中,不能用break语句跳出循环体
D、for循环体语句中,可以包含多条语句,但要用花括号括起来
16.下面程序的运行结果是()
#include
main()
{intnum=0;
whil