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

(二)学习总结
1:源程序:
程序的执行过程: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) 运行程序结果:
增量运算符在单独使用时,前缀和后缀形式是没有区别的,运行结果是一样的。
(2)运行程序结果:
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)运行程序结果:
(2)运行程序结果:
(3)运行程序结果:
(4)运行程序结果:
由以上几种运行结果不难看出:(1):循环体的认定与缩格形式无关,与{}有关。
(2):因为一对{}所包含的内容代表一个完整的语句,放在{}里面的语句都要一起执行。
(3):要正确判断一个循环语句中的循环体,要看题目要求,如果题目要求输出语句为换行形式输出,那么在{}内就要使循环体语句包含换行的语句。
(4):程序2,3,4都是正确的缩进格式。
4:总结:对于学过的知识,一定要及时复习,特别是对于C语言这个学科,自己的问题往往是在实践中发现并改正的。

(三)实验总结
1:
(1)题目
编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。
(2)流程图

(3)源代码

(4)实验分析
问题较简单,暂时没有发现。
(5)本题PTA提交列表:
3:
(1)题目
给定N个正整数,请统计奇数和偶数各有多少个?
(2)流程图


(3)源代码

(4)实验分析
暂无问题。
(5)本题PTA提交列表:
5:
(1)题目
编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
(2)流程图



(3)源代码

(4)实验分析
问题1:无法在C语言中的字符变量,空格,及字母进行准确的判断。
原因:对于空格,回车不熟悉。
解决办法:空格可以直接敲,空格可以用\n表示。
(5)本题PTA提交列表:
7:
(1)题目
编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。
(2)流程图


(3)源代码

(4)实验分析
问题1:奇数项与偶数项的符号存在正负。
原因:交错序列的特点。
解决办法:用C语言中fiag进行一次转换,再i进行循环。
(5)本题PTA提交列表:
(四)博客互评
1:评价人满为患的博客园作业;
人满为患的链接地址:http://www.cnblogs.com/liukaixuan/
他的这次作业完成的很迅速,做题结果也很好,对于每处错误都指出来了,截图也比较适当,应该向他学习。
2;评价赵晨宇的博客园作业;
赵晨宇的链接地址:http://www.cnblogs.com/zhaochenyu/
他的本次作业完成的很快,做题思路清晰,pta时准确率也比较高,对错误分析的也比较透彻,利于别人理解。
3;评价石广正的博客园作业;
石广正的链接地址:http://www.cnblogs.com/shaosiming/
石广正的本次作业完成的很完整,对问题能从根本上解决,解题步骤很清晰,适当的分配截图会使人更好的理解,这点做的很好,应该向你学习。

posted @ 2017-11-10 15:57  luckyyou  阅读(449)  评论(1编辑  收藏  举报