何钦铭颜晖 浙大版《C语言程序设计》第四版 第2章 用C语言编写程序 课后习题( 三 )


答:顺序,分支,循环 。
解析:无
10.下列程序段的输出结果是( ) 。
int i;double s = 0;for (i = 1; i < 4; i++){s = s + 1.0 / i;printf("i=%d#s=%.3f\n", i, s);}printf("i=%d#s=%.3f\n",i, s);
答:
i=1#s=1.000i=2#s=1.500i=3#s=1.833i=4#s=1.833
解析:
for 循环里,
i 的初始值为 1 ,s 的初始值为 0+1.0/1,结果为 1.0 ,第一次打印的时候保留小数点后 3 位,结果为 i=1#s=1.000 。
然后累加 i 的值为 2 ,s的 值为1.0+1.0/2,等于1.0+0.5等于1.5,所以第二次打印的时候保留小数点后3位,结果为i=2#s=1.500 。
然后再累加i的值为3,s的值为1.5+1.0/3,等于1.5+0.333等于1.833,所以第三次打印的死后保留小数点后3位,结果为i=3#s=1.833 。
然后再累加i的值为4,不满足for循环的条件,循环结束了 。
继续执行,打印最后一次:i=4#s=1.833 。
三、程序设计题
题目1:求整数均值:输入 4 个整数,计算并输出这些整数的和与平均值,其中平均值精确到小数点后1位 。试编写相应程序 。
解:
答案代码:
#include int main(void){// (习题2.3.1)//求整数均值:输入 4 个整数,计算并输出这些整数的和与平均值,其中平均值精确到小数点后1位 。试编写相应程序 。int a, b, c, d, sum = 0;double average;printf("input a,b,c,d:");scanf("%d%d%d%d", &a, &b, &c, &d);sum = a + b + c + d;average = sum / 4.0;printf("average=%.1lf\n", average);return 0;}
运行代码:
题目2:阶梯电价:为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量 50kW . h ( 含 50kW,h )以内的,电价为 0.53 元 /kW . h;超过 50kW . h 的,超出部分的用电量电价每千瓦时上调 0.05 元 。输入用户的月用电量(千瓦时),计算并输出该用户应支付的电费(元),若用电量小于 0 ,则输出"Value!" 。试编写相应程序 。
解:
答案代码:
#include int main(void){// (习题2.3.2)/*阶梯电价:为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量 50kW . h ( 含 50kW,h )以内的,电价为 0.53 元 /kW . h;超过 50kW . h 的,超出部分的用电量电价每千瓦时上调 0.05 元 。输入用户的月用电量(千瓦时),计算并输出该用户应支付的电费(元),若用电量小于 0 ,则输出" Invalid Value!" 。试编写相应程序 。*/double x, y; // x为用户月用电量,单位为千瓦每时 。y为电费,单位 元 。printf("input x:");scanf("%lf", &x);if (x < 0){printf("Invaild Value!\n");}else if (x <= 50){y = 0.53 * x;printf("电费 = %lf 元\n", y);}else if (x > 50){y = 0.53 * 50 + (x - 50) * (0.53 + 0.05);printf("电费 = %lf 元\n", y);}return 0;}
运行结果:
题目3:序列求和:输入两个正整数 m 和 n ( 0n(i2+\frac{1}{i}) $ ,结果保留 6 位小数 。试编写相应程序 。
解:
答案代码:
#include int main(void){// (习题2.3.3)/*序列求和:输入两个正整数 m 和 n ( 0
运行结果:
题目4:求交错序列前 n 项和:输入一个正整数 n ,计算交错序列 $ 1-\frac{2}{3}+\frac{3}{5}-\frac{4}{7}+\frac{5}{7}-\frac{6}{11}… $ 的前 n 项之和 。试编写相应程序 。