上机实验五循环结构 参考答案
实验五答案

实验五循环结构程序设计答案一、程序运行到光标处的跟踪调试和变量值的监视练习2、程序运行到光标处的跟踪调试和变量值的监视练习:改错:计算下列表达式的值(保留2位小数)。
(源程序名可定为error5_2.c)y = 1 / ( 1 * 3) + ( 1 * 3 ) / ( 2 * 4 ) + ( 2 * 4 ) / ( 3 * 5 ) + … + ( 8 * 10 ) / ( 9 * 11 )输入输出示例:Input n: 10y = 6.46改正错误后的源程序:#include <stdio.h>void main(){ int n, i;float sum;sum = 0;printf("Input n: ");scanf("%d", &n);for(i = 1; i <=n; i++)if( i == 1)sum = 1.0 / 3;elsesum+=(i-1.0)*(i+1)/(i*(i+2));printf("Sum=%0.2f\n",sum);}3、程序的跟踪调试和变量值的监视练习:下面程序的功能是计算n!。
输入下面程序,并以factor.c文件名保存main(){ int i,n,s=1;printf("Please enter n:");scanf("%d",&n);for(i=1;i<=n;i++)s=s*i;printf("%d! = %d\n",n,s);}多次运行程序,每次改变n的值(从小到大,如4,7,10,……,20等等),思考哪些结果是正确的,n的值为多少时,输出了错误的结果?如20!=-2102132736,这显然是错误的,为什么?为了找到程序的错误,可以通过单步执行来观察变量的变化。
分析产生这种现象的原因,把程序改正过来,并保存,再用n=20进行实验,分析所得到的结果。
第五章循环结构程序设计习题解答

5、设某县2000年工业产值为200亿元,如果该县预计平均 每年工业总产值增长率为4.5%,那么多少年后该县工业总 产值将超过500亿? 算法步骤: 第一步,输入2000年的年生产总值. 第二步,计算下一年的年生产总值. 第三步,判断所得的结果是否大于 500.若是,则输出该年的年份;否则,返 回第二步. (1)确定循环体:设a为某年的年生产 总值,t为年生产总值的年增长量,n为 年份,则循环体为t=0.045a,a=a+t,n=n+1. (2)初始化变量: n=2000, a=200. (3)循环控制条件: a>500
3、从键盘输入一个正整数n,计算该数的各位数字之和并输出。 #include <stdio.h> void main() { long n; int s, i=1,j=10; scanf("%ld",&n); s=n%10; while(n/j!=0) { s=s+n/j%10; j=j*10; i++; } printf("i=%d, s=%d ",i,s); }
11、 九· 九表----1
1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 9 12 15 18 21 24 27 4 4 8 12 16 20 24 28 32 36 5 5 10 15 20 25 30 35 40 45 6 6 12 18 24 30 36 42 48 54 7 7 14 21 28 35 42 49 56 63 8 8 16 24 32 40 48 56 64 72 9 9 18 27 36 45 54 63 72 81
2、输入一串字符,直到输入一个星号为止, 统计(输出)其中的字de <stdio.h> void main() { char ch; int char_num=0,int_num=0; ch=getchar(); while(ch!='*') { if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) char_num++; else if(ch>='1'&&ch<='9') int_num++; ch=getchar(); } printf("char_num = %d, int_num = %d\n",char_num,int_num); }
C实验报告5参考答案

