当前位置:首页 >> 理学 >>

实验三 使用循环结构的程序设计

实验三 使用循环结构的程序设计
[实验目的] 实验目的]
1.进一步练习选择结构的程序设计。 2.练习并掌握实现循环结构的三种方法。 3.练习并掌握选择结构与循环结构的嵌套。 4.练习调试与修改程序。

[实验内容] 实验内容]
1. 如果一个数恰好等于它的所有因子(包括 1 但不包括自身)之和,则称之为“完数”。例 如:6 的因子 1,2,3,且 1+2+3=6,因此 6 是一个“完数”。计算并输出 1000 以内的所有“完 数”之和。 具体要求如下: (1)所有循环均用 for 循环。 (2)输出要有文字说明,并同时输出各“完数”,输出形式为:完数 1+完数 2+…=和值 #include<stdio.h> void main() {int i,j,s=0,m; for(i=2;i<1000;i++) {m=0; for(j=1;j<i;j++) if(i%j==0) m=j+m; if(m==i){s+=i;printf("%d+",i);} }printf("\b=%d\n",s); getch(); } 运行结果: 6+28+496=530 分析:本题中,我犯的很严重的错误是对 m 赋初值时在第一个 for 循环之前了,导致输出很 奇怪。m=0 应该在第二个 for 循环之前,再进行完数的检验。另外,最后一个完数结束仍带 有加号,我用了\b 使其倒退一位,完成了编译。 6-1 输入两个正整数 m,n,求其最大公约数和最小公倍数。 #include<stdio.h> void main() { int m,n,t,p,a; printf("input two numbers;"); scanf("%d,%d",&m,&n); if(m>n) {m=t; n=m; m=t;} p=m*n;

while(m!=0) {a=n%m; n=m; m=a; } printf("max gys=%d\n",n); printf("min gbs=%d\n",p/n); getch(); } 运行结果: input two numbers; 3,9↓ max gys=3 min gbs=9 分析: 我原本每输入两个数时输出总是很奇怪, 后来我注意到原来输入时两个数之间未加逗 号, 因此要注意输入函数格式对应。在编程过程中,总是忘记添加符号,main 函数后忘记 加括号,另外一个语句结束要记得加分号“; “,特别是在大括号最后一个语句结束时。另 外, 我的解题方法是利用辗转相除法。 求出最大公倍数后可以直接利用他们的乘积除以最大 公约数求得最小公倍数。另一种方法是先求出两数最小值,然后利用 FOR 语句,使小于他 的值做两个数的除数,若都整除,则可以确定最大公倍数。 6-2 输入一行字符,分别统计英文字母,空格,数字和其他字符个数 #include<stdio.h> void main() {char c; int letter=0,space=0,digit=0,other=0; while((c=getchar())!='\n') {if(c<='z'&&c>='a'||c<='Z'&&c>='A')letter++; else if(c=='') space++; else if(c>='0'&&c<='9') digit++; else other++; } printf("letter=%d\n,space=%d\n,digit=%d\n,other=%d\n",letter,space,digit,other); getch(); } 分析:在编程过程中,对数字我一开始不佳单引号“ ,结果输出的数字属于 other,,这个 ‘” 原因是因为输入的是字符而不是数字,若要转换成数字,应对其进行比较的数加上单引号, 再进行比较大小。 6—6 输出所有水仙花数。其指一个三位数,各位数字立方和等于该数本身。 #include<stdio.h> void main() {int m,n,k,i,s; for(i=100;i<1000;i++) {m=i/100;

