C语言例题第七章.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 【例7.1】输入若干非0实数,统计其中正数的个数,负数的个数。遇到0时结束。 分析:设两个计数器变量n和m,n用于统计正数的个数,m用于统计负数的个数。 算法的程序代码如下: #include stdio.h main( ) { int n,m; double x; n=0; m=0; printf(please input real numbers:\n ); scanf(%lf ,x); while(x!=0) { if(x0) n++; else m++ scanf(%lf ,a); } printf(plus=%d,negative=%d\n ,n,m); } 【例7.2】输入一串字符,统计其中的小写字母和大写字母的个数。遇到结束符‘\n’时停止输入。 算法的程序代码如下: #include stdio.h main( ) { char ch; int cap=0,low=0; printf(please input a string:\n ); while(1) { ch=getchar(); if(ch==‘\n’) break; if(ch=‘a’ch=‘z’) low++ else if(ch=‘A’ch=‘Z’) cap++; } printf(capital=%d,lowercase=%d ,cap ,low); } 【例7.3】输入n个整数,计算并输出平均成绩,要求输出精确到两位小数。 算法的程序代码如下: #include stdio.h main( ) { int i, score, sum=0 double ave; printf(please input n=\n ); scanf(%d ,n); printf(input %d number :\n ,n); for(i=1;i=n;i++) { scanf(%d ,score); sum+=score; } ave=sum/n; printf(average=%.2f\n ,ave); } 对于一些较为复杂的累加累乘问题,可以先将问题进行分解成简单的累加累乘问题,然后在进行计算。 【例7.6】公元五世纪,我国数学家张邱建在《算经》一书中提出有趣的百钱买百鸡问题:“鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁母雏各几何?” 分析:设x,y,z分别表示买鸡翁,鸡母,鸡雏的数目,则有 x+y+z=100 5x+3y+z/3=100 三个未知数,两个方程,有无穷多组解,在本题中,应只求正整数解。根据可能性分析,得出可能的取值范围为:鸡翁x:1~19之间;鸡母:1~32之间;鸡雏:3~98之间; 可用一个三重循环对x,y,z的所有组合情况,测试满足条件的解。 为减少循环次数,可对上述方程进行优化,用z=100-x-y带入另一个方程,得:7x+4y=100。 用二重循环即可实现程序代码。 算法程序代码如下: #include stdio.h main( ) { int x,y; printf(%5c%5c%5c\n,x,y,z); for(x=1;x=19;x++) for(y=1;y=32;y++) if(7*x+4*y==100) { printf(%5d%5d%5d\n,x,y,100-x-y); break; } } 【例7.7】打印水仙花数。所谓水仙花数是指这样的三位正整数,其各位数字立方和等于该数本身。如:153=13+53+33 #include stdio.h /*算法一*/ main( ) { int i,j,k,m,n; for(i=1;i=9;i++) for(j=0;j=9;j++) for(k=0;k=9;k++) { m=i*i*i+j*j*j+k*k*k; n=100*i+10*j+k; if(m==n) printf(%d\n,m); } } 单重循环算法的程序代码如下: #include stdio.h /*算法二*/ main( ) { int m,n,i,j,k; for(m=100;m=999;m++) { i=m/100; j=m/10%10; k=m%10; n=i*i*i+j*j*j+k*k*k; if(m==n) printf(%d\n,m); } } 【例7.8】编程找出1000以内所有被3除余1,被5除余2,被7除余3的数。

文档评论(0)

gl5000 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档