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

实验五循环结构程序设计答案一、程序运行到光标处的跟踪调试和变量值的监视练习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是否为素数。
- 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);
}
}。