资源描述:
《上机实验五_答案(请自行校对)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、上机实验五循环结构程序设计学号:姓名:一.目的要求1.掌握while、do-while、for语句的语法规则、执行流程。2.比较3种循环语句的异同。3.按题目要求,完成代码。二.实验内容思考问题:3种循环的异同点?能否相互转换?for循环控制单元的表达式与while循环中表达式是如何对应的?第1题、分别用while、do-while、for语句编程,求数列前20项之和:2/1,3/2,5/3,8/5,13/8······算法提示:1)定义实变量sum、term、a、b、c,整变量i2)初始化:sum=0,分子a=
2、2,分母b=13)初始化:i(计数器)=14)计算第i项term=a/b5)累加sum=sum+term6)计算c=a+b,更新b=a,更新a=c7)计数器加1,i++8)重复4、5、6、7,直到i>209)输出2位精度的结果//while语句#includevoidmain(){floatsum,term,a,b,c;inti;sum=0;a=2;b=1;i=1;while(i<=20){term=a/b;sum=sum+term;c=a+b;b=a;a=c;i++;}printf("数列前2
3、0项之和为%.2f",sum);}//dowhile语句#includevoidmain(){floatsum,term,a,b,c;inti;sum=0;a=2;b=1;i=1;do{term=a/b;sum=sum+term;c=a+b;b=a;a=c;i++;}while(i<=20);printf("数列前20项之和为%.2f",sum);}//for语句#includevoidmain(){floatsum,term,a,b,c;inti;sum=0;a=2;
4、b=1;for(i=1;i<=20;i++){term=a/b;sum=sum+term;c=a+b;b=a;a=c;}printf("数列前20项之和为%.2f",sum);}第2题、计算多项式的值:s=1!+2!+3!+4!+·····+20!算法提示:该多项式迭代公式为:term=term*i,sum=sum+term#includevoidmain(){longterm,sum;inti;term=1;sum=0;for(i=1;i<21;i++){term=term*i;//ter
5、m保存的是阶乘sum=sum+term;//sum为前i项之和}printf("前20项阶乘和为%ld",sum);}注:也可以用while和dowhile循环来实现。在具体实现过程中,注意初值不要写错。第3题、打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。#includevoidmain(){inti,t,a,b,c;printf("水仙花数有:");for(i=100;i<1000;i++){t=i;a=t%10;t=t/10;b=t%10;t=
6、t/10;c=t;if(i==a*a*a+b*b*b+c*c*c)printf("%d",i);//i为水仙花数,打印之}printf("");}第4题、输入一批正整数,求出其中的偶数之和。(思考:如何表示输入的结束?)/*思路:1)可以以0或是负数作为输入结束标志;2)输入一批数据时,可采用循环策略,其中每一次读取一个整数;3)读入完一个数后,判断其是否为偶数,如果是偶数,则需要求和;*/#includevoidmain(){intk,sum;printf("请输入一批正整数:");sca
7、nf("%d",&k);sum=0;//最开始赋初值0给变量while(k>0)//如果是正整数,那么一直循环,直到输入的为0或负数时停止{if(k%2==0)//如果读入的正整数k为偶数sum=sum+k;//求和scanf("%d",&k);//继续读入下一个正整数}printf("正整数的偶数和为:%d",sum);}第5题、输入正数n,要求输出Fibonacci数列的前n项。1,1,2,3,5,8……#includevoidmain(){inti,n,a=1,b=1,t;//a为数列
8、的倒数第2项,b为数列的倒数第1项,t为临时变量,用于交换a和b的值printf("请输入正整数n(n>2):");scanf("%d",&n);printf("Fibonacci数列的前%d项为:",n);printf("%d%d",a,b);for(i=3;i<=n;i++){t=a+b;//最后两项之和a=b;//倒数第1项变换为倒数第2项b=t;//倒数第1项为前