- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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的数。
您可能关注的文档
最近下载
- 小学语文一至六年级部编教材快乐读书吧内容及要求一览表.docx
- 六年级语文上学期复习计划.docx
- 构建小学低年级有效的识字教学模式——小学低年级识字教学有效性实践研究-来源:新课程(第2019004期)-山西三晋报刊传媒集团有限责任公司.pdf VIP
- 第8课 增设动画添效果(课件)五年级上册信息技术闽教版.ppt
- 沪教版小学牛津英语五年级第一学期5A-M1U1-习题卷(附答案).docx VIP
- 第三期聚心计划考试.docx
- 部编版三年级语文上册第2单元《语文园地二》课件.pptx VIP
- 冷链物流仓储中心建设项目可行性研究报告.doc
- 大学生职业生涯规划课教案.doc VIP
- 试析有效识字教学.doc VIP
文档评论(0)