《高级语言程序设计》实验报告班级: 学号: 姓名: 成绩:实验5 循环结构程序设计一、实验目的1.掌握循环结构程序设计的3种控制语句——while 语句、do ···while 语句、for 语句的使用方法。
2.了解用循环的方法实现常用的算法设计。
二、实验内容1(1)下列程序的功能为:求1~100之和(和值为5050)并输出。
纠正程序中存在的错误,以实现其功能。
程序以文件名sy5_1.c 保存。
#include <stdio.h>main(){int i,sum=0; i=1;while(i<100) while(i<=100) sum=sum+i; { sum=sum+i; i++; i++;} printf(“The sum from 1 to 100 is %d\n ”,sum); }(2)下列程序的功能为:倒序打印26个英文字母。
纠正程序中存在的错误,以实现其功能,程序以文件名sy5_2.c 保存。
#include <stdio.h> main() {char x; x='z';while(x!='a') while(x!='a'-1)或while(x >='a') {printf("%3d",x); printf("%3c ",x); x++;x - -; }}(3)下列程序的功能为:输入一个大写字母,打印出一个菱形。
该菱形中间一行由此字母组成,其相邻的上下两行由它前面的一个字母组成,按此规律,直到字母A 出现在第一行和最末行为止。
纠正程序中存在的错误,以实现其功能。
程序以文件名sy5_3.c 保存。
例如,输入字母D ,打印出如下图形:#include <stdlib.h> main() { int i,j,k; char ch; scanf("%c",&ch); k=ch-'A'+1; for (i=1;i<=k;i++) {for (j=20;j>=i;j--)printf("%c",' ');for (j=1;j<=i-1;j++) for (j=1;j<=2*i-1;j++) printf("%c",'A'+i-1); printf("\n"); }k=ch-'A';for (i=k;i>=1;i--){ for (i=20;i>=i;i--) for (j =20;j >=i;j --) printf("%c",' ');for (j=1;j<2*i-1;j++) for (j=1;j <=2*i-1;j++) printf("%c",'A'+i-1); printf("\n"); }}2.程序填空题(1)用辗转相除法求两个正整数的最大公约数和最小公倍数。
程序设计上机实验课后答案

第3章程序控制结构1.1 选择结构部分一、选择题二、填空题1.OK!NO!ERROR!2.x=1 y=0x=23.ch>=’A’&& c<=’Z’ ch=ch-324.-15.x=66.(1)2(2)3CCa=2,b=2,c=4 7.(1)a<b||a<c(2)a>c&&b>c(3)a<c||b<c(4)a%28.32339.0 1三、程序设计题1.#include <stdio.h>#define pi 3.14159main( ){int k;float r,c,a;printf(“input r,k\n”);scanf(“%f%d”,&r,&k);switch(k){case 1: a=pi*r*r; printf(“area=%f\n”,a);break;case 2: c=2*pi*r;printf(“circle=%f\n”,c);break;cese 3: a=pi*r*r;c=2*pi*r;printf(“area=%f circle=%f\n”,a,c);break;}}2.main( ){int year,leap;scanf(“%d”,&year);if(year%4==0){if(year%100==0){if(year%400==0)leap=1;else leap=0;}else leap=1;}else leap=0;if(leap)printf(“%d is ”,year);else printf(“%d is not ”,year);printf(“ a leap year\n”);}3.#include <math.h>main(){float x,y;scanf(“%f”,&x);if(x<0) y=x*x;else if(x>=0&&x<10) y=-0.5*x+10;else y=x-sqrt(x);printf(“y=%f”,y);}1.2 循环结构部分二、填空题1.(1)先判断条件是否成立(为真),若成立(为真)再执行循环语句(2)先执行循环语句,再判断条件是否成立(为真),若成立则继续执行循环,若不成立,则结束循环。
第5章 循环结构设计-实验5 - 参考答案

实验五循环结构程序设计班级:学号:姓名:成绩:一.实验目的1、熟练掌握用while语句、do-while语句和for语句实现循环的方法。
2、掌握在程序设计中用循环的方法实现一些常用的算法。
3、熟练掌握continue语句和break语句二.使用的设备和仪器+计算机+Windows XP +Visual C++6.0三.实验内容及要求1、输入10个整数,并统计出正数、0、负数的个数。
参考答案:方法1:#include<stdio.h>void main(){int i=1,num,n1,n2,n3;n1=n2=n3=0;while(i<=10){printf("请输入第%d个整数=",i);i++;scanf("%d",&num);if(num>0) n1++;if(num==0) n2++;if(num<0) n3++;}printf("整数有%d个,0为%d个,负数为%d个\n",n1,n2,n3);}方法2:#include<stdio.h>void main(){int i,num,n1,n2,n3;n1=n2=n3=0;for(i=1;i<=10;i++){printf("请输入第%d个整数=",i);scanf("%d",&num);if(num>0) n1++;if(num==0) n2++;if(num<0) n3++;}printf("整数有%d个,0为%d个,负数为%d个\n",n1,n2,n3);}2、计算下面的公式,并输出结果。
参考答案:#include<stdio.h>void main(){int i;double jie=-1,f=0;for(i=1;i<=9;i++){jie*=-1*i;f+=1/jie;}printf("f=%.2f\n",f);}3、求100~999之间的水仙花数。
《C语言程序设计》实验.设计.习题.答案. 循环结构

