C语言循环实验报告

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验名:循环结构实验目的

1、掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。

2、了解条件型循环结构的基本测试方法。

3、掌握如何正确地控制计数型循环结构的次数

4、了解对计数型循环结构进行测试的基本方法

5、了解在嵌套循环结构中,提高程序效率的方法

二、实验内容

(一))题目1

1、题目内容描述

1、下面是一个计算e的近似值(使误差小于给定的δ)的程序。

main()

{

doublee=,x=,y,detax;

inti=1;

printf(“\npleaseinputenteraerror:”);

scanf(“%lf”,&detax);

y=1/x;

while(y>=detax)

{

x=x*I;

y=1/x;

e=e+y;

++i;

}

printf(“%”,e);

}

2、实验步骤

(1)阅读上面的程序,写出程序所依据的计算公式。

(2)当输入的detax各是什么值时,能分别使程序按下面的要求运行:.不进入循环;.只循环一次;.只循环两次;.进入死循环(程序将永远循环下去)。为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?

(3)原程序中while语句中的y>=detax,分别换成y>detax,y=detax,y

(5)若把原程序中的++i换成i++,观察程序的运行发生了什么变化?假如不知道这条语句到底是怎么写的,输入什么样的detax就能测试出这条语句写错了.

(6)把原程序中的while结构改写成do—while结构,再分别按上述的(2)、(3)两步进行实验。

2、输入和输出信息描述及数据类型确定;

、输入数据

序号输入数据描述数据类型

1 e,x,y,detax double

2 i int (2)输出数据

序号输出数据描述数据类型1 E double 3、程序源代码(填写程序调试正确后的代码)

#include<>

intmain()

{

doublee,x,y,detax;

inti;

e=;

x=;

i=;

printf("pleaseinputenteraerror:\n");

scanf("%lf",&detax);

y=1/x;

while(y>=detax)

{

x=x*i;

y=1/x;

e=e+y;

++i;

}

printf("%",e);

return0;

}

7、程序调试

错误序号错误信息(列出出错语句以及出错提示)是

解决方法

1 格式不对是手动调整

2 warning:returntypedefaultsto'int'[-Wreturn-type]| 是在main()前加上int

3 error:stray'\243'inprogram|error:stray'\273'inprogram| 是将doublee=,x=,y,detax;inti=1;

改为

doublee,x,y,detax;inti;e=;x=;i=;

4 D:\程序\e近似值\||Infunction'main'

error:stray'\241'inprogram| 是将

printf(“\npleaseinputenteraerror

:”);改为

printf("pleaseinputenteraerror:\n

");

5 error:stray'\241'inprogram| 是将scanf(“%lf”,&detax);改为

6 error:'I'undeclared(firstuseinthisfunction)| 是将I改为i

7 c|19|error:stray'\241'inprogram| 是将printf(“%”,e);改为

printf("%",e);

8 c|20|warning:controlreachesendofnon-voidfunction[-Wretu

rn-type]|

是在后一个大括号前加上return0;

8、测试与结果分析

、测试数据与结果

测试序号测试用例选取原

测试输入

数据

测试输出结果是否

正确

结果分析

1 不循环

2 是

2 循环一次 1 是

3 循环两次是

死循环0 无是

、相关问题回答

(1)阅读上面的程序,写出程序所依据的计算公式。

答:e=1+1/2+1/6…+1/i!

(2)当输入的detax各是什么值时,能分别使程序按下面的要求运行:.不进入循环;.只循环一次;.只循环两次;.进入死循环(程序将永远循环下去)。为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?

答:大于1不进入循环,等于1只循环一次,大于小于1只循环两次,等于0进入死循环(程序将永远循环下去)。应增加printf(“i=%d”,i-1);

(3)原程序中while语句中的y>=detax,分别换成y>detax,y=detax,ydetax,输入不小于1时不进行循环,输出1;输入小于1时则会进行循环。y=detax,当输入为0时,y被赋值为0,直接结束循环;当输入不为0,则进入死循环。y

答:输入1.

(5)若把原程序中的++i换成i++,观察程序的运行发生了什么变化?假如不知道这条语句到底是怎么写的,输入什么样的detax就能测试出这条语句写错了.

(6)把原程序中的while结构改写成do—while结构,再分别按上述的(2)、(3)两步进行实验。

答:(2)步与原来while相同。(3)步当有的输入条件不符合判断条件时,仍会先进行一次循环后结束,而while 则直接结束。

#include<>

intmain()

{

doublee,x,y,detax;循环;.外循环1次,不进入内循环;.外循环,内循环各1次;.外循环1次,内循环2次;外循环2次,内循环1次;.外循环19次,内循环3次;.外循环20次,内循环2次;.外循环21次,内循环3次。

(2)试修改程序,以便能知道控制表达式i=1;j<=20;i++和j=1;j<3;j+=各执行了多少次?

(3)内循环与外循环的控制表达式进行对换,观察程序的执行结果有无变化,并且观察对换后的外循环与内循环控制表达式执行的总次数有无变化?

(4)将(3)中程序写为

main()

{

inti,j,k;

longsum=0;

for(j=<=++)

{

k=j+2;

for(i=1;i<=20;i++)

sum=sum+(i+1)*(i+1)**k;

相关文档
最新文档