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

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

实验三 使用循环结构的程序设计
[实验目的] 实验目的]
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
实验三 循环结构程序设计 - 实验三 循环结构程序设计 一、实验学时 4 学时。 二、实验目的 1.熟练掌握 while、do-while 以及 for 语句实现循环程序设计的...
实验三 循环结构程序设计(答案)_图文.doc
实验三 循环结构程序设计(答案) - 实验教案 课题(项目)名称: 实验三 循环结构程序设计 实验类型: 1.演示性√ 授课日期: 一、实验目的 (1) 掌握 while、do~...
实验三 循环结构程序设计(参考答案).doc
实验三 循环结构程序设计(参考答案) 实验三 循环结构程序设计(参考答案) 1、设计程序 sy3-1.c ,要求打印小学九九乘法表。 算法分析: 算法分析: 根据九九乘法表...
(11级)实验三 循环结构程序设计.doc
实验三 循环结构程序设计 实验三 循环结构程序设计一、实验目的 (1) 掌握 while、do~while、for 语句的使用。 (2) 掌握循环体内使用 break、continue 语句的...
实验三 循环程序设计.doc
实验三一、 实验目的 循环程序设计 ⒈掌握移位指令的使用方法。 ⒉学会循环结构程序的编程方法。 ⒊利用 DEBUG 调试程序查看循环程序循环过程中 CS 和 IP 的变化...
10级实验三--循环结构程序设计.doc
10级实验三--循环结构程序设计 - 实验三 循环结构程序设计 一、实验目的 (1) 掌握 while、do~while、for 语句的使用。 (2) 掌握循环体内使用 break、contin....
实验3 循环程序设计.doc
实验3 循环程序设计 - 实验三 一、 实验目的 循环程序设计 1、学会使用循环指令 loop、loopz、loopnz,加深对循环结构的理解。 2、掌握循环程序的设计方法。 3、...
实验三选循环结构程序设计.doc
实验三循环结构程序设计 - 实验三 循环结构程序设计 1 小学生计算机辅助教学
实验3循环结构程序设计.doc
实验3循环结构程序设计 - 实验三 循环结构程序设计 1.根据 ? 2 6 ?
C语言-实验三、循环结构程序设计解答.doc
C语言-实验三、循环结构程序设计解答 - 实验三 循环结构程序设计 一、实验目的 1.熟练掌握三种循环语句的应用。 2. 熟练掌握循环结构的嵌套。 3. 掌握 break ...
【实验指导书】实验3:循环结构程序设计-20150706.doc
河南工业大学信息学院《程序设计基础》课程组实验指导 实验三:循环结构程序设计一、 实验目的: 1. 熟练使用 for()、while()和 do-while()三种语句实现循环程序...
C语言_实验三、循环结构程序设计.doc
3. 掌握 break 和 continue 语句的使用。 4. 练习调试与修改程序。 5 实验三 循环结构程序设计 一、实验目的 1.熟练掌握三种循环语句的应用。 2. 熟练掌握...
实验三 循环结构程序设计.doc
实验三 循环结构程序设计_计算机软件及应用_IT/计算机_专业资料。c语言程序设计-...//输出 3 个成绩 printf("该学生成绩等级:"); /* 使用 switch 语句根据总...
实验三 循环结构程序设计.doc
实验三 循环结构程序设计实验目的 1.熟练使用 while、do-while 语句实现循环程序设计 2.理解循环条件和循环体,以及 for、while 和 do-while 语句的相同及不同之...
C语言程序设计 实验报告3--循环结构.doc
C语言程序设计 实验报告3--循环结构 - 福建农林大学金山学院实验报告 系(教研室) : 实验课程: 计算机号: 专业: 年级: 学号: 实验室号: 成绩: 姓名: 实验...
实验三 循环结构程序设计.doc
实验三 循环结构程序设计_计算机软件及应用_IT/计算机_专业资料。宁德师范学院计算机...熟练使用 for、while 和 do-while 语句实现循环程序设计。 2. 理解循环条件和...
实验5循环结构程序设计.doc
实验5循环结构程序设计 - 循环结构程序设计实验目的】 ① 掌握 for、while 和 do-while 三种基本的循环结构。 ② 掌握循环结构的嵌套,重点是双重嵌套。 实验...
实验三 循环结构程序设计.doc
实验三 循环结构程序设计 - 实验三 循环结构程序设计 三、实验内容( 按要求设计以下程序,并调试分析运行结果 ,任选 5 个题) (1) 设计程序 sy3-1.c ,要求...
实验四_循环结构程序设计.doc
实验程序设计-循环结构程序设计 4.1 实验要求与目的 1. 2. 3. 4. 5. 理解循环条件、循环体以及循环的执行过程 掌握及正确使用 for、while 和 do-while ...
实验6 循环结构程序设计.doc
实验6 循环结构程序设计 - 实验 6 循环结构程序设计 一.实验目的 1. 掌握在设计条件型循环结构时,如何正确地设定循环条件。 2. 掌握如何正确地控制计数型循环...