实验3 循环结构姓名:学号:实验日期:1.实验目的和要求(1)掌握while,for,do while语句实现循环结构的方法;(2)掌握循环结构和选择结构嵌套的设计方法及多重循环的设计方法;(3)掌握break,continue,goto语句使用方法。
2.实验内容:实验指导书中的实验五3.实验内容和步骤3.1相关知识点若程序进入死循环,怎样退出:程序中使用br eak语句或按“Ctrl+Break”3.2 实验结果5-1 该程序的功能是:输入一个数,除2求余,若余数为1,输出“I said”,并继续输入一个数,直到输入的数除2求余且余数不为1,则输出“Thanks.I need that!”按照书中调试的要求,本程序运行结果的完整画面如下所示:#include<stdio.h>int main(){int n;while(1){printf("enter a number:");scanf("%d",&n);if(n%2==1){printf("i said");continue;}break;}printf("thanks,i needed that!");}5-2 该程序运行结果如下图所示:#include<stdio.h>main(){int c;while((c=getchar())!='\n'){if(c>='a'&&c<='x'||c>='A'&&c<='X')c+=2;else if(c=='y'||c=='Y'||c=='z'||c=='Z')c=c-24;printf("%c",c);}putchar('\n');}5-3 解决该问题的算法:把图像分成1、4行和2、3行,用for循环将1、4行输出6个*,2、3行可直接输出“* *”。
实验5 循环结构 参考答案

1.假定在银行中存款10000元,按11.25的利率,一年后连本带利为11125元,问多长时间会连本带利翻一番?Dim m As DoubleDim y As Integerm = 10000y = 0Do While m <= 2 * 10000m =m+m*0.1125y = y + 1Print y, mLoop2.1-100 所有偶数的和。
Dim s As Longs = 0Print "s=";For i = 0 To 100 Step 2s = s + iPrint i & "+";NextPrint "="; sPrint i3.循环的嵌套,生成如图的九九乘法表For i = 1 To 9For j = 1 To 9a = i & "*" & j & "=" & i * jPicture1.Print ; Tab((j - 1) * 9 + 1); a; '每隔9列输出。
Picture1.PrintNext i作业:1.将上面实例补充完整并且调试后,生成exe文件上传,第五题只做一个,文件命名为实例x。
2.任意输入一个正整数n,求1-n的奇数之和,要求n<500。
(参照上面2题)调试后,生成exe文件上传,文件命名为作业3。
Dim sum As Long, i As Integer, n As Integerre: n = V al(InputBox("请输入n,求1-n的奇数之和,要求n<500"))If n > 500 Or n < =0 ThenMsgBox "请重新输入n,n<500!"GoTo reElsesum = 0For i = 1 To n Step 2sum = sum + iNext iPrint "1-" & n & "的奇数和=" & sumEnd If3.用for循环和do循环分别编程:求1-100之间能被5整除的数的和。
实验(5)-循环结构-参考答案

