【综合文库】
第1章习题讲评:
5.请参照本章例题,编写一个C程序,输出以下信息: ****************************** Very good!
******************************
解:程序如下: # include int main()
{ printf(\printf(\Very Good!\\n\\n\
printf(\return 0; }
运行结果:
6.编写一个C程序,输入a, b, c三个值,输出其中最大者。 解:程序如下:
# include int main( ) {
int a,b,c,max;
printf(\scanf(\%d,%d,%d\max=a; if ( max
max=b; if (max printf(\return 0; } 运行结果: 注意:输入的3个数以逗号分隔,如果以空格分隔,会出错,为什么? 7.上机运行以下程序,注意注释的方法。分析运行结果,掌握注释的用法。 1 (1) # include int main() { printf(\ //这是行注释,注释范围从//起至换行符为止return 0; } (2) 把第4行改为 printf(\ /*这是块行注释*/ (3) 把第4行改为如下两行 printf(\do you do!\\n\ /*这是块行注释,如在本行内写不完,可以在下一行继 续写,这部分内容均不产生目标代码*/ (4) 把第4行改为 //printf(\ (5) 把第4行改为 printf(\ //在输出的字符串中加入// (6) 用块注释符把几行语句都作为注释 /* printf(\ return 0; */ 解:请读者上机运行程序,注意观察结果。结果如下: (1) 输出:How do you do! //之后是注释,这部分内容不参加编译,不影响运行结果。 (2) 输出:How do you do! /* 与 */之间是注释,这部分内容不参加编译,不影响运行结果。 (3) 输出:How do you do! 程序运行结果表明:从上一行的/* 到下一行的 */之间是注释,块注释不受一行范围的限制,可以跨行。这部分内容不参加编译,不影响运行结果。 (4) 程序运行时无输出,因为//之后都作为注释,因此在程序编译时不包括printf函数,故无输出。 (5) 输出://How do you do! 在双撇号之间的//不作为注释标记,因此把它按字符原样输出。 (6) 无输出。因为把所有语句都作为注释,不参加编译,程序相当于: # includeint main() { } 2 第3章习题讲评 1.假如我国国民生产总值的年增长率为10%,计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为: p=(1+r)n r为年增长率,n为年数,p为与现在相比的倍数。 解:从附录F(C库函数)可以查到:可以用pow函数求xy的值,调用pow函数的具体形式是pow(x,y)。在使用pow函数时需要在程序的开头用#include指令将头文件包含到本程序模块中。可以用下面的程序求出10年后国民生产总值是现在的多少倍。 程序如下: #include#includeint main() { float p, r, n; r=0.1; n=10; p=pow(1+r,n); printf(\return 0; } 运行结果: 即10年后国民生产总值是现在的2.593742倍。 2.存款利息的计算。有1000元,想存5年,可按以下5种办法存: (1) 一次存5年期。 (2) 先存2年期,到期后将本息再存3年期。 (3) 先存3年期,到期后将本息再存2年期。 (4) 存1年期,到期后将本息再存1年期,连续存5次。 (5) 存活期存款。活期利息每一季度结算一次。 2022年12月的银行存款利息如下: 1年期定期存款利息为4.14%; 2年期定期存款利息为4.68%; 3年期定期存款利息为5.4%; 5年期定期存款利息为5.85%; 3 活期存款利息为0.72%(活期存款每一季度结算一次利息)。 如果r为年利率,n为存款年数,则计算本息和的公式为: 1年期本息和:p=1000×(1+r); n年期本息和:p=1000×(l+n×r); 存n次1年期的本息和:p=1000×(1+r)n; 活期存款本息和:p=1000×(1+r/4)4n。 说明:1000×(1+r/4)是一个季度的本息和。 解:设5年期存款的年利率为r5,3年期存款的年利率为r3,2年期存款的年利率为r2,1年期存款的年利率为r1,活期存款的年利率为r0。 设按第1种方案存款5年得到的本息和为p1,按第2种方案存款5年得到的本息和为p2,按第3种方案存款5年得到的本息和为p3,按第4种方案存款5年得到的本息和为p4,按第5种方案存款5年得到的本息和为p5。 程序如下: # include# includeint main( ) { floatr5, r3, r2, r1, r0, p, p1, p2, p3, p4, p5; p=1000; r5 = 0.0585; r3= 0.054; r2 = 0.0468; r1= 0.0414; r0 = 0.0072; p1=p*((1+r5)*5); //一次存5年期 p2=p*(1+2*r2)*(1+3*r3);//先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2);//先存3年期,到期后将本息再存2年期 p4=p * pow(1+r1, 5); //存1年期,到期后将本息再存1年期,连续存5次 p5=p * pow(1+r0/4, 4*5); //存活期存款,活期利息每一季度结算一次 printf(\ //输出按第1种方案得到的本息和 printf(\//输出按第2种方案得到的本息和 printf(\//输出按第3种方案得到的本息和 printf(\//输出按第4种方案得到的本息和 printf(\//输出按第5种方案得到的本息和 return 0; } 运行结果: 4 3.购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。设d为30万元,p为6000元,r为1%。对求得的月份取小数点后一位,对第2位小数按四舍五入处理。 提示:计算还清月数m的公式如下:m?lgp?lg(p?d?r)lg1(?r) 可以将公式改写为 ?plg??p?d?rm??lg1(?r)???? C的库函数中有求对数的函数logl0,是求以10为底的对数。 解:根据以上公式可以很容易写出以下程序: # include# includeint main() { float d=300000, p= 6000, r=0.01, m; m=log10(p/(p-d*r))/log10(1+r); printf(\return 0; } 运行结果: 即需要69.7个月才能还清。 4.分析下面的程序: # includeint main() {char c1,c2;c1=197;c2=198; printf(\ printf(\ return 0; } (1) 运行时会输出什么信息?为什么? 5 查看全文