您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > C语言程序设计(何欣铭、颜晖-第2版)课后习题答案
1139.c/.cpp.obj.exeC²²sum=sum+isum=sum-i1.321.41.211006sum=0i=1i=100i6sum=sum+ii=i+1sum1.11100612==4nn1n11.222i=2i=n/2nii=i+1in/2nnn1.2n31.41100614#includestdio.hintmain(void){printf(A\n);printf(AA\n);printf(A\n);return0;}1862函数的概念C语言中有两种类型函数标准库函数自定义函数函数可以做到一次定义、多次调用使用自定义函数的程序框架doublefact(intn);/*声明自定义函数,以分号结束*/intmain(void){……result=fact(i);/*调用自定义函数fact(i)计算i!*/……}/*定义求n!的函数*/简单总结本节内容。使学生了解自定义函数编程结构,能够模仿编程即可。2.3练习与习题参考答案2.3.1练习参考答案2-1编写程序,在屏幕上显示一个短句“ProgramminginCisfun!”。解答:#includestdio.hintmain(void){printf(ProgramminginCisfun!\n);return0;}2-2下列语句的运行结果是什么?与例2-2的运行结果有何不同?为什么?printf(Programmingisfun.AndProgramminginCisevenmorefun!\n);解答:运行结果:Programmingisfun.AndProgramminginCisevenmorefun!例2-2的运行结果分2行显示。原因在于,例2-2中在每条输出语句的结尾都采用了‘\n’换行。2-3编写程序,在屏幕上显示如下图案。**********解答:intmain(void){printf(****\n***\n**\n*\n);return0;}192-4编写程序,求华氏温度150°F对应的摄氏温度(计算公式同例2-3)。解答:#includestdio.hintmain(void){intcelsius,fahr;fahr=150;celsius=5*(fahr–32)/9;printf(fahr=%d,celsius=%d\n,fahr,celsius);return0;}2-5算术表达式5*(fahr-32)/9能改写成5(fahr-32)/9吗?为什么?如果将其改写为5/9*(fahr-32),会影响运算结果吗?解答:5(fahr-32)/9不是合法的C表达式,因为不能省略运算符*;5/9*(fahr-32)的值为0。2-6一个物体从100米的高空自由落下,编写程序,求它在前3秒内下落的垂直距离。设重力加速度为10m/s2。解答:#includestdio.hintmain(void){doubleheight;height=0.5*10*3*3;printf(height=%.2f\n,height);return0;}2-7输入提示和输入语句的顺序应该如何安排?例2-5中,scanf(%d%d%lf,&money,&year,&rate)能改写为scanf(%d%lf%d,&money,&year,&rate)吗?为什么?能改写为scanf(%d%lf%d,&money,&rate,&year)吗?如果可以,其对应的输入数据是什么?解答:输入提示在前,输入语句在后。不能改写为scanf(%d%lf%d,&money,&year,&rate),因为%lf与整型变量money不匹配,%d与浮点型变量rate不匹配。与scanf(%d%lf%d,&money,&rate,&year)对应的输入数据为:10000.02532-8编写程序,输入华氏温度,输出对应的摄氏温度,计算公式同例2-3。解答:#includestdio.hintmain(void){intcelsius,fahr;20scanf(%d,&fahr);celsius=5*(fahr-32)/9;printf(celsius=%d\n,celsius);return0;}2-9编写程序,输入3个整数,计算并输出它们的平均值。解答:#includestdio.hintmain(void){inta,b,c;doubleaverage;scanf(%d%d%d,&a,&b,&c);average=(a+b+c)*1.0/3;printf(average=%.2f\n,average);return0;}2-10编写程序,输入x,计算并输出下列分段函数f(x)的值(保留3位小数)。10()00xyfxxx解答:#includestdio.hintmain(void){doublex,y;scanf(%lf,&x);if(x!=0)y=1/x;elsey=0;printf(f(%.2f)=%.3f\n,x,y);return0;}2-11编写程序,输入x,计算并输出下列分段函数f(x)的值(保留2位小数),请调用sqrt函数求平方根,调用pow函数求幂。5120()0xxxxyfxxx解答:#includestdio.h21#includemath.hintmain(void){doublex,y;scanf(%lf,&x);if(x=0)y=sqrt(x);elsey=pow(x,5)+2*x+1/x;printf(f(%.2f)=%.2f\n,x,y);return0;}2-12编写程序,输入2个整数lower和upper,输出一张华氏-摄氏温度转换表,华氏温度的取值范围是[lower,upper],每次增加2°F,计算公式同例2-7。解答:#includestdio.hintmain(void){intlower,upper;doublecelsius,fahr;scanf(%d%d,&lower,&upper);printf(fahrcelsius\n);for(fahr=lower;fahr=upper;fahr=fahr+2){celsius=5*(fahr-32.0)/9;printf(%3.0f%6.1f\n,fahr,celsius);}return0;}2-13编写程序,输入一个正整数n,求11nii。解答:#includestdio.hintmain(void){inti,n;doublesum;scanf(%d,&n);sum=0;for(i=1;i=n;i++)sum=sum+1.0/i;printf(sum=%.6f\n,sum);22return0;}2-14编写程序,输入一个正整数n,计算111.....35的前n项之和。解答:#includestdio.hintmain(void){inti,n;doublesum;scanf(%d,&n);sum=0;for(i=1;i=n;i++)sum=sum+1.0/(2*i-1);printf(sum=%.6f\n,sum);return0;}2-15编写程序,输入一个正整数n,计算111111.....47101316的前n项之和。解答:#includestdio.hintmain(void){intflag,i,n,denominator;doubleitem,sum;scanf(%d,&n);sum=0;flag=1;denominator=1;for(i=1;i=n;i++){item=flag*1.0/denominator;sum=sum+item;flag=-flag;denominator=denominator+3;}printf(sum=%.3f\n,sum);return0;}2-16编写程序,输入两个正整数m和n,计算m!+n!。解答:#includestdio.h23intmain(void){inti,m,n;doublefm,fn;scanf(%d%d,&m,&n);fm=1;for(i=1;i=m;i++)fm=fm*i;fn=1;for(i=1;i=n;i++)fn=fn*i;printf(%d!+%d!=%.0f\n,m,n,fm+fn);return0;}2-17执行下列程序段后,sum的值是。for(i=1;i=10;i++){sum=0;sum=sum+i;}解答:sum的值是10。2-18输入一个正整数n,生成一张3的乘方表,输出30到3n的值,可以调用幂函数计算3的乘方。解答:#includestdio.h#includemath.hintmain(void){inti,n;doublemypow;scanf(%d,&n);for(i=0;i=n;i++){mypow=pow(3,i);printf(pow(3,%d)=%.0f\n,i,mypow);}return0;}2-19输入一个正整数n,生成一张阶乘表,输出1!到n!的值。要求定义和调用函数fact(n)计算n!,函数类型是double。解答:#includestdio.hintmain(void)24{inti,n;doublemyfact;doublefact(intn);scanf(%d,&n);for(i=1;i=n;i++){myfact=fact(i);printf(%d!=%.0f\n,i,myfact);}return0;}doublefact(intn){inti;doubleproduct;product=1;for(i=1;i=n;i++)product=product*i;returnproduct;}2-20根据下列公式可以算出从n个不同元素中取出m个元素(m≤n)的组合数。编写程序,输入2个正整数m和n(m≤n),计算并输出组合数。要求定义和调用函数fact(n)计算n!,函数类型是double。!!()!mnnCmnm解答:#includestdio.hdoublefact(intn);intmain(void){intm,n;doubles;scanf(%d%d,&m,&n);s=fact(n)/(fact(m)*fact(n-m));printf(result=%.0f\n,s);return0;}doublefact(intn){inti;doubleproduct;product=1;for(i=1;i=n;i++)25product=product*i;returnproduct;}2.3.2习题参考答案1.编写程序,输入两个整数num1和num2,计算并输出它们的和、差、积、商与余数。解答:#includestdio.hintmain(void){intnum1,num2;scanf(%d%d,&num1,&num2);printf(%d+%d=%d\n,num1,num2,num1+num2);printf(%d-%d=%d\n,num1,num2,num1-num2);printf(%d*%d=%d\n,num1,num2,num1*num2);printf(%d/%d=%d\n,num1,num2,num1/num2);printf(%d%%%d=%d\n,num1,num2,num1%num2);return0;}2.为了倡导居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分两个“阶梯”:月用电量50千瓦时以内的,电价为0.53元/千瓦时;超过50千瓦时的用电量,电价上调0.05元/千瓦时。编写程序,输入用户的月用电量(千瓦时),计算并输出该用户应支付的电费(元)。解答:#includestdio.hintmain(void){doublecost,e;scanf(%d,&repeat);scanf(%lf,&e);if(e=50)co
本文标题:C语言程序设计(何欣铭、颜晖-第2版)课后习题答案
链接地址:https://www.777doc.com/doc-6374289 .html