




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上机实验六 循环结构程序设计学号: 姓名: 一目的要求1 掌握用for、while、do-while语句实现循环的基本技巧;2 掌握循环次数不确定的解题技巧;3 掌握break语句、continue语句在循环语句中的作用以及不同之处;4 掌握多重循环的编程技巧。二实验内容【实验题1】. 程序填空:分别用for、while、do-while语句编程,输出菲波那契数列的前20项,要求每行输出10项。源程序1: 用for语句实现 #include int main() int i,x1,x2,x; x1=x2=1; printf(%6d%6d,x1,x2); /*Line 5: 输出前2项*/ for(i= 3 ; i=20; i+) x=x1+x2; printf(%6d,x);/*Line 8*/ if( i=10 ) printf(n);/*每行输出10项*/ x1= x2 ;x2= x ; 编译、连接并运行该程序,则显示思考:line 5和line 8行中printf()函数的格式控制符均为 “%6d”, 假如均改为“%d”, 输出结果有何不同?答:所有数字都紧挨在一起,而不是单个显示。也就是说输出的是两行长串的数字,而不是一个数列。源程序2: 用while语句实现#include int main() int i,x1,x2,x; x1=x2=1; printf(%6d%6d,x1,x2); /*输出前2项*/ i= 3 ; while(i=20 ) x=x1+x2; printf(%6d,x); if( i%10=0 ) printf(n);/*每行输出10项*/ x1= x2 ;x2= x ; i+ ; 源程序3: 用do-while语句实现 #include int main() int i,x1,x2,x; x1=x2=1; printf(%6d%6d,x1,x2); /*输出前2项*/ i= 3 ; do x=x1+x2; printf(%6d,x); if( i%10=0 ) printf(n);/*每行输出10项*/ x1= x2 ;x2= x ; i+ ; while( i=20 );【实验题2】 程序填空,计算 e=1+1/1!+1/2!+1/3!+1/4!+,直到最后一项的绝对值10-5 (核心问题:学会找规律,写出递推公式, 学会类似的多项式计算)【参考代码】(#include #includevoid main() double sum=1, item=1; int i; for ( i=1; fabs(item)1e-5; i+ ) item= item / i; /递推生成第i项 item=1/i! sum=sum+item; /各项累加 printf(e=%.15fn,sum);【附加思考题】 以e为底的指数:math.h中有对应的函数exp(x), 直到最后一项的绝对值10-10ex = 1+x1/1!+x2/2!+ x3/3!+x4/4!+ xn/n!【实验题3】程序填空:输入一个整数,从高位开始逐位分割各位数字,如输入7358,则输出 7 3 5 8(2007年春笔试真题)【分析】我们已经学习了如何用整除运算和求余运算求出一个整数number的位数、以及从低位到高位的各位数字。本题则是从高位向低位逐步分解各个数位,关键是先求出这个整数是几位数?如果已知number是k位数,那么该整数整除10k-1,就可得到最高位的数字;然后对剩余部分除以10k-2,得到下一个数位上的数字;再对剩余部分除以10k-3,实例如下:被除数numberk 最高位权重power=10k-1 高位数字number/power余数7358410007358 3583100358 5821058 81180 0 -结束!源程序如下:#include int main( ) int i, digit, k,power, t ,number;printf(Enter an integer:); scanf(%d, &number); /输入整数numberif (number0) number = -number; /如果number为负数,取其相反数/求number的位数:kt=number; /*line 7: 复制number到t */ k =0; do k+; t=t/10 ;while(t!=0);/求最高位的权重:power=10k-1power=1;for(i=1; i k ; i+) power=power*10; /从最高开始,逐位分解并输出各位数字while( k != 0 ) digit = number/power; /求当前被除数的最高位数字 printf(%3d , digit); number = number%power ; /抛弃最高位,用% power = power/10 ; /缩小权重k-; printf(n);编译、连接并运行程序,输入-79,输出: 7 9 ; 如果输入4,则输出 4 ; 如果输入27354,则输出 2 7 3 5 4 。 问题1:为在Line 7要复制number,而不直接使用number来求位数k?答:如果这里用number,那之后程序就不知道number的值是多少了【实验题4可选做】程序设计:百文百鸡问题:已知公鸡每只5文钱,母鸡每只3文钱,小鸡1文钱3只,请输出用100文买100只鸡的全部解,即公鸡、母鸡、小鸡应各买几只? 源程序: #include int main( ) int cock, hen,chick;for ( cock=0; cock20; cock+) /对公鸡,遍历所有可能的取值for ( hen=0; hen100-cock; hen+) /对母鸡遍历chick = 100-cock-hen; /计算小鸡数,使总数=“百鸡”if (chick%3=0 & cock*5+ hen*3+chick/3=100 ) /总金额=”百文”?printf(cock=%2d, hen=%2d,chick=%2d n,cock, hen,chick);【实验题5可选做】程序填空:输入两个正整数m和n,求它们的最大公约数。解题分析: (1) 当输入值m=0或n=0,重新输入m和n。(2) 令p取m,n中较大者,作被除数; q取m,n中较小者.作除数; 再令r代表两者相除的余数(r=p%q),当p不能被q整除时(r!=0),调整p和q: p=q; q=r;循环中如果r为0,则停止循环,当前的除数q就是m和n的最大公约数 例1: pqr=p%q24120 例2: pqr=p%q1486862620源程序如下:#include int main()int m,n,p,q,r;do printf(Input m,n:); /提示输入整数m,n scanf(%d%d, &m,&n);whil
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 田径普修理论期末考试题及答案
- 土壤水势与气候变化关系-洞察及研究
- 职业装耐久性评价模型-洞察及研究
- 2025年公需科目大数据考试所有测试题及答案
- 2025年高危儿培训试题及答案
- 2025年高级维修电工理论知识题库及答案
- 2025年高级会计师之高级会计实务通关题库附带答案
- 交安考试考试题库及答案
- 专职营销人员管理办法
- 中央防洪物资管理办法
- 甲醛治理招标方案(3篇)
- 呼吸机管路设计与应用
- 2025-2030年中国黑胶唱片行业市场现状供需分析及投资评估规划分析研究报告
- 台海形势课件
- 云南大学管理制度
- 采石场人员管理制度
- 2025医疗机构劳动合同模板
- 牛的健康问题图像识别诊断-洞察阐释
- 浙江甬岭数控刀具有限公司年产600万只U钻、50万套镗刀技改项目环评报告
- DB31/ 653-2012通信基站空调能效限定值
- GB/T 45569-2025压水堆核电厂反应堆冷却剂系统设备和管道保温层设计准则
评论
0/150
提交评论