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

时间: 2024-08-24 01:09:15

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

C语言程序设计第六次作业--循环结构2

(一)改错题 序列求和:输入一个正实数eps,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... ,精确到最后一项的绝对值小于eps(保留6位小数). 输入输出样例: Input eps:1E-4 s = 0.835699 源程序(有错误的程序) #include<stdio.h> int main() { int flag,n; double eps,item,s; printf("Input eps: "); scanf("%f",

C语言程序设计第五次作业——循环结构(1)

(一)改错题 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下:c = 5×(f-32)/9其中,c表示摄氏温度,f表示华氏温度.输入输出样例1: Enter lower:32 Enter upper:35 fahr celsius 32 0.0 34 1.1输入输出样例2: Enter lower:40 Enter upper:30 fahr celsius源程序(有错误的程序)

C语言程序设计第六次作业

(一)改错题 序列求和:输入一个正实数eps,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... ,精确到最后一项的绝对值小于eps(保留6位小数). 输入输出样例: Input eps:1E-4 s = 0.835699 源程序(有错误的程序) #include<stdio.h> int main() { int flag,n; double eps,item,s; printf("Input eps: "); scanf("%f",

C语言程序设计第5堂作业

一.本次课学习主要内容及知识结构点: 二.实验内容:(60分) 1. 求奇数和.输入一批正整数(以零或负数为结束标志),求其中的奇数和.试编写相应程序. 2. 展开式求和.输入一个实数 x,计算并输出下式的值,直到最后一项的绝对值小于0.00001 (保留4 位小数).要求定义和调用函数fact(n)计算n 的阶乘,可以调用pow()函数求幂.试编写相应程序. 3. 求序列前n项和(2/1+3/2+5/3+8/5+...).输入一个正整数n,输出 2/1+3/2+5/3+8/5 +"的前n项之和

C语言程序设计第八次作业

一.学习内容     本次课学习了一维数组的基本知识,需要大家对如下知识点进行总结:     1. 数组的定义,数组元素的引用,数组的初始化和赋值.     2. 明确以下问题:能否给数组名赋值?为什么?C语言会对数组下标做越界检查吗?那么我们写程序时应该注意什么?     3. 对数组数据的访问一定是跟循环结构分不开的,一般情况下,循环变量的值随数组元素的下标变化.学会灵活运行循环结构完成对数组数据的处理.     4.通过火柴棍等式问题,理解利用函数.数组对程序的优化. 二.实验内容    

C语言程序设计第6堂作业

          一.  本次课主要内容:             通过几个实例来进一步掌握循环结构的应用. 二. 实验内容:(70分) 1. 穷举算法(古典算术问题-搬砖头)某地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬一块.问用45人正好搬45块砖,有多少种搬法? 2. 猴子吃桃问题.一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个:第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半加一个.到第n天早上想再吃时,见只剩下一

2018上C语言程序设计(高级)作业- 第0次作业

1.翻阅邹欣老师博客关于师生关系博客,并回答下列问题 1)最理想的师生关系是健身教练和学员的关系,在这种师生关系中你期望获得来自老师的哪些帮助? 师生间的人际关系,是在教学过程中师生交往的基础上,通师生相互影响.相互认识.相互间信息交流而形成的.师生之间通过言语和非言语两种形式彼此传递信息和交流思想.观点.态度.情感等,双方交流的愿望.目的.动机.心理状态以及交流的时间.态度.方式等影响着交往的程度和水平,由此决定着二者之间的关系亲近程度,从而影响着学生对教师的评价,进而影响着孩子的学习:影响学

C语言程序设计第7堂作业

     一.本次课主要内容: 本次以计算圆柱体体积为例,通过定义体积计算功能的函数和主函数调用的例子,引出函数定义的一般形式:函数首部加函数体,且在函数结尾处通过return 语句返回结果.本节要重点掌握两点: (1)形参.实参及参数传递.形参只能用变量表示,在函数中起作用:实参可以是变量.常量或表达式,在主调函数中.实参与形参要个数一致,类型一致.参数传递时,实参把变量.常量的值或者表达式结果值传递给形参. (2)函数定义首部与声明.二者形式相似,函数声明的目的主要是说明函数的类型和参数的情

C语言程序设计第13次作业

一.本次课主要内容: 本章主要介绍结构的基本概念与定义.结构变量的定义和使用.结构数组应用.结构指针概念.重点介绍结构的定义与成员引用方式.同时也介绍了文件的基本概念,文件操作处理基本步骤和过程,常用文件操作函数等知识. (1)通过综合示例"输出平均分最高的学生信息"引出结构的概念和主要知识点.重点学习了结构变量使用的三种情况:结构成员引用方式.相同类型结构变量的相互赋值.结构变量作为函数参数. (2)通过例子"学生成绩文件统计"引出文件的基本概念和主要知识点,实现