c语言程序设计第六次作业——循环结构(2)

(一)改错题

序列求和:输入一个正实数eps,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... ,精确到最后一项的绝对值小于eps(保留6位小数)。

修改前的源代码

错误信息(1):

错误原因:用do while循环语句在while后面要加分号,这个语句特殊需牢记

改正方法:在while后面加上分号

错误信息(2):

错误原因:item = 1/ n;次语句中n定义为整型,所以1/n不会出现小数

改正方法:把 item = 1/ n; 改为 item = (double)1/ n;

错误信息(3):

错误原因: }while( item < eps);此语句错误;因为该循环语句中的循环条件是当 item < esp 条件满足是输出,而源代码中误解为item > esp时输出

改正方法:把}while( item < eps);改为}while( item > eps);

错误信息(4):

错误原因:题干中要求把最后一项小于eps的那一项也加上

改正方法:在循环语句结束后输出语句前加上该语句s = s + flag * item;

错误信息(5):

错误原因: double变量的输入引号内,如果是小数,输出用%f,而输入用%lf

改正方法:把 scanf("%f",&eps);语句改为 scanf("%lf",&eps);

输出修改完后的源代码:

与期望符合!

(二)学习总结

(一)语句while(1)和for(;;)是什么意思?,如何保证这种循环能正常执行?

(1)都是无限循环,在循环语句中if语句后面加上break;就可以正常跳出,从而正常执行了

(二)一般情况下,设计循环结构时,使用for、while、do while三种语句都可以,并且三种语句可以相互转换,但是,在某些特定情况下,我们应该优先选择某种语句来快速实现循环设计。如果有如下情况:

(1)循环次数已知
(2)循环次数未知,但循环条件在进入循环时明确
(3)循环次数未知,且循环条件在进入循环时未知,需要在循环体中明确
针对上面三种情况,分别采用什么循环语句实现比较好?对每种情况,用我们完成的两次循环结构作业中的题目加以说明。

(1)循环次数已知使用for循环语句实现比较好

(2)循环次数未知,但循环条件在进入循环时明确使用while循环语句实现比较好

(3)循环次数未知,且循环条件在进入循环时未知,需要在循环体中明确使用do while循环语句实现比较好

for循环语句例题:PTA中循环结构(1)中第三题

while循环语句例题:PTA中循环结构(2)中第四题

do while循环语句例题:PTA循环结构(2)中第五题

(三)有如下问题:输入一批学生成绩,以-1作为结束,计算学生的平均成绩。

用for循环语句实现

用while循环语句实现

用do while循环语句实现

我认为用while语句好些;因为该题循环次数未知,但进入循环之前的条件明确了,用for语句或者是do while语句相比之下会比较麻烦

(四)运行下面程序,输入1到10,结果分别是什么?为什么?

第一个程序源代码及结果

第二个程序源代码及结果

第一个结果原因

break;表示的是运行完上面的语句就直接跳出,所以当运行完1时,运行2的结果直接跳出没有运行和运算,而此时s的值为1,故输出结果是1

第二个结果原因

continue;表示不进行后面语句,又重新回去运行上面步骤了,此程序表示的是10个数中奇数的累加和,故运行结果是25

(三)实验总结

(一)题目 求给定精度的简单交错序列部分和

本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。

(1)流程图:

(2)源代码:

(3)实验分析:

问题1:该题是奇数项为加,偶数项为减的求和方式,怎么使每一项都变号

原因:没有灵活运用定义变量,使定义的这个变量每循环一次都变号

解决办法:问同学,查找以前做过的题,的到解决思路,解决问题

(4)本题PTA提交列表:

(二)题目猜数字游戏

猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。

(1)流程图:

(2)源代码:

(3)实验分析:

问题1:第一眼看到这个题完全蒙了,不知道该怎么下手

原因:没有把大问题化为小问题,从小问题细节入手

解决办法:问同学,上网查资料,得出解题思路

问题2:此题分情况比较多,不会进行多种情况之间的关联

原因:逻辑思维欠缺

解决办法:问同学,在交流群里问学长,最终得出正确结果

(4)本题PTA提交列表:

(三)题目求奇数和

本题要求计算给定的一系列正整数中奇数的和。

(1)流程图:

(2)源代码:

(3)实验分析:

问题1:怎么判断是奇数,并且使之相加,需要使用循环语句和判断语句嵌套使用

原因:题目让求奇数和,故需要判断奇数

解决办法:查找以前的课件,回顾老师讲过的案例,写出正确程序

(4)本题PTA提交列表:

(四)博客互评

评论哔莉莉莉莉的博客

改错题部分思路清晰,学习总结部分总结的很全面,非常值得向哔莉莉莉莉学习,在改错题的第二个错误中一次改了俩个错误

哔莉莉莉莉的博客地址:http://www.cnblogs.com/bilililili/p/7842022.html
评论 一只猫の磊☀的博客

在改错题的部分把错误的地方都标记出来,这种学习方法很值得学习借鉴

一只猫の磊☀的博客地址:

http://www.cnblogs.com/8426224ll/p/7847221.html

评论 移动、淫领四妓夜物的博客

该同学的博客写的很好,改错部分思路清晰,而且每次得分都很高,是我学习的榜样!

移动、淫领四妓夜物的博客地址:

http://www.cnblogs.com/yjy751522356/p/7838296.html

posted @ 2017-11-17 12:57  赵晓辉  阅读(2743)  评论(12编辑  收藏  举报