ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:21.54KB ,
资源ID:12629821      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-12629821.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第5章作业答案DOC.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

第5章作业答案DOC.docx

1、第5章作业答案DOC5-1 编写程序,输入某种功课的若干个同学的成绩,以-1作为终止的特殊成绩,计算平均成绩并输出.解#include “stdio.h”void main() int i,score; float sum; i=0; printf(“enter score end with -1:”); scanf(“%d”,&score); while (score!=-1) i=i+1; sum=sum+score; scanf(“%d”,&sore); printf(“aver score is %f”,sum/i);程序运行时,首先显示enter score end with -1:

2、如果用户输入:98 99 87 86 -1则运行结果为:啊上十92.5000005-2编写程序计算如果每年按照年利率I(例如2%)投资S(例如50000元),在第Y(例如10)年得到的总钱数M。公式:M=S*(1+I)y解 #Include “stdio.h” Void main() float I,s,m; int y; printf(“Enter data:”); scanf(“%f%f%d”,&I,&s,&y); m=s; while (y=1) m=m*(1+i); y-; printf(“There are %10.2f yuan”,m); 程序运行时,首先显示Enter data:

3、如果用户输入:0.02 50000 10则运行结果为:There are 59754.63 yuan 5-3编写程序,用循环语句输入下列图形。 ABCDEFGHIJKLM*NOPQRSTUVWXYZ BCDEFGHIJKLM*NOPQRSTUVWXY CDEFGHIJKLM*NOPQRSTUVMX DEFGHIJKLM*NOPQRSTUVMEFGHIJKLM*NOPQRSTUV FGHIJKLM*NOPQRSTU GHIJKLM*NOPQRST HIJKLM*NOPQRS IJKLM*NOPQR JKLM*NOPQ KLM*NOP LM*NO M*N * 解 #include “stdio.h

4、” Void main() int I,j;char c; for (i=0,i=13;i+) for (j=0;ji;j+) putchar( ); for (c=A+i;c=M;c+) putchar(c); putchar(*); for (c=N;c=Z-i;c+) putchar(c); putchar(n); 程序运行时,将按题目要求显示图形。5-4编写程序,输出九九乘法表。1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=92*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16

5、2*9=18.解 #include “stdio.h” Void main() int i,j;for (i=1;i=9;i+)for (j=1;j=a& c=A& c=0& c=9) count_digital+; else count_other+; c=getchar(); printf(“nchar:%d,digital:%d,others:%dn”,count_char,count_digital,count_other); 程序运行时,如果用户输入:There are 30 students in the classroom 则运行结果为:char: 30, digital: 2

6、, others: 75-6编写程序通过计算100个矩形的面积得到函数f(x)的数值积分。f(x)=(x +x2,其中0xb。解 #define f(x) (x)*(x)+(x) #include “stdio.h”void main() Double a,b,h,x,sum; int i; a=0; b=0; h=(b-a)/100; sum=0; for (i=0;i100;i+) x=a+i*h; sum=sum+h*f(x); printf(“nsum of area is %lf”,sum);程序运行结果:Sum of area is 4.066800说明本题的循环是比较简单的,是循

7、环100次,框图在此略去。主要是要计算在区间(a,b)之间的100个小矩形的面积,这100个小矩形的宽是(b-a)/100,高是f(x),x的值在区间(a,b)中,第一个x的值是a+1*h,第二个x值是a+2*h,依次类推。5-7求1-1/2+1/3-1/4+.+(-1)n+1/n的值并输出。结束条件为1/n=1.E-5;I+) sum=sum=flag*1.0/i; flag=-flag; Printf(“nSum is %f”,sum); 解程序的运行结果:sum is 0.693134说明本题的关键是循环的次数不是使用循环计数器控制,而是使用一个条件来控制循环,循环条件是:fads(1.

8、0/i)=1.E-55-8若口袋放12个球, 3个红的,3个白的,6个黑的,从中任选8个,编写程序列出所有可能的取法。解方法一: #include “stdio.h” void main() int red ,white ,black; for (red=0;red=3;red+) for (white=0;white=3;white+) for (black=0;black=6;black+) if (red+white+black=8) printf(“nred %d,white %d,black %d”,red,white,black); 方法二: #include “stdio.h”