C语言程序设计实验教学(5)【实验目的】通过程序设计实现,掌握while结构、do-while结构和for结构各种类型的循环结构,完成各种循环程序的设计和实现。
【实验要求】同一个题目尝试使用多种循环控制结构来实现,并分析其设计和实现的差别和难易程度。
【实验课时】6.0【实验内容】一、以下程序使用while结构实现。
1、完成课堂实例的实现。
计算s=1+2+…+100。
(累加型)main(){int i=1,sum=0;while(i<=100){sum+=i; i++;}printf("1+2+3+...+100=%d\n",sum);}main(){int i,sum=0;for(i=1;i<=100;i++)sum+=i;printf("1+2+3+...+100=%d\n",sum);}请输入数n,计算n!。
(连乘型)main(){int i=1,n; long fac=1;scanf("%d",&n);while(i<=n){fac*=i; i++;}printf("%d!=%ld\n",n,fac);}main(){int i,n; long fac=1;scanf("%d",&n);for(i=1;i<=n;i++)fac*=i;printf("%d!=%ld\n",n,fac);}输出所有的水仙花数。
(范围型)main(){int n=100,a,b,c;while(n<=999){a=n/100;b=n/10%10;c=n%10;if(a*a*a+b*b*b+c*c*c==n)printf("%6d",n);n++;}printf("\n");}main(){int n,a,b,c;for(n=100;n<=999;n++){a=n/100;b=n/10%10;c=n%10;if(a*a*a+b*b*b+c*c*c==n)printf("%6d",n);}printf("\n");}判断n是否为素数。
C语言上机实验5-12

