C语言程序设计第四次作业
(一)改错题
- 输出三角形的面积和周长,输入三角形的三条边a、b、c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数);否则,输出“These sides do not correspond to a valid triangle”。
- 源程序(有错误的程序):
- 错误信息1:
- 错误原因及改正1:
(s - c)后没有“)”;应在(s-c)后加上“)”即可。 - 错误信息2:
- 错误原因及改正2:
if后的语句没有加“{}”;应在语句开头上一行和末尾分别加上“{”,“}”即可。 - 错误信息3:
- 错误原因及改正3:
在if条件括号中用了或者“||”,应该是和“&&”的关系;把“||”改成“&&”即可。 - 全部改正后带入几组数据进行运行计算如图:
运行结果都与预期结果相符。 - 正确的代源码如图:
(二)学习总结
- if语句的一般格式为:
- if...else if... 语句是实现多分支的方法,其一般形式为:
- switch语句的一般形式为:
- 这三种情况的区别:
在只需要判断一个条件的时候,自然是使用if语句方便有效;但是当判断条件很多的时候,我们可以使用多个if语句或者if...else if语句或者switch case语句。 - if语句和if...else if语句的举例说明:
if...else if语句和多个if语句的区别还是很大的,if...else if在任何一个环节满足条件的时候就将会终止判断,只处理一个满足条件的情况;而对于多个if语句,将会对每一个判断条件进行判断,自然而然会导致程序的执行效率降低。在多个判断条件的情况下,使用if...else if语句相对于使用多个if语句而言,可以减少程序的判断次数,提高效率。 - 三者的建议使用方法:
switch建议判断固定值的时候用;
if建议判断区间或范围的时候用;
用switch能做的,用if都能做,单反过来则不行。 - 示例:
判断65分到85分之间的学生有哪些适合用if-else语句,因为[65,85]是区间,而判断一个学生的班级是一班、二班还是三班适合用switch语句,因为一班、二、三班是离散值。
链接:https://zhidao.baidu.com/question/332651860.html
(三)实验总结
- 1.成绩转换
(1)题目
成绩转换本题要求编写程序将一个百分制成绩转换为五分制成转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
(2)流程图:
(3)源代码:
(4)实验分析: - 问题:
首次输入switch(grade/10)时忘记除以10了,导致程序不对。 - 原因:
switch语句中需要在0-10之间判断 - 解决办法:
grade后面加上/10。
(5)本题PTA提交列表
- 2.三角形判断
(1)题目
给定平面上任意三个点的坐标(x1 ,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。
(2)流程图:
(3)源代码:
(4)实验分析: - 问题1:
- 原因1:
谁和谁不能用"||",应该用&&。 - 解决方法1:
看课件,询问同学。 - 问题2:
编译错误。 - 原因2:
sqrt公式中少了一个括号扩回。 - 解决方法2:
将括号扩回。
(5)本题PTA提交列表:
- 3.两个数的简单计算器
(1)题目
本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。
(2)流程图:
(3)源代码:
(4)实验分析: - 问题:
当除数为0时 - 原因1:
除数为0没有意义。 - 解决方法:
用判断条件排除除数为0时的情况。
(5)本题PTA提交列表:
- 4.求一元二次方程的根
(1)题目
本题目要求一元二次方程的根,结果保留2位小数。
(2)流程图:
(3)源代码:
(4)实验分析: - 问题:
本程序过程复杂思路模糊。 - 原因:
不容易思考和想象。 - 解决方法:
和同学共同思考和商量。
(5)本题PTA提交列表:
(四)博客互评
http://www.cnblogs.com/panjiupeng/p/7777538.html
http://www.cnblogs.com/lrxlrz/p/7763680.html
http://www.cnblogs.com/tengwenqing/p/7762729.html