c语言程序设计第五版习题答案解析 下载本文

内容发布更新时间 : 2024/12/26 12:27:21星期一 下面是文章的全部内容请认真阅读。

完美WORD格式

char c1,c2;

scanf(\ scanf(\ scanf(\

printf(\

}

【分析与提示】在使用多个scanf函数输入数据时,第一个输入行末尾输入的回车被第二个scanf函数吸收,因此在第二、三个scanf函数的双引号后放置一个空格以抵消上行输入的回车键。若没有一个空格,则按上面输入的数据会出错。

【解答】运行输入:a=3, b=4<回车>

X=8, y=71.82<回车> C1=AC2=a<回车>

运行结果:a=3,b=7,x=8.500000,y=71.820000,c1=A,c2=a

四.编程题

1.由键盘输入1个字母,输出其ASCII码值。 【分析与提示】将一个字符常数赋给一个字符变量,并不是把该字符本身放到内存单元中去,而是将该字符的ASCII代码放到内存单元中,因此,字符型数据也可以像整型数据那样使用,可以用来表示一些特定范围内的整数。所以int型与char型变量的值可以互换,分别用%c和%d不同格式输出就行了。

但是注意这种转换是有条件的。因为,char变量在内存占一个字节,而int整型变量占2个字节。当int型高位字节是0时,char与 int可以互换;若不是0,则不可以互换。例如,用%c格式输出时,取低位字节,高位字节被舍弃。

参考代码:

#include \main() { char ch; ch=getchar();

printf(\

}

【解答】运行输入:B <回车> 运行结果:B,66

2.从键盘上输入一个大写字母,把它转换成小写字母,然后显示出来。

【分析与提示】大写字母转换小写时ASCII码值+32,相反的,小写字母转换成大写字母时ASCII码值-32。

参考代码:

#include

main() {

char x1,x2; printf(\scanf(\x2=x1+32;

专业整理 知识分享

完美WORD格式

printf(\}

【解答】运行输入:A <回车>

运行结果:A,a

3.从键盘上输入两个实型数,求两数的和、差、积,输出结果时要求小数部分占两位。 【提示】结果要求保留2位小数,所以输出的结果格式为%.2f。 main() {

float x,y,a,b,c;

printf(\ scanf(\ a=x+y; b=x-y; c=x*y;

printf(\

printf(\

}

【解答】

运行输入:please input x,y:10,20<回车> 运行结果:x=10.000000,y=20.000000 x+y=30.00 x-y=-10.00 x*y=200.00

4.编写一个程序,求出给定半径r的圆以及内正n边形的面积,并且输出计算结果。r和n的值由用户输入。

【分析与提示】由数学知识得到: 半径为r圆的面积s??r,半径为r圆的内接正n边形的面积A?nrsin?/2,其中??2?/n

处理步骤:提示信息,接收参数值;计算圆的面积; 计算正n边形的面积;输出结果。

参考代码:

#include #include #define PI 3.14 main() { int n;

float r,s,area;

printf(\scanf(\s=PI*r*r;

area=(n*r*r*sin(2*PI/n))/2.0; printf(\

22 专业整理 知识分享

完美WORD格式

return(0);

}

运行结果如下:

Please inout the radius and the N.; 1 5

S=3.14 A=2.38

5.已知华氏温度与摄氏温度之间的转换公式是:c?5/9?(F?32), 编写一个程序,

将用户输入的华氏温度转换成摄氏温度,并予以输出。

【分析与提示】首先要定义输入输出温度为浮点型,且5/9两数相除结果为整数,5/9的值为0,故不能写成5/9,而应写成(5.0/9.0)*(f-32)。结果要求保留2位小数,所以输出的结果格式为%5.2f。

参考代码: #include main() { int f; float c;

printf(\ scanf(\

c=5.0/9*(f-32); /*不能写成5/9,两数相除结果为整数,5/9的值为0*/ printf(\: %.2f\ return(0);

}

【解答】运行结果如下:

please input the F: 75<回车> the C.te,[erature is: 23.89

6.由键盘输入5个学生的计算机成绩,计算他们的平均分并保留2位小数。 【分析与提示】方法与上题类似,同样是保留两位有效数字%6.2f。 参考代码:

main() {

int a,b,c,d,e; float total,aver;

printf(\\\n\scanf(\total=a+b+c+d+e; aver=total/5.0;

printf(\:%6.2f\\n\

}

【解答】运行输入:80,93,75,68,87 <回车>

运行结果:Average:80.60

7.编写将输入的英里转换为公里,每英里等于5380英尺,每英尺等于12英寸,每英寸等于2. 54厘米,每公里等于100 000厘米。

专业整理 知识分享

完美WORD格式

main() {

double mile,k;

printf(“enter mile:”); scanf(“%lf”,&mile); k=mile*5380*12*2.54/100000;

printf(“ %lf mile is %lf kilometer\\n”,mile,k); }

【解答】运行:enter mile:2↙

2.000000 mile is 3.279648 kilometer

第4章 选择结构程序设计

4.1 习题

一.填空题

1.已知a=3,b=4,c=5。则逻辑表达式a+b>c&&b= =c的值为 ,!(a>b)&&c||1的值为 ,!(a+b)+c-1&&b+c/2的值为 。 【分析与提示】本题考查运算符的优先级别。 【解答】0 ; 1 ; 1 二、运行程序写结果

1.下列程序运行的运行结果为 。 #include main()

{

int a=3,b=8,c=9,d=2,e=4; int min;

min=(a

min=(min

min=(min

min=(min

printf(\,min);

【分析与提示】本题程序的功能为:找出a,b,c,d,e中最小的值并输出。 【解答】Min is 2

2.若输入3,4<回车>,下列程序运行的运行结果为 ;若输入4,3<回车>,下列程序运行的运行结果为 。

#include main() {

int a,b,c;

专业整理 知识分享

完美WORD格式

printf(\,b: \); scanf(\,%d\,&a,&b);

if(a>=b)

{c=a*b; printf(\,a,b,c);}

else

{c=a/b; printf(\,a,b,c);}

【分析与提示】本题程序的功能为:从键盘输入变量a,b,计算c的值(若a>=b,则c=a*b,若a

【解答】3/4=0 ; 4*3=12

3.下列程序运行的运行结果为 。 #include main() {

int x=1,y=0,a=0,b=0; switch(x) {

case 1:

switch(y)

{case 0: a++; break; case 1: b++; break; }

case 2: a++; b++; break; }

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

【分析与提示】本题中case 1:后面是一个switch语句,执行完该语句后,直接执行case 2:后面的语句。

【解答】a=2,b=1 三.编程题

1.输入一个字母,若为小写,则把它变成大写输出。

【分析与提示】小写字母的ASCII码值与其对应的大写字母的ASCII码值相差32。 参考代码: main( ) {

char c;

printf(\请输入一个字母\\n\scanf(\

if(c>=’a’&&c<=’z’) c=c-32;

printf(\}

2. 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可

专业整理 知识分享