C语言程序设计第四次作业——选择结构(2)
(一)改错题
对源程序进行编译发现有误
错误信息1
错误原因:第13行丢掉了与最开始那半个括号配对的半个括号
改正方法:加上那半个括号
错误信息2
错误原因:if和else语句使用格式错误
改正方法:在if和else语句下分别加上大括号(如图)
再次编译无误,运行结果不对
错误信息3
错误原因:第11行if语句中应该是和(&&)的关系,而它用的且(||)
改正方法:将“||”换成“&&”
再次编译运行,结果无误。
(二)学习总结
1.if和if else以及switch语句的区别
switch语句只会在一开始的switch括号中取出变量值一次,然后将这个值与下面所设定的case比较,但如果使用if,每次遇到条件式时,都要取出变量值
例如: if(a == 1) //... else if(a == 2) //... else if(a == 3) //... 这个程序片段在最差的状况下,也就是a = 3时,共需3次比较,而每次比较都必须取出变量a的值一次。 如果换成switch: switch(a) { case 1: //... break; case 2: //... break; case 3: //... break; } 在这个程序片段中,只在开头switch的括号中取出变量a的值,然后逐一比较下面的case,效率的差别就在这儿。遇到复合条件时,就得使用if了。简单地说,if与switch两者可以搭配着灵活使用。
https://wenku.baidu.com/view/a22a85442b160b4e767fcf7b.html
If -else if有多个分支,有条件的执行每一个分支 里面的语句
If -else有条件的执行其中的一条语句
SWitch-case有条件的执行一组语句中的一条语句
有多个if语句的话,所有的if语句都要执行,而if else语句只执行其中的一个条件即可
2.其他总结
选择结构要注意if else语句和switch语句的运用区别,switch的穿透性及char的运用。同时,依然要强调细节问题!千万不能够犯这种小错误。还要熟记本章新学的转义字符有关内容。
(三)实验总结
(1)比较大小
(2)流程图
(3)源代码
(4)实验分析
问题1:运行结果符号不对
原因:未注意输出格式中关系符号的格式
解决方法:将<改成->
问题2:raptor输不出结果
原因:输出框中变量需用引号标注
解决方法:标注即可
(5)本题PTA提交列
2.
(1)高速公路超速处罚
(2)流程图
(3)源代码
(4)实验分析
问题1:不能输出%
原因:printf语句中%.f后应该有两个%才能输出%
解决方法:加上两个%
问题2:不能输出正确的对应结果
原因:if语句搭配使用错误
解决方法:使用if else if及else语句
(5)本题PTA提交列
3.
(1)计算油费
(2)流程图
(3)源代码
(4)实验分析
问题:输出结果有误
原因:丢掉了break语句
解决方法:在对应语句后加上break语句
(5)本题PTA提交列
4.
(1)12-24小时制
(2)流程图
(3)源代码
(4)实验分析
问题:raptor运行有误
原因:raptor作图时在判断框直接输入了a<=12,忽略了用or表示并且的关系
解决方法:将a<=12改成a<12 or a=12
(5)本题PTA提交列表
(四)博客互评
http://www.cnblogs.com/fkh1/p/7774050.html
http://www.cnblogs.com/tengwenqing/p/7762729.html
http://www.cnblogs.com/123456lxl/p/7774897.html