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
评论 移动、淫领四妓夜物的博客
该同学的博客写的很好,改错部分思路清晰,而且每次得分都很高,是我学习的榜样!