文档详情

C语言循环实验报告

re****.1
实名认证
店铺
DOCX
30.78KB
约8页
文档ID:518334208
C语言循环实验报告_第1页
1/8

实验名:循环结构 实验目的1、掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数2、了解条件型循环结构的基本测试方法3、掌握如何正确地控制计数型循环结构的次数4、了解对计数型循环结构进行测试的基本方法5、了解在嵌套循环结构中,提高程序效率的方法二、实验内容(一))题目11、题目内容描述1、 下面是一个计算e的近似值(使误差小于给定的5)的程序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

假如不知道机器内的程序中的各语句实际上是什么,分别输入什么样的detax来测试出while语句的循环条件写错了4) 把原程序中while语句之前的y =1/x语句去掉,观察程序的运行将会发生什么样的变化假如不知道机器内的程 序实际上是怎么写的,输入什么样的detax就能测试出少了上述这条语句5) 若把原程序中的++i换成i++,观察程序的运行发生了什么变化?假如不知道这条语句到底是怎么写的,输入什么 样的detax就能测试出这条语句写错了.(6) 把原程序中的while结构改写成do—while结构,再分别按上述的(2)、(3 )两步进行实验2、输入和输出信息描述及数据类型确定;、输入数据序号 输入数据描述1 e,x,y,detax2i(2) 输出数据序号 输出数据描述1E3、程序源代码(填写程序调试正确后的代码) #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]数据类型 double int数据类型 double3 error:stray'\243'inprogram|error:stray'\273'inprogram|4 D:\ 程序\e 近似值 \||lnfunction'main' error:stray'\241'inprogram|5 error:stray'\241'inprogram|6 error:'I'undeclared(firstuseinthisfunction)|7 c|19|error:stray'\241'inprogram|8 c|20|warning:controlreachesendofnon-voidfunction[-Wretu rn-type]|是 解决方法否解决是 手动调整是 在main ()前加 tint是 将doublee=,x=,y,detax; inti=l;改为doublee,x,y,detax;inti;e=;x=;i=; 是将printf(“\npleaseinputenteraerror:”);改为printf("pleaseinputenteraerror:\n");是 将scanf (“%lf”,&detax);改为是将I改为i是 将printf (“%”,e);改为printf("%",e);是在后一个大括号前加上return。

8、测试与结果分析、测试数据与结果测试测试用例选取原 测试输入测试输出结果是否 结果分析序号因数据正确1不循环2是2循环一次1是3循环两次是死循环0无是、相关问题回答(1)阅读上面的程序,写出程序所依据的计算公式答:e=l+l/2+l/6…+l/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,则进入死循环。

yintmain(){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;} printf(“sumis:%d\n”,sum);} 观察程序的执行结果有无变化?(5) 将(3)中程序改写为 main(){intI,j,m,n;longsum=0;for(j=1;j<=3;j++){m=j+2;for(I=1;j<=20;I++){ n=I+1;sum=sum+m*m*k;}} printf(“sumis:%d\n”,sum);} 观察程序的执行结果有无变化?(6)在(5)的程序中,若将外循环控制表达式分别做如下修 改:.j=l;j〈3;j++.j=l;j=3;j++.j=l;j〉=3;j++.j=l;j〉3;j++.j=l;j〈=3;=l;j〉3;=l;j〈3;j++.j=0;j〈=3;j+=.j=0;j 〈3;j++j=l;j〈=3;j++j=l;j〈3;++j观察程序的执行结果有无变化2、输入和输出信息描述及数据类型确定;、输入数据序号输入数据描述数据类型1I,jint2sumlongint(2)输出数据序号输出数据描述数据类型1sumLongint3、 程序源代码(填写程序调试正确后的代码) #include<>main(){inti,j;longsum=0; for(i=1;i<=20;i++)for(j=1;j<=3;j++) sum=sum+(i+1)*(i+1)*(j+2);printf("sumis:%d\n",sum);}4、 程序调试是 解决方法错 错误信息(列出出错语句以及出错提示)误否序解号决1 |6|warning:valuecomputedisnotused[-Wunused-value]|是 将for(i=1;i〈=20;i++)改为for(i=1;i<=20;i++)2 |2|warning:returntypedefaultsto'int'[-Wreturn-type]|是 在main () 前加tint3 |9|error:expected';'before'printf'|是 sum=sum+(i+1)*(i+1)*(j+2)后面加上分号4 |9|error:stray'\241'inprogram|是将printf(“sumis:%d\n”,sum);改为printf("sumis:%d\n",sum);5 |10|warning:controlreachesendofnon-voidfunction[-Wreturn-type]|是加上return。

6 |9|warning:format'%d'expectsargumentoftype'int',butargument2hastype'否longint'[-Wformat=]|、相关问题回答(1)将上述程序中的和分别做什么样修改,能使程序按如下要求运行:.不循环;.外循环1次,不进入内循环;. 外循环,内循环各1次;.外循环1次,内循环2次;外循环2次,内循环1次;.外循环19次,内循环3次;.外循环20 次,内循环2次;.外循环21次,内循环3次答:外循环1次,不进入内循环:改为for(i=l,i=l,i++)for(j=l;j〉3;j++).外循环,内循环各1次:改为for(i=1;,i=1;i++)for(j=1;j=1;j++).外循环1次,内循环2次:改为 for(i=1;i=1;i++)intj=1;for(;j〈=2;j++).外循环2次,内循环1次:改为 for(i=1;i〈=2;i++)for(;j〈2;j++).外循环 19 次,内循环3次:改为 for(i=1;。

下载提示
相似文档
正为您匹配相似的精品文档