C语言复习题答案文档格式.docx
《C语言复习题答案文档格式.docx》由会员分享,可在线阅读,更多相关《C语言复习题答案文档格式.docx(52页珍藏版)》请在冰豆网上搜索。
A)long
B)_2Test
C)3Dmax
D)A.dat
2.3以下不是关键字的标识符是
A)continue
B)char
C)If
D)default
2.4C语言提供的合法数据类型为
A)复数型
B)逻辑型
C)双精度型
D)集合型
2.5以下选项中不合法的int整型常数是
A)32768
B)-56
C)03
D)0xAF
2.6下列字符串中,可以作为“字符串常量”的是
A)ABC
B)″ABC″
C)'
abc'
D)'
a'
2.7以下字符串中,合法的长整型常数是
A)0L
B)4962710
C)0.054838743
D)2.1869e10
2.8在下面的运算符中,优先级最高的运算符是
A)%B)&
&
C)<
D)!
2.9逗号表达式(x=2*3,x+8,x+12),x+x的值是
A)6B)26C)52D)12
2.10设intn=6;
表达式n%=n+=n-=n*n的值为
A)10B)0C)12D)6
2.11TURBOC中,int类型变量所占字节数是
A)1B)2C)3D)4
2.12在C语言中,下列合法的字符常量是
A)’\039’B)’\x76’C)’ab’D)’\o’
二、填空题
2.13下列程序执行后的结果是_70_______。
main()
{int
x='
f'
;
printf("
%d\n"
,'
A'
-'
+x);
}
2.14把a1、a2定义成长整型变量的定义语句是__longinta1,a2;
________________。
2.15在C语言中,实型变量分为两种类型,它们是_______________。
2.16已有定义:
intx;
floaty;
doublez;
,则计算表达式:
x+y*z后,所得数据的类型是_____________。
2.17已有定义:
floatf=13.8;
,则表达式:
(int)f%3的值是_______1__。
2.18若s是int型变量,且s=6,则下面表达式的值为__1___。
s%2+(s+1)%2
2.19若a是int型变量,则计算下面表达式后a的值为___2__。
a=25/3%3
2.20若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++
后,x的值为__10__,n的值为__6__。
2.21若有定义:
charc=‘\010’;
则变量c中包含的字符个数为__1___。
2.22若有定义:
intx=3,y=2;
floata=2.5,b=3.5;
则下面表达式的值为___1___。
(x+y)%2+(int)a/(int)b
2.23已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=‘a’+‘8’-‘3’的值为___102__(f)。
三、分析以下程序运行结果。
2.24
main()
{
inta,b,x,y;
a=5;
b=7;
x=++a;
y=b++;
printf(“%d,%d,%d,%d”
a,b,x,y);
6,8,6,7
四、简答题
2.25假设m是一个三位数,写出将m的个位,十位,百位反序而成的三位数(例如:
123反序为321)的C语言表达式。
2.26已知intx=10,y=12;
写出将x和y的值互相交换的表达式。
第三章顺序结构
3.1格式输入与输出
3.1.1
printf函数(格式输出函数)
printf格式控制字符
格式字符
说明
d,i
以十进制形式输出带符号整数(正数不输出符号)
o
以八进制形式输出无符号整数(不输出前缀0)
x,X
以十六进制形式输出无符号整数(不输出前缀0x)
u
以十进制形式输出无符号整数
f
以小数形式输出单、双精度实数,隐含输出6位小数
e,E
以指数形式输出单、双精度实数
g,G
以%f或%e中较短的输出宽度输出单、双精度实数
c
输出单个字符
s
输出字符串
在格式命令的%和格式控制字符之间可以加上一些任选的修饰符,用来对输出格式作进一步的限定。
这些修饰符如下所示:
附加格式说明符(修饰符)
修饰符
功能
例子
m
输出数据域宽度,数据长度<
m,左补空格;
否则按实际输出
%4d:
表示输出至少占4列
.n
对于实数:
指定小数点后小数位数(四舍五入)
%6.2f:
表示输出2位小数
对于字符串:
表示只输出字符串的前n个字符
%.3s:
表示输出字符串前3个字符
-
输出数据在域内左对齐(缺省右对齐)
%-16d:
表示输出数据左对齐
+
输出有符号正数时,在其前面显示正号(+)
%+d:
表示输出整数的正号
输出数值时,指定左边不使用的空位置自动填0
%08d:
表示输出十进制整数,不足8位时左补0
#
对于无符号数:
在八进制和十六进制数前显示前导0,0x或0X
%#X:
表示输出的十六进制前显示前导0X
l
在d、o、x、u前,指定输出为longint型
%ld:
表示输出长整型数
在e、f、g前,指定输出精度为double型(缺省也为double)
%lf:
表示输出为double型数
。
3.1.2scanf函数(格式输入函数)
scanf函数的格式控制符
格式控制符
字符意义
d,i
输入十进制整数
输入八进制整数
x
输入十六进制整数
输入无符号十进制整数
f或e
输入实型数(用小数形式或指数形式)
输入单个字符
输入字符串
使用scanf函数注意事项:
(1)如果相邻两个格式控制符之间,不指定数据分隔符(如逗号、冒号等),则相应的两个输入数据之间,至少用一个空格分隔,或者用Tab键分隔,或者输入一个数据后,按回车,然后再输入下一个数据。
例如:
scanf("
%d%d"
&
a,&
b);
假设给a输入2,给b输入6,则正确的输入操作为:
26↙
或者
2↙
6↙
(2)格式控制字符串中出现的常规字符(包括转义字符),务必原样输入。
scanf("
%d:
%d"
h,&
m,&
s);
假设要给h输入12,给m输入30,给s输入10,正确的输入操作应为:
12:
30:
10↙
3.2字符数据的输入输出
3.2.1
putchar函数(字符输出函数)
3.2.2getchar函数(字符输入函数)
3.3复合语句和空语句
1、复合语句。
可以用{}把一些语句括起来成为复合语句。
复合语句的语句形式如下:
{
语句1;
语句2;
…;
语句n;
}
3.1定义变量如下:
intx;
floaty;
则以下哪一个输入语句是正确的
A)scanf(“%f%f”,&
x,&
y);
B)scanf(“%f%d”,&
C)scanf(“%f%d”,&
y,&
x);
D)scanf(“%5.2f%2d”,&
3.2putchar函数可以向终端输出一个
A)字符或字符变量的值B)字符串
C)实型变量D)整型变量的值
3.3下列叙述正确的是()。
A)赋值语句中的“=”是表示左边变量等于右边表达式
B)赋值语句中左边的变量值不一定等于右边表达式的值
C)赋值语句是由赋值表达式加上分号构成的
D)x+=y;
不是赋值语句
3.4执行下列程序片段时输出结果是P52
unsignedinta=65535;
printf(“%d”,a);
A)65535B)-1C)-32767D)1
3.5对于下述语句,若将10赋给变量k1和k3,将20赋给变量k2和k4,则应按那一种方式输入数据。
intk1,k2,k3,k4;
scanf(“%d%d”,&
k1,&
k2);
scanf(“%d,%d”,&
k3,&
k4);
A)1020↙B)1020↙C)10,20↙D)1020↙
1020↙1020↙10,20↙10,20↙
3.6执行下列程序片段时的输出结果是
intx=13,y=5;
printf(“%d”,x%=(y/=2));
A)3B)2C)1D)0
3.7下列程序的输出结果是
intx=023;
printf(“%d”,--x);
A)17B)18C)23D)24
3.7已有如下定义和输入语句,若要求a1、a2、c1、c2的值分别为10、20、A和B,当从第一列开始输入数据时,正确的输入方式是
inta1,a2;
charc1,c2;
a1,&
a2);
scanf(“%c%c”,&
c1,&
c2);
A)1020AB↙B)1020↙C)1020AB↙D)1020AB↙
AB↙
3.8若定义x为double型变量,则能正确输入x值的语句是P58
A)scanf(“%f”,x);
B)scanf(“%f”,&
C)scanf(“%lf”,&
D)scanf(“%5.1f”,&
3.9若运行时输入:
12345678↙,则下列程序运行结果为。
{
inta,b;
scanf(“%2d%2d%3d”,&
a,&
printf(“%d\n”,a+b);
A)46B)579C)5690D)出错
3.10有输入语句:
scanf(“a=%d,b=%d,c=%d”,&
b,&
c);
为使变量a的值为1,b的值为3,c的值为2,则正确的数据输入方式是。
A)132↙B)1,3,2↙
C)a=1b=3c=2↙D)a=1,b=3,c=2↙
二、填空题
3.11一个C程序由若干个______文件组成,而一个这样的文件可以由若干个______组成。
3.12一个表达式要构成一个C语句,必须_____________。
3.13复合语句是用一对__________界定的语句块。
3.14printf函数和scanf函数的格式说明都使用___%___字符开始。
3.15scanf处理输入数据时,遇到下列情况时该数据认为结束:
(1)________,
(2)_______,(3)_________。
P60
3.16C语言本身不提供输入输出语句,其输入输出操作是由__________来实现的。
3.17一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预编译命令______________
#include“stdio.h”。
三、程序阅读题
3.18用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’,问在键盘上如何输入?
{
floatx,y;
charc1,c2;
scanf(“a=%db=%d”,&
scanf(“%f%e”,&
scanf(“%c%c”,&
3.19写出以下程序的输出结果。
{inta=12345;
floatb=-198.345,c=6.5;
printf(“a=%4d,b=%-10.2e,c=%6.2f\n”,a,b,c);
3.20写出下列程序的输出结果
main()
intx=12;
printf(“%d,%o,%x,%u,”,x,x,x,x);
3.21写出下列程序的输出结果
printf(“*\n**\n***\n****\n”);
3.22写出下列程序的输出结果
charx=’a’,y=’b’;
printf(“%e\\%c\n”,x,y);
printf(“x=\’%3x\’,\’%-3x\’\n”,x,x);
}
四、编程题
3.23已知一名学生的三门课程考试成绩,计算他总成绩和平均成绩。
试编写程序,并画出算法的N-S结构图。
3.24从键盘上输入公里数,将其转换成米。
3.25根据商品的原价和折扣率,计算商品的实际售价。
第四章选择结构
4.1.1关系运算符
在C语言中有以下关系运算符:
①
<
小于
②
<
=
小于或等于
③
>
大于
④
>
=
大于或等于
⑤
==
等于
⑥
!
不等于
4.1.2关系表达式
关系表达式的值是真”和“假”,用“1”和“0”表示。
如
7>
2的值为“真”,即为1。
3<
8的值为“假”,即为0。
关系表达式通常用于C程序设计的逻辑判断语句的条件表达式中。
使用关系表达式要注意以下几点:
C语言中,非0值即为“真”,0值即为“假”;
4.2.1逻辑运算符
C语言中提供了三种逻辑运算符:
(1)&
与运算
(2)||
或运算
(3)!
非运算
逻辑运算符和其它运算符优先级的关系可表示如下:
!
(非)→&
(与)→||(或)
“&
”和“||”低于关系运算符,“!
”高于算术运算符。
如图4-1所示
图4-1
4.3.1if语句的三种形式
1.不含else子句的if语句
语句形式为:
if(表达式)语句
(1)if(x>
y)printf(“%d”,x);
/*如果x>
y,则输出x*/
(2)if(a<
b){t=a;
a=b;
b=t;
}/*如果a<
b,则将a、b相互交换*/
2.if…else语句
if(表达式)语句1
else语句2
3、if-else-if形式。
当有多个分支需要选择时,可采用if-else-if语句,其一般形式为:
if(表达式1)语句1
elseif(表达式2)语句2
elseif(表达式3)语句3
……
elseif(表达式m)语句m
else语句n
(2)在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。
(3)在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。
但要注意的是在}之后不能再加分号。
if(x>
y)
{a++;
b++;
else
{a--;
b--;
4.3.2if语句的嵌套
在if语句中又包含一个或多个if语句称为if语句的嵌套。
一般有如下形式:
if(表达式1)
内嵌if
if(表达式2)语句1
else语句2
if(表达式3)语句3
else语句4
4.4条件运算符
条件运算符为?
:
,
由条件运算符组成的条件表达式的一般形式为:
表达式1?
表达式2:
表达式3
其求值规则为:
先求解表达式1的值,如果表达式1的值为真,则以表达式2的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。
4.5switch语句
C语言还提供了另一种用于多分支选择的switch语句,其一般形式为:
switch(表达式)
case 常量表达式1:
语句1
case 常量表达式2:
语句2
…
case 常量表达式n:
语句n
default:
语句n+1
switch语句执行过程是:
计算switch后圆括号中表达式的值。
并逐个与case后的常量表达式值进行比较,当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,然后不再进行判断,继续执行后面所有case后的语句。
如表达式的值与所有case后的常量表达式值均不相同,则执行default后的语句。
4.1逻辑运算符两侧运算对象的数据类型。
A)只能是0或1B)只能是0或非0正数
C)只能是整型或字符型数据D)可以是任何类型的数据
4.2能正确表示“当x的取值在[1,10]或[200,210]范围内为真,否则为假”的表达式是。
A)(x>
=1)&
(x<
=10)&
(x>
=200)&
=210)
B)(x>
=1)||(x<
=10)||(x>
=200)||(x<
C)(x>
D)(x>
4.3C语言对嵌套if语句的规定是:
else总是与。
A)其之前最近的if配对B)第一个if配对
C)缩进位置相同的if配对D)其之前最近的且尚未配对的if配对
4.4设:
inta=1,b=2,c=3,d=4,m=2,n=2;
执行(m=a>
b)&
(n=c>
d)后n的值为。
4.5下面哪一个是错误的if语句(设intx,a,b;
)
A)if(a=b)x++;
B)if(a=<
b)x++;
C)if(a-b)x++;
D)if(x)x++;
4.6对下述程序,哪一个是正确的判断。
{intx,y;
x=y;
y=x;
x++;
y++;
printf(“%d,%d”,x,y);
A)有语法错误,不能通过编译B)若输入3和4,则输出4和5
C)若输入4和3,则输出3和4D)若输入4和3,则输出4和5
4.7若w=1,x=2,y=3,z=4,则条件表达式w<
x?
w:
y<
z?
y:
z的值是
A)4B)3C)2D)1
4.8若inti=10;
执行下列程序后,变量i的正确结果是
switch(i)
case9:
i+=1;
case10:
case11:
default:
A)10B)11C)12D)13
4.9若有说明语句inti=5,j=4,k=6;
floatf;
则执行f=(i<
j&
i<
k)?
i:
(j<
j:
k;
语句后,f的值为。
A)4.0B)5.0C)6.0D)7.0
4.10设x=10,y=5,z=15,执行下面一段程序后z的结果是
if(x>
y)
if(y>
z)x=y;
elsez=y;
A)7B)6C)5D)4
4.11C语言提供6种关系运算符,按优先级高低它们分别是______________________。
4.12C语言提供三种逻辑运算符,按优先级高低它们分别是____________________。
4.13将条件“y能被4整除但不能被100整除,或y能被400整除”写成逻辑表达式
4.14设x,y,z均为int型变量;
写出描述“x,y和z中有两个为负数”的C语言表达式:
4.15已知A=7.5,B=2,C=3.6,表达式A>
B&
C>
A||A<
C>
B的值是。
4.16有intx=3,y=-4,z=5;
则表达式(x&
y)==(x||z