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

1 / 106
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功