C语言课后习题答案-第四版-第一章5、请参照本章例题,编写一个C语言程序,输出以下信息:****************************VeryGood!****************************#includestdio.hintmain(){printf(**************************\n\n);printf(VeryGood!\n\n);printf(**************************\n);return0;}6、编写一个C语言程序,输入a,b,c三个值,输出其中最大值。#includestdio.hintmain(){inta,b,c,max;printf(pleaseinputa,b,c:\n);scanf(%d%d%d,&a,&b,&c);max=a;if(maxb)max=b;if(maxc)max=c;printf(Thelargestnumberis%d\n,max);return0;}#includestdio.hintmain(){inta,b,c,max;printf(pleaseinputa,b,c:\n);scanf(%d%d%d,&a,&b,&c);max=ab?a:b;max=maxc?max:c;printf(Thelargestnumberis%d\n,max);return0;}第3章1、假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为P=(1+r)^nr为年增长率,n为年数,p为与现在相比的倍数。#includestdio.h#includemath.hintmain(){floatp,r,n;r=0.1;n=10;p=pow(1+r,n);printf(p=%f\n,p);return0;}2、存款利息计算。有1000元,想存5年,可按以下5种办法存:(1)一次存5年期。(2)先存2年期,到期后将本息在存3年期。(3)先存3年期,到期后将本息在存2年期。(4)先存1年期,到期后将本息在存1年期,连续存5次。(5)存活期存款。活期利息每一季度结算一次。2007年12月的银行存款利息如下:1年定期存款利息为4.14%;2年定期存款利息为4.68%;3年定期存款利息为5.4%;5年定期存款利息为5.85%;活期存款利息为0.27%(活期利息每一季度结算一次。)如果r为年利率,n为存款年数,则计算本息和的公式为1年期本息和:P=1000*(1+r);n年期本息和:P=1000*(1+n*r);存n次1年期的本息和:P=1000*(1+r)^n;存活期本息和:P=1000*(1+r/4)^4n。说明:P=1000*(1+r/4)^4n。是一个季度的本息和。#includestdio.h#includemath.hintmain(){floatr5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p=1000;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(p1=%f\n,p1);//输出按第1方案得到的本息和printf(p2=%f\n,p2);//输出按第2方案得到的本息和printf(p3=%f\n,p3);//输出按第3方案得到的本息和printf(p4=%f\n,p4);//输出按第4方案得到的本息和printf(p5=%f\n,p5);//输出按第5方案得到的本息和return0;}3、购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。设d为300000元,p为6000元,r为1%。对求得的月份取小数点后一位,对第2位按四舍五入处理。提示:计算还请月数m的公式如下:m=[logp–log(p-d*r)]/log(1+r)可以讲公式该写为m={log[p/(p–d*r)]}/log(1+r)C的库函数中有求对数的函数log10,是求以10为底的对数,log(p)表示logp。#includestdio.h#includemath.hintmain(){floatd=300000,p=6000,r=0.01,m;m=log10(p/(p-d*r))/log10(1+r);printf(m=%6.2f\n,m);return0;}6、请编将“China”,编译成密码,密码规律是:用原有的字母后面第4个字母代替原来的字母。#includestdio.hintmain(){charc1='C',c2='h',c3='i',c4='n',c5='a';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf(passworis%c%c%c%c%c\n,c1,c2,c3,c4,c5);return0;}7、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆柱表面积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。请编程序。#includestdio.hintmain(){floath,r,l,s,sq,vq,vz;floatpi=3.141526;printf(请输入圆半径r,圆柱高h∶);scanf(%f,%f,&r,&h);//要求输入圆半径r和圆柱高hl=2*pi*r;//计算圆周长ls=r*r*pi;//计算圆面积ssq=4*pi*r*r;//计算圆球表面积sqvq=3.0/4.0*pi*r*r*r;//计算圆球体积vqvz=pi*r*r*h;//计算圆柱体积vzprintf(圆周长为:l=%6.2f\n,l);printf(圆面积为:s=%6.2f\n,s);printf(圆球表面积为:sq=%6.2f\n,sq);printf(圆球体积为:v=%6.2f\n,vq);printf(圆柱体积为:vz=%6.2f\n,vz);return0;}第四章4、有3个正整数a,b,c,有键盘输入,输出其中最大的数。#includestdio.hintmain(){inta,b,c;printf(请输入三个整数:);scanf(%d,%d,%d,&a,&b,&c);if(ab)if(bc)printf(max=%d\n,c);elseprintf(max=%d\n,b);elseif(ac)printf(max=%d\n,c);elseprintf(max=%d\n,a);return0;}4、有3个正整数a,b,c,有键盘输入,输出其中最大的数。#includestdio.hintmain(){inta,b,c,temp,max;printf(请输入三个整数:);scanf(%d,%d,%d,&a,&b,&c);temp=(ab)?a:b;/*将a和b中的大者存入temp中*/max=(tempc)?temp:c;/*将a和b中的大者与c比较,取最大者*/printf(三个整数的最大数是%d\n,max);return0;}5、从键盘输入一个小于1000的正整数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。要求在输入数据后先对其检查是否为小于1000的正数。若不是,则要求从新输入。#includestdio.h#includemath.h{#defineM1000intmain(){inti,k;printf(请输入一个小于%d的整数i:,M);scanf(%d,&i);while(iM){printf(输入的数不符合要求,请重新输入一个小于%d的整数i:,M);scanf(%d,&i);}k=sqrt(i);printf(%d的平方根的整数部分是:%d\n,i,k);return0;}6、有一个函数:x(x1)y=2*x-1(1=x10)3*x–11(x=10)写程序,输入x的值,输出y相应的值。#includestdio.hintmain(){·intx,y;printf(输入x:);scanf(%d,&x);if(x1)/*x1*/{y=x;printf(x=%3d,y=x=%d\n,x,y);}elseif(x10)/*1=x10*/{y=2*x-1;printf(x=%d,y=2*x-1=%d\n,x,y);}else/*x=10*/{y=3*x-11;printf(x=%d,y=3*x-11=%d\n,x,y);{}return0;}7、有一个函数:-1(x0)Y=0(x=0)1(x0)写程序,输入x的值,输出y相应的值。#includestdio.hintmain(){intx,y;printf(pleaseenterx:);scanf(%d,&x);y=0;if(x=0)if(x0)y=1;elsey=-1;printf(x=%d,y=%d\n,x,y);return0;}8、给出一百分制成绩,要求输出成绩等级‘A’,’B’,’C’,’D’,’E’。90分以上为‘A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。#includestdio.hintmain(){floatscore;chargrade;printf(请输入学生成绩:);scanf(%f,&score);while(score100||score0){printf(\n输入有误,请重输);scanf(%f,&score);}switch((int)(score/10)){case10:case9:grade='A';break;case8:grade='B';break;case7:grade='C';break;case6:grade='D';break;case5:case4:case3:case2:case1:case0:grade='E';}printf(成绩是%5.1f,相应的等级是%c\n,score,grade);return0;}9、给出一个不多于5位数的正整数;(1)求出它是几位数;(2)分别输出每一位数字;(3)按逆顺序输出各位数,例如原有数为123,应输出321.#includestdio.h#includemath.hintmain(){intnum,indiv,ten,hundred,thousand,ten_thousand,place;//分别代表个位,十位,百位,千位,万位和位数printf(请输入一个整数(0-99999):);scanf(%d,&num);if(num9999)place=5;elseif(num999)place=4;elseif(num99)place=3;elseif(num9)place=2;elseplace=1;printf(位数:%d\n,place);printf(每位数字为:);ten_thousand=num/10000;thousand=(int)(num-ten_thousand*10000)/1000;hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10)