上机实验五 循环结构程序设计一(带参考答案).doc_第1页
上机实验五 循环结构程序设计一(带参考答案).doc_第2页
上机实验五 循环结构程序设计一(带参考答案).doc_第3页
上机实验五 循环结构程序设计一(带参考答案).doc_第4页
上机实验五 循环结构程序设计一(带参考答案).doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上机实验五 循环结构程序设计(一)一目的要求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,分母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,直到i209) 输出2位精度的结果编写程序:方法一,用while语句:#includevoid main()float s=0, a=2,b=1,c;int i=1;while(i=20)s=s+a/b;c=a+b;b=a;a=c;i+;printf(“s=%.2f”,s);方法二,用do-while语句:#includevoid main()float s=0,a=2,b=1,c;int i=1;do s=s+a/b;c=a+b;b=a;a=c;i+; while(i=20);printf(“s=%.2f”,s);方法三,用for语句:#includevoid main()float s=0,a=2,b=1,c;int i;for(i=1;i=20;i+)s=s+a/b;c=a+b;b=a;a=c;printf(“s=%.2f”,s);第2题、计算多项式的值:s=1!+2!+3!+4!+20!算法提示:该多项式迭代公式为:term=term*i,sum=sum+term注意:哪些变量需要初始化?变量应采用什么类型?编写程序:#includevoid main()int i;double s=0,fact=1;for(i=1;i=20;i+)fact*=i;s=s+fact; printf(“s=%f”,s);把每一次迭代结果输出,程序应做怎样的修改?第3题、输入x和n,计算并输出下式的值:s=x/1+x/3+x/n参考答案:#include int main() int n,i; float x,s=0; printf(请输入x,n,以,分隔); scanf(%f,%d,&x,&n); for(i=1;i=n;i+=2) s+=(x/i); printf(ns=%f,s);第4题、输入一批正整数,求出其中的偶数之和。(思考:如何表示输入的结束?)参考答案:#include int main() int sum=0,n; printf(请输入若干正整数,以空格分隔,并以0表示结束); scanf(%d,&n); while(n0) if(n%2=0) sum+=n; scanf(%d,&n); printf(sum=%d,sum);第6题、输入x,计算并输出下式的值:s=x/(1*2)+x/(3*4)+x/(5*6)+ 直到最后一项的绝对值小于1E-5 参考答案:#include #include int main() float sum,x,item; int i=1; printf(请输入x=); scanf(%f,&x); do item=x/(i*(i+1); sum+=item; i+=2; while(fabs(item)=1E-5); printf(sum=%f,sum);第5题、输入正数n,要求输出Fibonacci数列的前n项。1,1,2,3,5,8参考答案:#include #include int main() long x1=1,x2=1,x,n,i; printf(请输入n=); scanf(%d,&n); printf(%dt%dt,x1,x2); for(i=3;i=n;i+) x=x1+x2; printf(%dt,x); if(i%5=0) /每行输出5个数 printf(n); x1=x2; x2=x; 第6题、求下列多项式的和,直到最后一项的绝对值小于1E-5。s=1/2-1/5+1/8-1/11+参考答案:#include #includeint main() int flag=1; float sum=0,n=2,item; do item= flag*1/n; sum+=item; flag=-flag; n+=3; while(fabs(item)=1E-5); printf(sum=%f,sum);第7题:计算e=1+1/1!+1/2!+1/3!+1/4!.,直到最后一项的绝对值1E-5。(分别用while语句和do.while语句实现)参考代码:(do-While语句)#include #includevoid main() float sum=1,item=1; int fm=1,i=1; do sum=sum+item; i+; fm*=i; item=1.0/fm; while(fabs(item)=1E-5); printf(e=%fn,sum); printf(谢谢,按回车键结束);(While语句)#include #includevoid main() float sum=1,item=1.0; int fm=1,i=1; while(fabs(item)=1E-5) sum=sum+item; i+; fm*=i; item=1.0/fm; printf(e=%fn,sum); printf(谢谢,按回车键结束);第8题、给出任意一个位数不确定的正整数,要求分别从低位到高位、从高位到低位逐位分割输出。比如输入123456,输出6,5,4,3,2,1和1,2,3,4,5,6从高位到低位的参考答案: #include int main() long n,t=1; printf(请输入一个长整数n=); scanf(%ld,&n); while (n/t!=0) t*=10; t/=10; while (t!=0) printf(n%dt%dt%d,n,t,n/t); n=n%t; t=t/10; putchar(n);从低位到高位的参考答案#include int main() long n,t=1; printf(请输入一个长整数n=); scanf(%ld,&n); while (n!=0) printf(n%dt%d,n,n%10); n/=10; putchar(n);第9题、36块砖36人搬,男搬4女搬3,小孩2人搬1砖。要求一次全搬完,问男、女、小孩各需多少(人)?如有多种方案,输出第一种方案及方案的数量。算法提示:设x,y,z 表示男、女、小孩的人数,则有不定方程:x+y+z=364x+3y+z/2=36对x,y,z所有可能的组合测试出满足条件的解。x、y、z的取值范围: x:19,步长1 y:1 12,步长1 z:236,步长2对x,y,z所有可能的组合重复测试条件:4*x+3*y+z/2=36 &x+y+z=36是否成立,若成立

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论