上机实验五_答案(请自行校对).doc

上传人:夏** 文档编号:560612189 上传时间:2023-11-03 格式:DOC 页数:7 大小:86.51KB
返回 下载 相关 举报
上机实验五_答案(请自行校对).doc_第1页
第1页 / 共7页
上机实验五_答案(请自行校对).doc_第2页
第2页 / 共7页
上机实验五_答案(请自行校对).doc_第3页
第3页 / 共7页
上机实验五_答案(请自行校对).doc_第4页
第4页 / 共7页
上机实验五_答案(请自行校对).doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《上机实验五_答案(请自行校对).doc》由会员分享,可在线阅读,更多相关《上机实验五_答案(请自行校对).doc(7页珍藏版)》请在金锄头文库上搜索。

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,分母b=13) 初始化:i(计数器)=14) 计算第i项term =a/b5) 累加s

2、um=sum+term6) 计算c=a+b,更新b= a,更新a=c7) 计数器加1,i+8) 重复4、5、6、7,直到i209) 输出2位精度的结果/ while语句#include void main()float sum, term, a, b, c;int i;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(数列前20项之和为%.2fn, sum);/ do while语句#include void main()float sum, te

3、rm, a, b, c;int i;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项之和为%.2fn, sum);/ for 语句#include void main()float sum, term, a, b, c;int i;sum = 0;a = 2; b = 1;for (i=1; i=20; i+) term = a/b;sum = sum + term;c = a+b; b = a;a = c;printf(数列

4、前20项之和为%.2fn, sum);第2题、计算多项式的值:s=1!+2!+3!+4!+20!算法提示:该多项式迭代公式为:term=term*i,sum=sum+term#include void main()long term, sum;int i;term = 1;sum = 0;for (i=1; i21; i+)term = term * i; / term保存的是阶乘sum = sum + term; /sum为前i项之和printf(前20项阶乘和为%ldn, sum);注:也可以用while和do while循环来实现。在具体实现过程中,注意初值不要写错。第3题、打印出所有的

5、“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。#include void main()int i, t, a, b, c;printf(水仙花数有:);for (i=100; i1000; i+)t = i;a = t%10; t = t/10;b = t%10; t = t/10;c = t;if ( i = a*a*a + b*b*b + c*c*c)printf(%d , i); / i为水仙花数, 打印之printf(n);第4题、输入一批正整数,求出其中的偶数之和。(思考:如何表示输入的结束?)/*思路:1)可以以0或是负数作为输入结束标志;2)输入一批

6、数据时,可采用循环策略,其中每一次读取一个整数;3)读入完一个数后,判断其是否为偶数,如果是偶数,则需要求和;*/#include void main()int k, sum;printf(请输入一批正整数:);scanf(%d, &k); sum = 0; /最开始赋初值0给变量while ( k0 )/如果是正整数,那么一直循环,直到输入的为0或负数时停止if ( k%2 = 0) / 如果读入的正整数k为偶数sum = sum + k; / 求和scanf(%d, &k); /继续读入下一个正整数 printf(正整数的偶数和为:%dn, sum);第5题、输入正数n,要求输出Fibon

7、acci数列的前n项。1,1,2,3,5,8#include void main()int i, n, a=1, b=1, t;/a 为数列的倒数第2项, b为数列的倒数第1项,t为临时变量,用于交换a和b的值printf(请输入正整数n(n2):);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项为前2项之和printf(%d , b);printf(n);第6题

8、、打印输出以下图案。#include void main()int i, j;/ 下面这个for语句打印前4行*for (i=1; i=4; i+) / 这个for语句打印空格数量for (j=0; j 4-i; j+)printf(%c , ); / 这里也可以是printf( );/ 这个for语句打印*,其中*的数量为2*i-1for (j=0; j 0; i-) / 这个for语句打印空格数量for (j=0; j 4-i; j+)printf(%c , ); / 这里也可以是printf( );/ 这个for语句打印*,其中*的数量为2*i-1for (j=0; j 2*i-1; j

9、+)printf(%c , *); / 这里也可以是printf(* );printf(n);第7题:计算e=1+1/1!+1/2!+1/3!+1/4!.,直到最后一项的绝对值1E-5。(分别用while语句和do.while语句实现)/while语句#include void main()int i;float sum, term, t;/sum为和,term为阶乘, t为阶乘的倒数sum = 1;term = 1.0; i=1;t = 1/term;while ( t1E-5 ) sum = sum + t; i+; /i每次增加1term = term * i; /求阶乘t = 1/te

10、rm; /阶乘的倒数printf(前n项和为%f.n, sum);/do while语句#include void main()int i;float sum, term, t;/sum为和,term为阶乘, t为阶乘的倒数sum = 1;term = 1.0; i=1;t = 1/term;do sum = sum + t; i+; /i每次增加1term = term * i; /求阶乘t = 1/term; /阶乘的倒数 while ( t1E-5 );printf(前n项和为%f.n, sum);第8题、给出任意一个位数不确定的正整数,要求分别从低位到高位、从高位到低位逐位分割输出。比

11、如输入123456,输出6,5,4,3,2,1和1,2,3,4,5,6#include void main()int i;long k, t;/k存放读入的数;而t为k的反序数printf(请输入一个正整数:);scanf(%ld, &k);t = 0; /其反序数t初始化为0printf(%d的序列为:, k);/while循环目的是分解k成单个数字,同时生成其反序数twhile (k0)i = k%10; / i为k的最后一位;k = k/10; / k每次减少一个长度;printf(%d , i); /打印数字it = t*10 + i; /生成反序数;printf( 反序列为:);/下面这个while循环打印反序数t的每个数字while (t0)i = t%10; / i为t的最后一位;t = t/10; / t每次减少一个长度;printf(%d , i); /打印数字iprintf(n);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号