9、void main() int red,white,black; for (red=0;red=3;red+) for (white=0;white=3;white+) if ( (8-red-white)=6) printf(“nred %d,white %d,black %d”,red,white,8-red-white); 程序运行结果:red 0,white 2,black 6red 0,white 3,black 5red 1,white 1,black 6说明本题使用穷举法解决问题。第一种方法使用三重循环,对每一种颜色的球的个数进行穷举,红色和白色球个数的上限为3,黑色白色球个数的

10、上限为6,三种球的个数想加是8,就是一组取法;第二种方法使用双重循环,只对红色和白色球的个数进行穷举,而黑色球使用公式8-red-white计算出来,当然这个数的上限为6,所以要用if语句做判断,黑色球满足这个条件时,就是一组取法。5-9编写程序,输入一个正整数,计算并显示该整数的各位数字之和,例如整形数1987各位数字之和是1+9+8+7,等于25。解 #incliude “stdio.h” void main() long i,sum; int k; printf(“n enter a integer:”); scanf(“%d”,&i); sum=0; while(i!=0) k=i%1

11、0; sum=sum+k; i=i/10; printf(“n sum is %d”,sum);程序运行时,首先显示Enter a integer:如果用户输入:1987则运行结果为sum is 255-10编写程序用循环语句解决下列问题:一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在第10次落地时共经过多少米?第10次反弹多少米?解方法一:#include “stdio.h”void main() int i;float total ,high;total=high=100.0;i=1 ;while (i=10) high=hight/2; total=total+

12、2*high; i+; total=total-2*high; printf(“nTotal is %f,the tenth is %f”,total,high);方法二:#include “stdio.h”void main() int i; float total,high; total=100.0; higf=total/2;i=2;while (i=10) total=total+2*high; high=high/2;i+;printf(“nTotal is %f,the tenth is %f!”,total,high);程序运行结果:Total is 299.609375,the

13、 tenth is 0.097656!说明本题循环语句控制也是比较简单的,只是要注意循环次数与题目的要求是否吻合。例如,方法一中,循环次数是10次,则为了求在第十次落地时共经过多少米,需要将第十次反弹的距离减掉。5-11请为“百鸡问题”编写程序。百鸡问题:“鸡翁一,值钱三;鸡雠三,值钱一。百钱买百鸡,问鸡翁、母、雠各几只“。解方法一:#include “stdio.h”void main() int cock ,hen,chick; for (cock=0;cock=20;cock+) for (hen=0;hen=33:hen+) for (chick=0;chick=100;chick+)

14、 if(cock*5+hen*3+chick/3=100& chick%3 =0& (cock+hen+chick)=100) printf(“ncock %d,hen %d,chick %d”,cock,hen,chick);方法二:#include “stdio.h”void main() int cock,hen,chick; for (cock=0;cock=20;cock+) for (hen=0;hen=33;hen+) chick=100-hen-cock; if(cock*5+hen*3+chick/3=100&chick%3=0& (cock+hen+chick)=100)

15、printf(“ncock %d,hen %d,chick %d”,cock,hen,chick); 方法三:#include “stdio.h”void main() int cock,hen,chick; for (cock=0;cock=0&chick=0) printf(“ncock %d,hen %d,chick %d”,cock,hen,chick); 程序运行结果:cock 0, hen 25, chick 75cock 4, hen 18, chick 78cock 8, hen 11, chick 81cock 12, hen 4, chick 84说明方法一使用三重循环对鸡

16、翁、母、雏的只数进行穷举,是最容易想到的方法,也是效率最低的;方法二使用双重循环对鸡翁、母的只数进行穷举,而鸡雏的只数由公式“100-鸡翁-鸡母”计算;而由下面两个公式: 鸡翁+鸡母+鸡雏=100 鸡翁*5+鸡母*3+鸡雏/3=100可以推出:鸡翁*7+鸡母*4=100,从而得出鸡母=(100-鸡翁*7)/4,因此方法三只对鸡翁的只数进行穷举,而鸡母和鸡雏分别用公式求得,因此用单循环即可,是效率最高的方法。5-12编写程序求解1000!的末尾有多少个0(注意,不能做连乘,否则会溢出的)。解#include “stdio.h”void main() int I,sum,k; sum=0; for

