资源描述:
《上机实验五循环结构-参考答案.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、上机实验五循环结构程序设计学号:姓名:一.目的要求1.掌握用for、while、do-while语句实现循环的基本技巧;2.掌握循环次数不确定的解题技巧;3.掌握break语句、continue语句在循环语句中的作用以及不同之处;4.掌握多重循环的编程技巧。二.实验内容【实验题1】.程序填空:分别用for、while、do-while语句编程,输出菲波那契数列的前20项,要求每行输出10项。源程序1:用for语句实现#includevoidmain(){inti,x1,x2,x;x1=x2=1;printf("%6d%6d",x1,x2);/*Line5:输出
2、前2项*/for(i=3;i<=20;i++){x=x1+x2;printf("%6d",x);/*Line8*/if(i%10==0)printf("");/*每行输出10项*/x1=x2;x2=x;}}编译、连接并运行该程序,则显示思考:line5和line8行中printf()函数的格式控制符均为”%6d”,假如均改为”%d”,输出结果有何不同?输出的数据无间隔源程序2:用while语句实现#includevoidmain(){inti,x1,x2,x;x1=x2=1;printf("%6d%6d",x1,x2);/*输出前2项*/i=3;while
3、(i<=20){x=x1+x2;printf("%6d",x);if(!(i%10))printf("");/*每行输出10项*/x1=x2;x2=x;i++;}}源程序3:用do-while语句实现#includevoidmain(){inti,x1,x2,x;x1=x2=1;printf("%6d%6d",x1,x2);/*输出前2项*/i=3;do{x=x1+x2;printf("%6d",x);if(!(i%10))printf("");/*每行输出10项*/x1=x2;x2=x;i++;}while(i<=20);}【实验题2】程序填充:输入
4、double型变量x的值,计算下列算式的值,直到最后一项的绝对值小于10-5。源程序如下:#include#includedoublefact(intn);/*函数说明*/voidmain(){inti;doublex,item,s=0;printf("Inputx:");scanf("%lf",&x);/*输入实数x*/i=1;do{item=pow(x,i)/fact(i);/*用数学库函数pow()和自定义函数fact(),求加项item*/s=s+item;/*line11*/i++;}while(fabs(item)>=0.00005
5、);/*循环条件:加项item的绝对值不小于10-5*/printf("s=%.4f",s);/*输出算式的值,保留4位小数*/}/*自定义函数fact()*/doublefact(intn){inti;doublef=1;for(i=1;i<=n;i++)f*=i;/*line21*/returnf;}编译、连接并运行程序,输入0.5,则显示:;输入1,则显示:;输入1.7,则显示:。略line21中的表达式“f*=i”,等同于表达式“f=f*i”;同理,line11中的表达式“s=s+item”也可替换为“s+=item”.【实验题3】程序填空:验证哥德巴赫猜想——任何
6、一个大于6的偶数均可表示为两个素数之和。例如:6=3+3,8=3+5,10=5+5,…,18=7+11。要求将6-100之间的偶数均表示为素数之和,一行输出5组。【分析】1.本程序采用双层循环:外层循环负责对6~100之间的偶数逐个输出加法式子;内层循环负责为一个特定的偶数k,找出相应的素数a和b.2.对于偶数k(k>=6),符合条件的两个素数a和b必然位于区间[3,k-1].(为什么不从2开始?)3.由于k=a+b,通过内层循环试探性地找出第一个加数a后,第二个加数b可用推算而得,再调用函数prime()来判断a、b是否是素数,如果两者均为素数,则停止寻找素数,并输出k=a+
7、b.源程序如下:#include#includeintprime(intn);voidmain(){inta,b,k;for(k=6;k<=100;k+=2){//逐个处理6~100之间的偶数kfor(a=3;a