C语言程序设计第四次作业——选择结构(2)
(一)改错题
输出三角形的面积和周长,输入三角形的三条边a、b、c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数);否则,输出“These sides do not correspond to a valid triangle”。
源程序(有错误的程序)
错误一
错误原因:缺少括号,不能结对
改正方法:增加括号,使括号结对
错误二
错误原因:if与else中的语句没有加花括号
改正方法:增加大括号
错误三
错误原因:根据题意要求,本题if语句中应该用且的关系,而不是或
改正方法:将if语句中的符号改为&&
测试数据及运行结果:
输入5 5 3
输入1 4 1
运行结果,测试数据正确
(二)学习总结
1.在编程解决问题的过程中,我们会用到多个if语句,if...else if... 语句以及switch语句,查阅资料,总结一下这三种情况的区别何在,并分别举例加以说明。禁止大段复制,要自己对资料进行归纳总结,并给出你参考的资料链接。
if语句的使用方法比较多,可以只是用if一个条件,也可以使用二分支结构if-else语句,当条件比较多的时候,还可以使用多分支结构和else-if语句,所以使用的方法比较多,适用面也就更广。if语句适用范围比较简单,而else if语句则能够表达更多的选择条件。使用if else语句的时候,一定要注意条件间的的对应问题,以及选择语句括号中的符号用法,极易出错。而当程序比较复杂的时候,就会出现多个if else嵌套的情况,会使程序可读性很差,而且极易出错。这时我们就要借助switch语句,一个专门用于处理多分支结构的条件选择语句,switch又称为开关语句,与case搭配,并且结尾加上break语句会使程序跳出switch语句,当然,使用switch语句的时候一定要考虑语句的格式与正确写法。
2.对其他你认为需要进行总结的内容进行总结
要注意switch语句的使用格式,开关语句具有穿透性,注意break的合理使用。有些情况下也会利用开关语句的穿透性简单的解决问题。同样要注意default后并不需要break,并且default语句并不是编程序时一定需要的,所以一定要加强对switch语句的联系,熟练掌握。
(三)实验总结
1.成绩转换
(1)题目:本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:
• 大于等于90分为A;
• 小于90且大于等于80为B;
• 小于80且大于等于70为C;
• 小于70且大于等于60为D;
• 小于60为E。
(2)源程序:
(3)流程图
(4)实验分析
问题:利用变量等效替代的时候出现了问题
解决方法:在草稿纸上画出流程图,理清思路,解决了问题
(5)本题PTA提交列表
- 高速公路超速处罚
(1)题目:按照规定,在高速公路上行使的机动车,超出本车道限速的10%则处200元罚款;若超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。
(2)源程序
(3)流程图
(4)实验分析
问题:输出时出现错误,结果正好与正确答案相反
解决办法:将出现问题的语句修改,将输出语句的变量的顺序更换。
(5)本题PTA提交列表
3.计算油费问题
(1)题目:现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。
本题要求编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助),计算并输出应付款。
(2)源程序:
(3)流程图
(4)实验分析
问题:框图逻辑出现混乱
解决办法:和同学经过讨论,改正框图
(5)本题PTA提交列表
4.12-24小时制转化问题
(1)题目:编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。
(2)源代码:
(3)流程图:
(4)实验分析
问题:0点的转化遇到问题
解决方法:将时间减去12小时,即可解决0点属于那一天的问题
(5)本题PTA提交列表
(四)博客互评
1.许天笑:http://www.cnblogs.com/snxtx/p/7763856.html