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
错误的源程序:1242757-20171108235345981-1320353221.png
错误信息1:1242757-20171109000138216-1127004618.png
错误原因:没有考虑到输入数据的合法性,即 华氏温度的取值范围是{lower,upper},lower<=upper.
改正方法:加入if语句做判断:1242757-20171109000540794-1199104745.png
错误信息2:1242757-20171109000657653-1060174605.png
错误原因:for中的三个条件应该用两个分号分开,且 循环变量增值错误,
改正方法:将逗号改为分号,将fahr ++改为fahr +=2或fahr = fahr + 2:1242757-20171109001329059-313649226.png
错误信息3:1242757-20171109001400809-706603961.png
错误原因:公式运用错误。
改正方法:1242757-20171110142719825-749729119.png
错误信息4:1242757-20171109002414059-792432003.png
错误原因:fahr是整型,不应该用%XXf。
改正方法:把%3.0f改为%3d:1242757-20171109002708013-1429991550.png
改正后的程序:1242757-20171110144845419-1982475417.png

(二)学习总结
1:源程序:1242757-20171109003502075-96504361.png
程序的执行过程:1:首先,定义变量 i,num,odd,even,且给odd和even赋初值为0。
2:然后进入循环执行过程,给i赋初值为1,且以i<=10为循环条件进行。
3:若i<=10为真,则执行scanf("%d",&num) 即输入一个整数,存储在num中。
4:然后进行判断输入的整数是否为偶数。
5:如果是偶数,则执行变量even加1。
6:如果不是偶数,则执行变量odd加1。
7:然后,对i加1,继续判断i<=10。
8:若为真,则再输入一个整数。
9:判断是否为偶数,如果是偶数,则再次执行变量even加1。
10:如果不是偶数,则执行变量odd加1。
11:然后再给i加1,继续判断i<=10,进入循环过程。
12:如果i<=10为假,则不执行判断,直接输出even和odd的初值,程序结束。
2:增量运算符

(1) 运行程序结果:1242757-20171109113234091-1799832448.png
增量运算符在单独使用时,前缀和后缀形式是没有区别的,运行结果是一样的。
(2)运行程序结果:1242757-20171109113705622-273457723.png
i 语句的执行过程:开始给i的初值为2,然后输出i++,因为不是单独使用,而是放到了输出语句中,作为输出语句的一部分,又因为是后缀的形式,所以,先输出i的初值,在对i加1,但是i的值已经输出,所以加1后i的值不会再输出,所以输出为2.
j 语句的执行过程:开始给j的初值为2,然后输出++j,,因为不是单独使用,而是放到了输出语句中,作为输出语句的一部分,因为是前缀的形式,所以,先对j进行加1的操作,在输出加1后j的值,所以输出3.
说明:增量运算符在作为表达式的一部分时,前缀形式和后缀形式的执行过程是不一样的。即前缀形式先对变量加上或是减去相应的数,而后缀形式是先输出变量然后再对变量加上或是减去相应的数。
这两条输出语句执行完后,i和j的值都为3.

3:(1)运行程序结果:1242757-20171109222515341-158734827.png
(2)运行程序结果:1242757-20171109222639403-590825375.png
(3)运行程序结果:1242757-20171109222748606-841782663.png
(4)运行程序结果:1242757-20171109222844403-1606707859.png
由以上几种运行结果不难看出:(1):循环体的认定与缩格形式无关,与{}有关。
(2):因为一对{}所包含的内容代表一个完整的语句,放在{}里面的语句都要一起执行。
(3):要正确判断一个循环语句中的循环体,要看题目要求,如果题目要求输出语句为换行形式输出,那么在{}内就要使循环体语句包含换行的语句。
(4):程序2,3,4都是正确的缩进格式。
4:总结:对于学过的知识,一定要及时复习,特别是对于C语言这个学科,自己的问题往往是在实践中发现并改正的。

(三)实验总结
1:
(1)题目
编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。
(2)流程图
1242757-20171110145525309-1358056528.png
(3)源代码
1242757-20171110150149106-1759705769.png
(4)实验分析
问题较简单,暂时没有发现。
(5)本题PTA提交列表:1242757-20171109235540028-1309906306.png
3:
(1)题目
给定N个正整数,请统计奇数和偶数各有多少个?
(2)流程图
1242757-20171110151632388-21949417.png
1242757-20171110151642684-1905768959.png
(3)源代码
1242757-20171110150127497-1254099301.png
(4)实验分析
暂无问题。
(5)本题PTA提交列表:1242757-20171109235751669-357261639.png
5:
(1)题目
编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
(2)流程图
1242757-20171110153456247-666367514.png
1242757-20171110153512638-1146584969.png
1242757-20171110153527169-1587959149.png
(3)源代码
1242757-20171110152125372-1916163693.png
(4)实验分析
问题1:无法在C语言中的字符变量,空格,及字母进行准确的判断。
原因:对于空格,回车不熟悉。
解决办法:空格可以直接敲,空格可以用\n表示。
(5)本题PTA提交列表:1242757-20171109235937684-1242398304.png
7:
(1)题目
编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。
(2)流程图
1242757-20171110154446778-433804537.png
1242757-20171110154457919-1106664169.png
(3)源代码
1242757-20171110153932872-1280321633.png
(4)实验分析
问题1:奇数项与偶数项的符号存在正负。
原因:交错序列的特点。
解决办法:用C语言中fiag进行一次转换,再i进行循环。
(5)本题PTA提交列表:1242757-20171110000111044-2067289260.png
(四)博客互评
1:评价人满为患的博客园作业;
人满为患的链接地址:http://www.cnblogs.com/liukaixuan/
他的这次作业完成的很迅速,做题结果也很好,对于每处错误都指出来了,截图也比较适当,应该向他学习。
2;评价赵晨宇的博客园作业;
赵晨宇的链接地址:http://www.cnblogs.com/zhaochenyu/
他的本次作业完成的很快,做题思路清晰,pta时准确率也比较高,对错误分析的也比较透彻,利于别人理解。
3;评价石广正的博客园作业;
石广正的链接地址:http://www.cnblogs.com/shaosiming/
石广正的本次作业完成的很完整,对问题能从根本上解决,解题步骤很清晰,适当的分配截图会使人更好的理解,这点做的很好,应该向你学习。

转载于:https://www.cnblogs.com/LYFRRS/p/7807056.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值