《C语言程序设计教程》课后题答案
一选择题
1.A 2.B 3.C 4.D 5.B 6.C 二.填空题 1.程序 2.算法
3.main或主 4.编译 5.编译 6. .obj 7.库函数
8.文本或ASCII码 三、编程题
1.参考代码如下: #include
printf(\金\\n木\\n水\\n火\\n土\\n\}
2. 参考代码如下: #include
scanf(\
printf(\ printf(\ printf(\ printf(\}
3. 参考代码如下: #include
float a,b,h,s;
scanf(\ s=(a+b)*h/2;
printf(\}
第一章
1 / 47
第二章
一选择题 答案及分析: 1.B,略
2.A,-8在内存中是以补码(设两个字节)形式存储的 3.A,C语言有32个关键字(参见课本第18页),且C语言标识符是区分大小写字母的 4.A,略
5.D,八进制数据中不能出现数码8
6.B,字符常量应该用单引号括起来,答案D超出了ASCII取值范围(ASCII的取值范围为[0,255])
7.C,该字符串中转义字符有三个:\\\\、 \\22和 \\n,普通字符有三个:a、 ,和0,所以字符串长度为6 8.C,略
9.D,C语言没有read函数和%D格式符号,且scanf函数第二个形参为地址列表
10.B,根据题意,scanf函数输入数据时分隔符号不应该是逗号,应该是空格或回车符,且输入数据时分一行或几行均可
11.A,scanf函数中不允许出现%8.4,%6.2和%8这样的格式符号
12.C,既要保证5位小数位,还得保证整数位不变,这样数据12345.67800用10列不能完全显示出来,按C语言规定,12345.67800原样输出
13.B,printf函数中格式符号%d,%o,%x表示对应的整型数据分别按十进制,八进制和十六进制输出
14.C,按C语言规定,scanf函数形参双引号中,如果包含非格式符号,在输入数据时要求原样输入 二.填空题 答案及分析:
1.int float double(略)
2.65,89 ,printf函数中如果格式符号是%d,则输出相应字符的ASCII十进制数值
3.a=98,b=765.000000,c=4321.000000,scanf函数中的格式符号-?O,表示将键盘输入的数据9876543210按2,3,4位分割,然后再分别赋给变量a,b,c
4.scanf(\类型的变量对应的格式符号是%lf 三、编程题
1. 参考代码如下: #include
int a=97;
printf(\ printf(\ printf(\ printf(\}
程序分析:通过printf函数中不同的格式符号,即%c(字符),%d(十进制),%o(八进制),%x
2 / 47
(十六进制)输出相应的值。 2. 参考代码如下: #include
int h,m,minute;
scanf(\ minute=h*60+m;
printf(\}
程序分析:输入形式为10:27,故scanf函数双引号中两个格式符号%d之间必须加入“:”。 3. 参考代码如下: #include
float r=6371000,s,v; s=4*3.1415926*r*r; v=3.1415926*4/3*r*r*r; printf(\}
程序分析:C语言中的π不代表3.1415926,可以用各种常量的形式体现出来。 4. 参考代码如下: #include
int m100,m50,m20,m10,m5,m1,m; scanf(\ m100=m/100;
m50=(m-m100*100)/50;
m20=(m-m100*100-m50*50)/20;
m10=(m-m100*100-m50*50-m20*20)/10;
m5=(m-m100*100-m50*50-m20*20-m10*10)/5; m1=m-m100*100-m50*50-m20*20-m10*10-m5*5;
printf(\元发工资,人名币各票面的张数为:\\n\ printf(\元的张数:%d\\n\ printf(\元的张数:%d\\n\ printf(\元的张数:%d\\n\ printf(\元的张数:%d\\n\ printf(\元的张数:%d\\n\ printf(\元的张数:%d\\n\}
程序分析:人民币的面值分别为100元,50元,20元,10元,5元和1元,工资4367元除以100后得到的商就为100元张数,余数再除以50,得到的商为50元的张数,余数再除20,……,以此类推就会得出人民币各面值相应的张数。
3 / 47