17.5实验5循环结构程序设计1.实验目的(1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。
(2)掌握在程序设计中循环的方法实现一些常用的算法(如穷举、迭代、递推等)。
(3)进一步学习调试程序。
2.实验内容编程并上机调试运行(1)输入一行字符、分别统计出其中的英文字母、空格、数字和其他字符的个数(本题是教材第5章第4题)在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。
(2)输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其个位数字立方和等于该数本身。
例如,153是一个水仙花数,因为153=1³+5³+3³(本题是教材第五章第8题)。
(3)猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃,只剩一个桃子了。
求第一天共摘了多少桃子(本题是教材第五章第12题)。
再得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。
请修改程序并运行,检查结果是否正确。
(4)用牛顿迭代法求方程2X³=4x²+3x-6=0在1.5附近的根(本题是教材第五章第13题,学过高等数学的读者可选做此题)。
再得到正确结果后,请修改程序所设的X初始值由1.5改为100,1000,1000,再运行,观察结果,分析不同的x初值对结果有什么影响,为什么?修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。
3.预习内容预习教材第5章。
17.6实验6数组1.实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法。
(2)掌握字符数组和字符串函数的使用。
(3)掌握与数组有关的算法(特别是排序算法)。
2.实验内容编程序并上机调试运行。
实验05参考答案

实验五循环结构程序设计班级:学号:姓名:评分:一.【实验目的】1、熟练使用for、while和do…while语句实现循环结构程序设计。
2、理解循环条件和循环体,以及for、while和do…while语句的相同及不同之处。
3、熟练掌握break和continue语句的使用。
4、掌握使用“debug”菜单调试程序的方法。
二.【实验内容和步骤】1、程序调试题A.目标:进一步学习掌握程序调试的方法和技巧。
B.内容:改正程序中的错误,使其实现程序的功能。
(注:程序文件保存在“调试示例”文件夹中,文件名为error04_1.cpp)①调试正确的源程序清单#include <stdio.h>int main(void){int m, n, j, k; /* j表示最小公倍数,k表示最大公约数 */do{printf("Input m: ");scanf("%d", &m);printf("Input n: ");scanf("%d", &n);}while(m<0||n<0);j = m;while(j % n != 0) /* 调试时设置断点 */j = j + m;k = (m * n) / j; /* 调试时设置断点 */printf("最小公倍数是%d \n最大公约数是%d\n ", j, k);return 0;}②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。
2、完善程序,并调试运行程序1、题目(1)打开程序proj1.cpp,按以下要求完成操作(1)请编写程序满足个位数的平方等于其本身的所有数,程序的运行结果是:1、25、36。
(2)请按注释的要求在程序的“——”处填入适当的内容,并去掉程序中的“——”,使程序能正确运行,并保存文件。
①调试正确的源程序清单#include <stdio.h>int main(void){int i,g;for (i=1;i<100;i++)//#1程序满足个位数的平方等于其本身的所有数{g=i%10;//#2求取每个数的个位数,并放入g中if(g*g==i)//#3 判断个位数的平方是否等于其本身printf("%d ",i);}}②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。
上机实验五 循环结构程序设计一(带参考答案)

上机实验五循环结构程序设计(一)一.目的要求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,直到i>209)输出2位精度的结果编写程序:方法一,用while语句:#include<stdio.h>void 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语句:#include<stdio.h>void 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语句:#include<stdio.h>void 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注意:哪些变量需要初始化?变量应采用什么类型?编写程序:#include<stdio.h>void 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 <stdio.h>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题、输入一批正整数,求出其中的偶数之和。
2018-2019-实验报告5答案word版本 (6页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==实验报告5答案实验报告课程名称:高级语言程序设计实验五:班级:学生姓名:学号:专业:指导教师:学期:循环结构程序设计 201X-201X学年上学期云南大学信息学院一、实验目的1、理解循环的概念2、理解并掌握循环结构相关语句的含义、格式及使用3、学会循环的应用及控制,包括:① 掌握使用循环输入多个数据的方法② 掌握在多个数据中有选择地输出数据的方法③ 掌握在多个数据中对某种数据进行计数的方法④ 掌握求多个数据中最大值、最小值的方法⑤ 掌握使用break、continue语句终止循环4、掌握循环的嵌套二、知识要点1、循环变量、循环条件、循环体的概念2、三种循环语句的一般格式、执行过程3、理解选择结构与循环结构中“条件表达式”之不同含义4、二重循环的执行过程三、实验预习(要求做实验前完成)1、循环变量的主要用途是:2、用循环求多个数的和之前,先要把和的初始值赋为:3、用循环求多个数的乘积之前,先要把乘积的初始值赋为:4、字符变量能否作为循环变量?5、循环过程中,如果循环条件成立,但需要结束循环,可采用什么办法?6、什么叫循环的嵌套?四、实验内容 (要求提供:① 算法描述或流程图② 源程序 )1、编程,利用循环计算以下表达式的值:(5+52)*(4+42)*(3+32)*(2+22)*(1+12)*(1/2+1/3+1/4+1/5)(for循环)2、编程,从键盘输入若干个整数,当输入0时,输入停止。
统计并输出总共输入了几个数,以及所有输入数的和。
(while循环)3、输入一行字符,分别统计其中的英文字母、数字、空格和其他字符的个数。
4、使用二重循环编程,绘制如下图形: *****A ****B ***C **D *E5. 输入10个整数,输出最大值、最小值和平均分。
实验五_循环结构程序设计1_答案1103

实验五循环结构程序设计1实验目标1.理解并掌握循环的基本作用。
2.掌握FOR/NEXT语句的使用。
3.掌握While/Wend,DO/Loop语句的形式和使用。
4.掌握如何控制循环条件,防止死循环或不循环。
实验内容1)将窗体文件“5-2.Frm” 和工程文件“5-2.Vbp”上传到老师的ftp服务器上的”周三下午”或”周四下午”或”周五下午”你的文件夹中。
如:“31008888传媒1001张三”.2)练习5-3,5-4,5-5 也同样将窗体文件和工程文件上传到老师的ftp 服务器上。
【练习5-1】判断下面两个循环语句的循环体分别被执行了多少次,程序执行完毕后变量s,i的值为多少?程序1s=0for i=1 to 10 step 1s=s+1 next iprint s,i程序2s=0for i=1 to 10 step -1s=s+1next iprint s,i循环体执行了多少次?10 循环体执行了多少次?0变量s的值:10 变量s的值:0变量i的值:11 变量i的值: 1上机实践:用form_click()事件过程来运行调试以上程序。
【练习5-2】阅读以下程序,回答问题。
Private Sub Form_Click()Dim Str1 As String, str2 As String, str3 As StringStr1 = Text1.Text …str1为原字符串,str2存放临时字符,str3为目标字符串str2 = ""str3 = ""n = Len(Str1)For i = 1 To nstr2 = Mid(Str1, i, 1)If str2 >= "0" And str2 <= "9" Thenstr3 = str3 + str2…注○1End IfNext iForm1.Print str3End Sub问:若在文本框中输入字符串“A123b45C _de”,窗体中显示什么结果?。
上机实验五- 循环结构程序设计 - 答案

