免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上机实验五 循环结构程序设计学号:姓名:一目的要求1 掌握用for、while、do-while语句实现循环的基本技巧;2 掌握循环次数不确定的解题技巧;3 掌握break语句、continue语句在循环语句中的作用以及不同之处;4 掌握多重循环的编程技巧。二实验内容【实验题1】. 程序填空:分别用for、while、do-while语句编程,输出菲波那契数列的前20项,要求每行输出10项。源程序1: 用for语句实现#include void 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=0 ) printf(n);/*每行输出10项*/ x1= x2 ;x2= x ; 编译、连接并运行该程序,则显示思考:line 5和line 8行中printf()函数的格式控制符均为”%6d”, 假如均改为”%d”, 输出结果有何不同?输出的数据无间隔源程序2: 用while语句实现#include void 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) ) printf(n);/*每行输出10项*/ x1= x2 ;x2= x ; i+ ; 源程序3: 用do-while语句实现#include void main() int i,x1,x2,x; x1=x2=1; printf(%6d%6d,x1,x2); /*输出前2项*/ i= 3 ; dox=x1+x2; printf(%6d,x); if( !(i%10) ) printf(n);/*每行输出10项*/ x1= x2 ;x2= x ; i+ ; while( i=20 );【实验题2】程序填充:输入double型变量x的值,计算下列算式的值,直到最后一项的绝对值小于10-5。源程序如下:#include#includedouble fact( int n); /*函数说明*/void main() int i; double x,item,s=0; printf(Input x:); scanf(%lf,&x); /*输入实数x */ i=1; do item= pow(x,i) / fact(i) ; /*用数学库函数pow()和自定义函数fact(),求加项item*/ s= s+item;/*line 11*/ i+; while( fabs(item) = 0.00005 ); /*循环条件:加项item的绝对值不小于10-5*/ printf(s=%.4fn, s); /*输出算式的值,保留4位小数*/* 自定义函数fact() */double fact( int n)int i;double f=1;for(i=1; i=6),符合条件的两个素数a和b必然位于区间3, k-1.(为什么不从2开始?)3. 由于k=a+b,通过内层循环试探性地找出第一个加数a后,第二个加数b可用推算而得,再调用函数prime()来判断a、b是否是素数,如果两者均为素数,则停止寻找素数,并输出k=a+b.源程序如下:#include#include int prime( int n); void main() int a,b,k ; for(k=6; k=100; k+=2 )/逐个处理6100之间的偶数kfor( a=3; ak; a+ ) /针对偶数k, 寻找第一个素数加数项ab=k-a; if( prime(a) & prime(b) ) break;/如果a,b同为素数, 跳出内层循环 /内层循环printf(%d=%d+%d ,k,a,b); /输出k=a+bif(k%5=0) printf(n);/每行输出5组 /外层循环 /自定义函数prime(n),判断整数n是否是素数,是则返回1,不是则返回0int prime(int n) int i ; for( i=2; i sqrt(n) ) return 1; /n是素数,返回1else return 0;/若为假,n不是素数返回0 【实验题4】程序填空:输入一个整数,从高位开始逐位分割各位数字,如输入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 void 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 /= 10 ;while(t!=0);/求最高位的权重:power=10k-1power=1;for(i=1; i=k -1 ; i+) power=power*10; /从最高开始,逐位分解并输出各位数字while( k-!=0 ) digit = number/ power ; /求当前被除数的最高位数字 printf(%3d , digit); number = number % power ; /抛弃最高位 power = power / 10 ; /缩小权重 printf(n);编译、连接并运行程序,输入-79,输出: ; 如果输入4,则输出 ; 如果输入27354,则输出 。 问题1:为在Line 7要复制number,而不直接使用number来求位数k?后面的程序中还需要用到number的值来求各个数位的数字问题2:为什么在该程序中,求最高位的权重power=10k-1时,不直接使用数学库函数pow(10,k),而是用for循环来解决幂运算?pow()函数的返回值为double型,不适合 后面的while循环中的整除和求余 运算【实验题5】程序设计:百文百鸡问题:已知公鸡每只5文钱,母鸡每只3文钱,小鸡1文钱3只,请输出用100文买100只鸡的全部解,即公鸡、母鸡、小鸡应各买几只?-请参照搬砖问题。源程序:源程序:#include void main( ) int cock, hen,chick;for( cock
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GA 732-2007警服材料 锦丝搭扣带》专题研究报告
- 中学教学质量保证措施制度
- 养老院入住老人休闲娱乐设施管理制度
- 2026湖北郴州莽山旅游开发有限责任公司招聘9人参考题库附答案
- 2026福建南平市医疗类储备人才引进10人参考题库附答案
- 2026福建省面向武汉大学选调生选拔工作参考题库附答案
- 2026贵州六盘水博信科创中心有限责任公司招聘参考题库附答案
- 2026重庆涪陵区人力资源和社会保障局招聘1人参考题库附答案
- 226湖南郴州市宜章县妇幼保健院招募见习生2人备考题库附答案
- 公务员考试语句表达真题300道及参考答案(综合题)
- 股东合作协议出资协议书
- (高清版)DB31∕T 1578-2025 微型消防站建设与运行要求
- 环境工程污水处理技术题库
- 中医专业教学标准(中等职业教育)2025修订
- 铁路项目部管理制度
- 物流仓储设备 检查与维护规程 第1部分:巷道堆垛机 征求意见稿
- 机构学历提升合同范本
- 先天性毛细血管扩张性大理石样皮肤科普宣传
- 国网 35kV~750kV输电线路基础通 用设计模块清单(试行) 2024
- 2025内河散装运输液化气体船舶构造与设备规范
- 刮刮乐营销培训
评论
0/150
提交评论