17、 (i=5;i0;i- -) s=i*j*a; sum=sum+s; j=j*10; for (i=1;i=n;i+) for (j=1;j=i;j+) printf(“%d”,a); if (i= =n) printf(“= %ld”,sum); else printf(“+”); 方法二: #include “stdio.h” void main() long sum,s,a; int I,n,j,b; printf(“nEnter a and n:”); scanf(“%ld%d”,&a,&n); sum=0; s=0; for (i=1;i=n;i+) s=s+a;sum=sum+s;

18、s=s*10; for(i=1;i=n;i+) for (j=1;j=I;j+) printf(“%d”,b); if (i=n) printf(“=%ldn”,sum); else printf(“+”); 程序运行时,首先显示Enter a and n:如果用户输入:2 5则运行结果为:2+22+222+2222+22222=24690说明方法一与方法二的思路完全不同。方法一中将a+aa+aaa+aaaa+aaaaa看成是下面的式子 a a a a a a a a a a + a a a a a-从该式子看出,计算的结果应该是:“个位的n个a”+“十位的n-1个a”+“百位的n-2个a”+

19、。因此,在程序中用s=i*j*a计算“个位的n个a”,“十位的n-1个a”;其中,i从n递减到1,而j以1,10,100的方法扩大,表示个位,十位,百位。 而方法二的思路是将a扩大10倍并加上a,变成aa;再将aa扩大10倍并加上a,变成aaa,依此类推,在变化的同时将a与aa以及aaa进行累加。5-14编写程序求1!+2!+3!+.+n!,n为输入并且3=n=20。解 #include “stdio.h” void main() float sum,product; int i,n; printf(“n enter n (4=n20IIn4) printf(“n enter n again:

20、”); Scanf(“%d”,&n); sum=0;product=1;for(i=1;i=n;i+); product=product*i; sum=sum+product;printf(“1!+2!+3!+. %d!=%fn”,n,sum); 方法二: #include “stdio.h” void main() float sum,product; int i,n,j; printf(“nEnter n (4=n20IIn4) printf(“nEnter n again:”); scanf(“%d”,&n); sum=0;product=1;for (i=1;i=n;i+) produ

21、ct=1; for (j=1;j=i;j+) product=product*j; sum=sum+product;printf(“1!+2!+ %d=%fn”n,sum); 说明本题为了输出格式好看,n的下限是4,为防止溢出,n的上限使20。两种方法第一种的效率高,而第二种比较容易理解,内循环是求一!。5-15猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天剩下的桃子,吃掉一半,又多吃了一个。以后每天将前一天的桃子吃掉一半,再多吃一个。到第10天只剩下一个桃子,求第一天共摘了多少桃子。 解 #include “stdio.h” void main( ) i

22、nt i,y,x;i=1;x=1;while (i=9) x=(x+1)*2; i+;printf(“Total is %dn”,x); 说明 根据题目,第10天剩下一个桃子(设为X),第9天的桃子就是(X+1)*2,第8天的桃子就是(第9天的桃子+1)*2,依次类推。5-16编写程序输出下列图形: 12 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9解 #include “stdio.h”void main( ) int i,j;char c; for (i=1;ii;

23、j- -) putchar( ); for (j=1;j=I;j+) putchar(i+ 0); putchar(n); 5-17判断下面程序的运行结果,并用for语句代替while语句重新编写程序,确保输出结果相同。 #include “stdio.h” void main( ) int i,sum; i=sum=0; while (i=5) sum+=1; i+; printf(“i=%d,sum=%dn”,i,sum); 解程序的运行结果是:i=6,sum=15 用for语句代替while语句程序如下:#include “stdio.h”void main*( ) int i,sum; for (i=sum=0;i0); printf(“i=%d,s

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2