n=i/10-10*m; k=i%10; s=m*m*m+n*n*n+k*k*k; if(s==i) printf("%d ",i);} printf("\n"); getch(); } 运行结果: 153 370 371 407 分析:本题比较顺利,出现了一些小错误,忘记加符号之类的,我先求出一个数的各位上的 数字,再进行相关运算,选择出合适的水仙花数。 6-8 #include<stdio.h> void main() { float m=2,n=1,i; float t,s=0; for(i=1;i<=20;i++) {s=s+m/n; t=m; m=m+n; n=t; } printf("2/1+3/2+5/3+8/5...=%f\n",s) ; getch(); } 运行结果: 2/1+3/2+5/3+8/5...=32.660259 分析:本题在编程过程中,忘记给 S 赋初值,结果导致输出很大,这个原因很不容易检查 出来,以后要尽量避免。我还有一个问题,为什么我在给 m,n 定义变量时用 int 输出就是错 误值,我认为 m,n 我是当做整数来用的,为什么还是要用 float 定义,希望老师指正。

6-12 用牛顿迭代法求 1.5 附近的根:2x3-4x2+3x-6=0 #include<stdio.h> #include<math.h> void main() { double x1,x2,f1,f2; x1=1.5; do{x1=x2; f1=2*x1*x1*x1-4*x1*x1+3*x1-6; f2=6*x1*x1-8*x1+3;

x2=x1-f1/f2; } while(fabs(x1-x2)>=1e-5); printf("the root of equation is %5.2lf\n",x1); getch(); } 运行结果: the root of equation is 2.00 分析:本题采用牛顿迭代法求根,编程中我认识到 do-while 语句最后要加分号,和 while 语 句有点区别。另外,利用 fabs 求绝对值函数,不能再开头忘记加 math.h.。还有一点,我原 来把 x1=x2;这一步放在循环最后一步,f1=2*x1*x1*x1-4*x1*x1+3*x1-6;f2=6*x1*x1-8*x1+3; x2=x1-f1/f2; x1=x2,导致输出结果为 2.33,错误原因在于求得 X2 之后, 最后一步导致本 循环中 X1 X2 相等,这样只能进行一次循环 ,循环就结束了。以后此步要谨记。

6-13 用二分法求(-10,10)之间的根:2x3-4x2+3x-6=0 #include<stdio.h> #include<math.h> void main() {float x1,x2,x0,f1,f2,f0; do{printf("input x1 and x2:"); scanf("%f%f",&x1,&x2); f1=2*x1*x1*x1-4*x1*x1+3*x1-6; f2=2*x2*x2*x2-4*x2*x2+3*x2-6; } while(f1*f2>0); do{x0=(x1+x2)/2; f0=2*x0*x0*x0-4*x0*x0+3*x0-6; if(f0*f1>0) {x1=x0; f1=f0;} else{x2=x0;f2=f0;} } while(fabs(x1-x2)>=1e-5); printf("the root of equation is %5.2f\n",x1); getch(); } 运行结果: the root of equation is 2.00 分析:编程过程中最严重的错误时计算 x0=(x1+x2)/2;时忘记 x0 直接写成了(x1+x2)/2,导致 运行时输入值后就没有反应了, 而且系统也检查不出错误, 这种漏洞要在一开始就要极力避 免。本题采用二分法。


