实验六

2026/1/27 15:06:09

江西理工大学理学院 实验六 循环结构程序设计(1)

班级______________学号___________姓名___________

___________号机器 时间:________________________

实验目的:

1. 掌握while ,do-while 循环语句的使用与区别; 2. 掌握循环条件、循环体、循环终止等循环要素; 3. 理解循环执行过程。

实验要求:

每次实验前,学生要先预习实验内容,写出分析结果或程序,经实验指导老师检查后,上机运行、调试程序,得出最终正确结果。

实验内容:

一. 读程序

要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。 1、#include void main() {

int a=2,b=8; while(b - - <0) b - =a ; a++ ;

printf(“a=%d,b=%d\\n”,a,b); }

分析结果 运行结果

2、#include void main() {

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 void main() {

int n ,sum= 0 ; n=2345; do

{ sum = sum + ____________; ______________________; } while( n) ;

printf(\}

2、 以下程序的功能是计算S=2+4+8+16+…+128,请在_______上填写正确内容。 #include void main() {

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 void main()

{ 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 2 void main( ) 3 { 4 double e=1.0,x=1.0,y,detax; 5 int i=1; 6 7 8 9

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天再想吃时,只剩下一块了。编程计算小明妈妈总共给小明买了多少块巧克力?


实验六.doc 将本文的Word文档下载到电脑
搜索更多关于: 实验六 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219