上机实验五循环结构程序设计姓名:学号: 姓名:本次实验一共5个题目,4个必做,一个选做我建的浙师大c程序设计群,群号为:185106065,大家加入下,验证信息请写为班级+姓名。
我打算以后把每次实验的答案(我写的代码)都放到群共享里面,大家可以在群里讨论下不会的地方或者不同的实现方法。
!!!!!重要提醒:邮件主题和本word文件名统一用班级+学号+姓名+实验几命名(学号和姓名记得不能少),不然我在检查作业提交情况时可能会漏掉!!!!!一.目的要求1.掌握用for、while、do-while语句实现循环的基本技巧;2.掌握循环次数不确定的解题技巧;3.掌握break语句、continue语句在循环语句中的作用以及不同之处;4.掌握多重循环的编程技巧。
二.实验内容【实验题1】. 程序填空:分别用for、while、do-while语句编程,输出菲波那契数列的前20项,要求每行输出10项。
思考:line 5和line 8行中printf()函数的格式控制符均为”%6d”, 假如均改为”%d”, 输出结果有何不同?源程序2:用while语句实现#include <stdio.h>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 == 0 ) printf("\n"); /*每行输出10项*/x1= x2 ; x2=x ;i++ ;}}【实验题2】(课本p141第10题)有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13,…求出这个分数序列的前20项之和。
源代码粘贴处#include <stdio.h>void main(){int i;double x1,x2,x,sum = 0;x1=x2=1.0;//直接在上一题的程序上做简单修改for(i=1 ; i<=20; i++){x=x1+x2;sum = sum +x/x2;x1= x2 ; x2= x ;}printf("%f", sum);}【实验题3】(课本p141第11题)一个球从100米高度自由落下,每次落地后反跳回原来高度的一般,再落下,再反弹。
循环结构实验参考答案

for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
{ n=a*100+b*10+c;
if(n==a*a*a+b*b*b+c*c*c)
printf("%d\t",n);
}
(2)对于100-999间的每一个数,使用适当的表达式求出其百位、十位、个位并进行判断。
int a,bΒιβλιοθήκη c,n; printf("Narcissistic Numbers:\n");
[略]
6.求水仙花数。水仙花数是指满足下列条件的三位整数:各位数字的立方和正好等于这个数本身。
提示:此题可以思考两种思路:
(1)列出百位、十位、个位的各种取值,形成一个三重循环,再由三个数字组合成一个三位数并进行判断;
int a,b,c,n;
printf("Armstrong Numbers:\n");
printf("Min=%d\n",min);
4.上机输入、运行、调试例5.9的程序,字符串“加密”。并回答问题。
回答问题:while ((c=getchar( ))!=\n) 这个语句中的条件表示什么含义?
[略,理论课已做解释]
5.输入一行字符,分别统计出其中大写字母、小写字母、空格、数字和其它字符的个数。
2.上机调试例5.4的程序,掌握while语句的使用及累加算法。
请为程序中while至pi=pi*4的算法段落每一行写上注释。
#include <stdio.h>
实验5 循环结构程序设计(参考答案)