相关文章:
实验三 循环结构程序设计.doc
实验三 循环结构程序设计实验目的 1.熟练使用 while、do-while 语句实现循环程序设计 2.理解循环条件和循环体,以及 for、while 和 do-while 语句的相同及不同之...
实验三、 循环结构程序设计.doc
实验三循环结构程序设计 - 2016 级计算机科学与技术专业 集美大学计算机工程学院 2015~2016 学年第一学期 《高级语言程序设计》实验报告 题目:实验三、 循环...
实验三 循环结构程序设计参考答案.doc
实验三 循环结构程序设计(参考答案) 实验三 循环结构程序设计(参考答案) 1、设计程序 sy3-1.c ,要求打印小学九九乘法表。 算法分析: 算法分析: 根据九九乘法表...
实验三、循环结构程序设计.doc
实验三循环结构程序设计 - 【实验三循环结构程序设计 一、实验目的 1.熟练掌握三种循环语句的应用。 2. 掌握 break 和 continue 语句的使用。 3. 熟练掌握...
(10级)实验三 循环结构程序设计1.doc
实验三 循环结构程序设计 实验三 循环结构程序设计一、实验目的 (1) 掌握 while、do~while、for 语句的使用。 (2) 掌握循环体内使用 break、continue 语句的...
实验三 循环结构程序设计(1).doc
循环结构程序设计( 实验三 循环结构程序设计(1)一、 目的和要求 1. 熟练使用 for 、 while 和 do-while 语句实现循环程序设计 2. 理解循环条件和循环体,及...
C语言-实验三、循环结构程序设计解答.doc
C语言-实验三、循环结构程序设计解答 - 实验三 循环结构程序设计 一、实验目的 1.熟练掌握三种循环语句的应用。 2. 熟练掌握循环结构的嵌套。 3. 掌握 break ...
(11级)实验三 循环结构程序设计.doc
实验三 循环结构程序设计 实验三 循环结构程序设计一、实验目的 (1) 掌握 while、do~while、for 语句的使用。 (2) 掌握循环体内使用 break、continue 语句的...
实验3 循环结构程序设计.doc
实验3 循环结构程序设计 - 实验三 循环结构程序设计 [实验目的] 1. 2. 3. 4. 熟练掌握三种循环语句的应用。 熟练掌握循环结构的嵌套。 掌握 break 和 ...
【实验指导书】实验3:循环结构程序设计-20150706.doc
河南工业大学信息学院《程序设计基础》课程组实验指导 实验三:循环结构程序设计一、 实验目的: 1. 熟练使用 for()、while()和 do-while()三种语句实现循环程序...
实验三 循环结构程序设计.doc
实验三 循环结构程序设计_计算机软件及应用_IT/计算机_专业资料。宁德师范学院计算机...熟练使用 for、while 和 do-while 语句实现循环程序设计。 2. 理解循环条件和...
实验三 循环结构程序设计.doc
实验3 循环结构程序设计 一、实验目的 (1) 掌握 while、do~while、for 语句的使用。 (2) 掌握循环体内使用 break、continue 语句的作用。 (3) 掌握循环及嵌套...
《程序设计基础》实验3(循环结构程序设计).doc
程序设计基础》实验3(循环结构程序设计) - 循环结构程序设计 [实验目的] 实验目的] 1、 2、 3、 熟练掌握循环流程控制语句的使用。 掌握 break 和 continue ...
实验3循环结构程序设计.doc
实验3循环结构程序设计 - 实验三 循环结构程序设计 1.根据 ? 2 6 ?
实验三 循环结构程序设计.doc
实验三 循环结构程序设计 - 实验三 循环结构程序设计 三、实验内容( 按要求设计以下程序,并调试分析运行结果 ,任选 5 个题) (1) 设计程序 sy3-1.c ,要求...
实验三 循环结构程序设计.doc
实验三 循环结构程序设计 - 实验三 循环结构程序设计 一、实验学时 4 学时。 二、实验目的 1.熟练掌握 while、do-while 以及 for 语句实现循环程序设计的...
实验3 循环结构程序设计.doc
实验3 循环结构程序设计 - 实验3 实验3循环结构程序设计 一、实验目的 (1)掌握 while、do~while、for 语句的使用。 (2)掌握循环体内使用 break、continue ...
实验3 循环结构程序设计.doc
实验3 实验目的 循环结构程序设计 (1) 加强对循环过程的理解; (2) 学习编写循环结构的程序; (3) 综合运用分支结构和循环结构编写程序。 实验内容 LX0301 了解...
实验6 循环结构程序设计.doc
实验6 循环结构程序设计 - 实验 6 循环结构程序设计 一.实验目的 1. 掌握在设计条件型循环结构时,如何正确地设定循环条件。 2. 掌握如何正确地控制计数型循环...
实验三 循环结构程序设计.doc
实验三 循环结构程序设计一、实验目的 (1) 掌握 while、do~while、for 语句的使用。 (2) 掌握循环体内使用 break、continue 语句的作用。 (3) 掌握循环及嵌套...