江西理工大学理学院 实验六 循环结构程序设计(1)
班级______________学号___________姓名___________
___________号机器 时间:________________________
实验目的:
1. 掌握while ,do-while 循环语句的使用与区别; 2. 掌握循环条件、循环体、循环终止等循环要素; 3. 理解循环执行过程。
实验要求:
每次实验前,学生要先预习实验内容,写出分析结果或程序,经实验指导老师检查后,上机运行、调试程序,得出最终正确结果。
实验内容:
一. 读程序
要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。 1、#include
int a=2,b=8; while(b - - <0) b - =a ; a++ ;
printf(“a=%d,b=%d\\n”,a,b); }
分析结果 运行结果
2、#include
int x=2 ,y=6 , z=3; do { y=y-1;
} while(z- - >0&&++x<5) ;
printf(“x=%d\\ty=%d\\tz=%d\\n”,x , y,z); }
分析结果 运行结果
二. 完成程序
要求:根据要求,分析给出的上下语句,填写程序
1、 以下程序的功能是计算正整数2345的各位数字平方和,请在_______上填写正确内容。
#include
int n ,sum= 0 ; n=2345; do
{ sum = sum + ____________; ______________________; } while( n) ;
printf(\}
2、 以下程序的功能是计算S=2+4+8+16+…+128,请在_______上填写正确内容。 #include
int s,n ,count ;
s=0 , n=1 ,count=1;
while(count<=7)
{ _____________; s = s + n ; _____________; }
printf("s = %f " , s ); }
三. 调试程序
要求:分析下列程序是否正确,如有错,错在哪儿?应如何改正?如正确,运行结果如何?上机调试之。
1、 以下程序输出100(包括100)以内的数,每行输出10个。 #include
void main() 1 { int k=100; 2 while( k= 0) 3 { printf( “ %d ,“ , k) ; 4 k - - ; 5 if (k==0)printf ( \6 }
运行结果 对 错 错误在 行 应改为:
2、 以下程序功能是求 S =1+ 1/2 +1/3 +…+ 1/10 #include
void main() 1 { int n ; 2 float s ; 3 s =1.0 ; 4 n= 10 ; 5 do 6 { s = s+ 1/n ; 7 n - - ;
8 } while (n>1) ;
9 printf(“%6.4 f \\n” ,s ); 10 }
对 错 运行结果 错误在 行 应改为:
3、下面程序的功能是计算n!。 #include
{ int i,n,s=1;
printf(\; scanf(\,&n); for(i=1;i<=n;i++) s=s*i;
printf(\,n,s); }
首次运行先输入n=4,输出结果为4!=24,这时正确的。为了检验程序的正确性,再输入n=10,输出为10!=24320,这显然是错误的。为了找到程序的错误,可以通过单步执行来观察变量的变化。这次我们在for循环体中增加一条输出语句,把变量s每次的运算结果显示出来。显示的结果是: s=1 s=2 s=6 s=24 s=120 s=720 s=5040 s=-25216 s=-30336 s=24320
运算过程中居然出现的负值,从显示看出s=5040是7!,再乘以8应是40320,实际却是一个负数。分析产生这种现象的原因,把程序改正过来,再用n=20进行实验,分析所得到的结果。
4、下面是一个计算e的近似值(使误差小于给定的δ)的程序。 1 #include
printf(\ scanf(\ y=1/x;
while(y>=detax)
10 11 12 13 14 15 {
x=x*i; y=1/x; e=e+y; ++i; }
16 printf(\ 17 }
(1)阅读上面的程序,写出程序所依据的计算公式。
(2)当输入的detax各是什么值时,能分别使程序按下面的要求运行: .不进入循环; .只循环一次; .只循环两次;
.进入死循环(程序将永远循环下去)。
为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?
(3)原程序中while语句中的y>=detax,分别换成y>detax,y=detax,y 假如不知道机器内的程序中的各语句实际上是什么,分别输入什么样的detax 来测试出 while语句的循环条件写错了。 (4)把原程序中while 语句之前的y=1/x 语句去掉,观察程序的运行将会发生什么样的 变化。 假如不知道机器内的程序实际上是怎么写的,输入什么样的detax 就能测试出少了上述这 条语句。 (5)若把原程序中的++i 换成i++,观察程序的运行发生了什么变化? 假如不知道这条语句到底是怎么写的,输入什么样的detax就能测试出这条语句写错了. (6)把原程序中的while 结构改写成do—while 结构,再分别按上述的(2)、(3)两步进行 实验。 四. 写程序 小明妈妈给他买了若干块巧克力,小明第一天吃了一半,还不过瘾,又多吃了一块,第二天又将剩下的巧克力吃掉一半,又多吃一块,以后每天都吃了前一天剩下的一半零一块。到第10天再想吃时,只剩下一块了。编程计算小明妈妈总共给小明买了多少块巧克力?