实验五循环结构程序设计(参考答案)[实验任务一]:程序跟踪调试实例5-1:error5_1.c参考答案程序跟踪调试实例5-2:error5_2.c参考答案程序跟踪调试实例5-3:factor.c参考答案[实验任务二]:程序填空实例5-1:for_c.c参考答案程序填空实例5-1:while_c.c参考答案程序填空实例5-1:do_while.c 参考答案程序填空实例5-2:aliqout1.c 参考答案程序填空实例5-2:aliqout2.c 参考答案程序填空实例5-3:diamond.c 参考答案程序填空实例5-5:aliquot3.c 参考答案[实验任务三]:编程实例5-1:while2.c参考答案编程实例5-1:until.c参考答案编程实例5-2:picture1.c参考答案编程实例5-2:picture2.c参考答案[实验任务四]:设计程序实例5-1:zuhe.c参考答案(第一种方法)设计程序实例5-1:zuhe.c参考答案(第二种方法)设计程序实例5-2:comma.c参考答案设计程序实例5-3:traffic.c参考答案设计程序实例5-4:magic.c参考答案设计程序实例5-5:guess1.c参考答案#include <stdio.h>#include <stdlib.h>#include <time.h> /*将函数time所需要的头文件time.h包含到程序中*/main(){int magic; /*计算机“想”的数*/int guess; /*人猜的数*/srand(time(NULL)); /*用标准库函数srand为函数rand设置随机数种子*/ magic = rand() % 100 + 1;printf(“Please guess a magic number:”);scanf(“%d”, &guess);if (guess > magic){printf(“Wro ng!Too high!\n”);}else if (guess < magic){printf(“Wrong!Too low!\n”);}else{printf(“Right!\n”);printf(“The number is:%d\n”, magic);}}程序运行结果如下:Please guess a magic number:40↙Wrong!Too low!设计程序实例5-5:guess2.c参考答案#include <stdio.h>#include <stdlib.h>#include <time.h>main(){int magic; /*计算机"想"的数*/int guess; /*人猜的数*/int counter; /*记录人猜的次数*/srand(time(NULL));magic = rand() % 100 + 1;counter = 0;do{printf("Please guess a magic number:");scanf("%d", &guess);counter ++;if (guess > magic){printf("Wrong!Too high!\n");}else if (guess < magic){}}while (guess != magic); /*直到人猜对为止*/printf("Right!\n");printf("counter = %d\n", counter);}程序运行结果如下:Please guess a magic number:50↙Wrong!Too low!Please guess a magic number:90↙Wrong!Too high!Please guess a magic number:70↙Wrong!Too high!Please guess a magic number:60↙Wrong!Too high!Please guess a magic number:55↙Wrong!Too high!Please guess a magic number:52↙Right!counter = 6设计程序实例5-5:guess3.c参考答案#include <stdio.h>#include <stdlib.h>#include <time.h>void main(){int magic; /*计算机"想"的数*/int guess; /*人猜的数*/int counter; /*记录人猜的次数*/srand(time(NULL));magic = rand() % 100 + 1;counter = 0;do{printf("Please guess a magic number:");scanf("%d", &guess);counter ++;if (guess > magic){printf("Wrong!Too high!\n");}else if (guess < magic){printf("Wrong!Too low!\n");}else{printf("Right!\n");}}while ((guess!=magic) && (counter<10));/*猜不对且未超过10次时继续猜*/ printf("counter = %d\n", counter);}程序两次测试的运行结果分别如下:①Please guess a magic number:50↙Wrong!Too low!Please guess a magic number:80↙Wrong!Too high!Please guess a magic number:60↙Wrong!Too high!Please guess a magic number:55↙Right!counter = 4②Please guess a magic number:40↙Wrong!Too low!Please guess a magic number:90↙Wrong!Too high!Please guess a magic number:80↙Wrong!Too high!Please guess a magic number:70↙Wrong!Too high!Please guess a magic number:60↙Wrong!Too high!Please guess a magic number:55↙Wrong!Too high!Please guess a magic number:50↙Wrong!Too high!Please guess a magic number:45↙Wrong!Too high!Please guess a magic number:44↙Wrong!Too high!Please guess a magic number:43↙Wrong!Too high!counter = 10设计程序实例5-5:guess4.c参考答案#include <stdio.h>#include <stdlib.h>#include <time.h>main(){int magic; /*计算机"想"的数*/int guess; /*人猜的数*/int counter; /*记录人猜的次数*/char reply; /*用户键入的回答*/srand(time(NULL));do{magic = rand() % 100 + 1;counter = 0;{printf("Please guess a magic number:");scanf("%d", &guess);counter ++;if (guess > magic){printf("Wrong!Too high!\n");}else if (guess < magic){printf("Wrong!Too low!\n");}else{printf("Right!\n");}}while ((guess!=magic) && (counter<10));/*猜不对且未超过10次时继续猜*/ printf("counter = %d\n", counter);printf("Do you want to continue(Y/N or y/n)?");scanf("%1s", &reply);}while ((reply == 'Y') || (reply == 'y'));printf("The game is over!\n");}程序运行结果如下:Please guess a magic number:50↙Wrong!Too low!Please guess a magic number:80↙Wrong!Too low!Please guess a magic number:90↙Wrong!Too high!Please guess a magic number:85↙Wrong!Too high!Please guess a magic number:83↙Right!counter = 5Do you want to continue(Y/N or y/n)?y↙Please guess a magic number:50↙Wrong!Too low!Please guess a magic number:80↙Wrong!Too low!Please guess a magic number:90↙Wrong!Too low!Please guess a magic number:95↙Wrong!Too low!Please guess a magic number:99↙Right!counter = 5Do you want to continue(Y/N or y/n)?n↙The game is over!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
读书破万卷下笔如有神
上机实验五循环结构程序设计
姓名:学号:
一.目的要求
1.掌握用for、while、do-while语句实现循环的基本技巧;
2.掌握循环次数不确定的解题技巧;
3.掌握break语句、continue语句在循环语句中的作用以及不同之处;
4.掌握多重循环的编程技巧。
二.实验内容
【实验题1】. 程序填空:分别用for、while、do-while语句编程,输出菲波那契数列的前20项,要求每行输出10项。
源程序1:用for语句实现
编译、连接并运行该程序,则显示
思考:line 5和line 8行中printf()函数的格式控制符均为”m”, 假如均改为”%d”, 输出结果有何不同?
输出的数据无间隔
源程序2:用while语句实现
#include <stdio.h>
void main()
{ int i,x1,x2,x;
x1=x2=1;
printf(mm,x1,x2); /*输出前2项*/
i= 3 ;
while( i<=20 ){
x=x1+x2;
printf(m,x);
*/项10每行输出/* printf(\
); ) !(i_x0010_) (if
读书破万卷下笔如有神
x1= x2 ; x2= x ;
i++ ;
}
}
源程序3:用do-while语句实现
-5。
x的值,计算下列算式的值,直到最后一项的绝对值小于10【实验题2】程序填充:输入double 型变量23456xxxxxs?x??????...2!3!4!5!6!源程序如下:
读书破万卷下笔如有神
编译、连接并运行程序,输入0.5, 则显示:;输入 1 ,则显示:;输入1.7,则显示:。
略
line 21中的表达式“f*=i”,等同于表达式“f=f*i ”;同理,line 11中的表达式“s= s+item”也可替换为“s+=item ”.
【实验题3】程序填空:验证哥德巴赫猜想——任何一个大于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+b.
源程序如下:
【实验题4】程序填空:输入一个整数,从高位开始逐位分割各位数字,如输入7358,则输出7 3 5 8(20XX年春笔试真题)
【分析】
我们已经学习了如何用整除运算和求余运算求出一个整数number的位数、以及从低位到高位的各位数字。
本题则是从高位向低位逐步分解各个数位,关键是先求出这个整数是几位数?
下笔如有神读书破万卷k-2k-1,1010,就可得到最高位的数字;然后对剩余部分除以如果已知number是k位数,那么该整数整除k-3 ,…实例如下:10得到下一个数位上的数字;再对剩余部分除以
k-1高位数字number/power 最高位权重power=10余数被除数number k 7358 4 1000 7 358
358 3 100 3 58
58 2 10 5 8
8 1 1 8 0
0 -----------结束!
源程序如下:
编译、连接并运行程序,
输入-79,输出:;如果输入4,则输出;如果输入27354,则输出。
问题1:为在Line 7要复制number,而不直接使用number来求位数k?
后面的程序中还需要用到number的值来求各个数位的数字
k-1时,不直接使用数学库函数pow(10,k),而是用为什么在该程序中,问题2:求最高位的权重power=10for循环来解决幂运算?
pow()函数的返回值为double型,不适合后面的while循环中的整除和求余运算
读书破万卷下笔如有神
【实验题5】程序设计:百文百鸡问题:已知公鸡每只5文钱,母鸡每只3文钱,小鸡1文钱3只,请输出用100文买100只鸡的全部解,即公鸡、母鸡、小鸡应各买几只?---请参照搬砖问题。
源程序:
源程序:
#include <stdio.h>
void main( )
{ int cock, hen,chick;
for( cock=0; cock<=20; cock++)
for( hen=0; hen<=55; hen++)
{
chick= 100- cock –hen;
if( cock*5 + hen*3 + chick/3 == 100)
printf( cock: %d, hen %d, chick: %d \n, cock, hen, chick);
}
}。