下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
循环结构应用【例1】用π4≈1-13+15-17+⋯公式求π的近似值,程序分析:多项式的各项的规律:①每项的分子都是1。②后一项的分母是前一项的分母加2。③第一项的符号为正,从第二项起,每一项的符号与前一项的符号相反。找到这些规律后,就可以用循环来处理了。例如,前一项的值是1n,则可以推出下一项为-可以看出,4分之π的值是由求一个多项式的值来得到的。这个多项式从理论上说包含无穷项,包含的项数越多,近似程度就越高。但是在实际运算时不可能计算到无穷项,现在题目已明确,当多项式中的某一项的绝对值小于10的-6次方时,就认为足够近似了,可以据此计算出π的近似值了。程序如下:#include<stdio.h>#include<math.h> //程序中用到数学函数fabs,应包含头文件math.hmain(){intsign=1; //sign用来表示数值的符号doublepi=0.0,n=1.0,term=1.0; //pi开始表示多项式的值,最后代表π的值,//n代表分母,term代表当前项的值while(fabs(term)>=1e-6) //检查当前项term的绝对值是否>或=10的-6次方{pi=pi+term; //把当前项term累加到pi中n=n+2; //n+2是下一项的分母sign=-sign; //sign代表符号,后一项的符号与前一项符号相反term=sign/n; //求出下一项的值term}pi=pi*4; //多项式的和pi×4,才是π的近似值printf(“pi=%10.8f\n”,pi); //输出π的近似值}运行结果:虽然输出了8位小数,但是只有前5位小数3.14159是准确的,因为第7位已小于10的-6次方,后面的项没有累加。【例2】计算用户多次输入的若干个数的平均值,去掉一个最大数和一个最小数后再求平均值。程序分析:要让用户反复执行输入操作时,可以利用scanf函数进行判断,如果用户没有按照scanf规定的输入模式输入数据,例如要求输入数字,结果输入的是字符,则该函数将会返回数字0,表示失败。如果格式正确,输入成功,该函数将返回数字1。因此在编写循环时,用返回值m!=0,即输入成功作为循环条件来进行判断。程序如下:main(){doublesum=0,aver=1; //sum、aver分别用来存放数的和、平均值doublex=0,max,min; //x,max,min分别用来存放输入的数、最大值、最小值intcount=0; //count表示输入数字的个数intm=1; //m表示输入成功与否的标志printf(“输入数字,回车确认(输入no结束输入过程):\n”);m=scanf(“%lf”,&x); //输入数字送到x中,输入成功m=1,否则m=0max=min=x;while(m!=0) //当输入成功时,执行循环体{count++; //输入数的个数加1sum=sum+x; //输入的数累加求和printf(“输入下一个数据,回车确认(输入no结束输入过程):\n”);m=scanf(“%lf”,&x);if(x>max)max=x;if(x<min)min=x;}aver=sum/count; //求平均值printf(“所有输入数的平均值是:%f\n”,aver);if(count>=3) //如果输入数的个数大于等于3个{printf(“去掉一个最大数%f、一个最小数%f\n”,max,min);aver=(sum-max-min)/(count-2); //求平均值printf(“平均值是:%f\n”,aver);}}运行结果:【例3】程序随机给出一个1~100之间的数,让用户猜这个数。程序分析:当用户给出的猜测不等于程序给出的数时,程序会提示用户“猜大了”,或“猜小了”,并要求用户继续猜测;只有猜当用户的猜测等于程序给出的数时,程序提示用户“猜对了”,并不再要求用户继续猜测。其次,怎样获得一个随机数呢?首先要确定随机数种子,然后才能模拟得到一个随机数。在C语言里可以使用srand()函数(在stdlib.h库中),并将当前机器的时间设置为随机数种子(time函数在time.h库中):srand(time(NULL));然后调用rand()函数(在stdlib.h库中)得到一个大于0的随机数,例如,为了得到1~100之间的随机数number,可以进行如下操作:number=rand()%100+1;程序如下:#include<stdio.h>#include<time.h> //程序中用到time函数#include<stdlib.h> //程序中用到srand函数和rand函数main(){intnumber,guess; //number,guess分别表示随机数、用户猜测数intcount=0; //记录用户猜测的次数srand(time(NULL)); //用当前时间做随机数种子printf(“给你一个1~100之间的数字,请猜测:\n”);number=rand()%100+1; //得到1~100之间的随机数do{scanf(“%d”,&guess);count++; //输入次数加1if(guess>number) //如果输入的数大于随机数printf(“第%d次猜测,猜大了,请再猜:\n”,count);elseif(guess<number) //如果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 疫情后心态建设调整方案
- 房屋内部卫生间更新方案
- 做好医院禁烟工作方案
- 商南茶叶品牌建设方案
- 压力管道焊缝射线检测施工方案
- 服务器安全防护设计课程设计
- 部件测绘课程设计
- 高考文化常识题
- 小学数学二年级下册应用题专项练习(每日一练共17份)
- 多元赋能·同心共育-七年级期中家校共育讲义
- 2026年教师资格证(小学)《教育教学知识与能力》真题及答案解析
- 2026年苏科版(新教材)小学信息技术六年级下册(全册)同步练习及答案
- (2026年)室上性心动过速课件
- 2026年全民营养周-营养餐桌+家庭健康课件
- 2026广东中考生物押题必刷卷含答案
- 高校党建知识竞赛试卷(附答案)
- 电力网络安全隐患排查评估整治技术指南(2025年版)
- 2025 网络基础的数字人民币跨境支付网络的探索与实践课件
- 深圳市龙华产业资本投资有限公司招聘笔试题库2026
- 中国脑卒中二级预防指南(2025年版)
- 第四期入团积极分子培训理论考试题库
评论
0/150
提交评论