C语言程序设计第四次作业
(一)改错题
输出三角形的面积和周长,输入三角形的三条边a、b、c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数);否则,输出“These sides do not correspond to a valid triangle”。
输入输出样例1:
Enter 3 sides of the triangle: 5 5 3
area = 7.15; perimeter = 13.00
输入输出样例2:
Enter 3 sides of the triangle: 1 4 1
These sides do
not correspond to a valid triangle
源程序(有错误的程序)
#include <stdio.h>
#include <math.h>
int main(void)
{
double a,b,c;
double area,perimeter,s;
printf("Enter 3 sides of the triangle: ");
scanf( "%lf%lf%lf",&a,&b,&c );
if( a + b > c || b + c > a || a + c > b)
s = ( a + b + c ) / 2;
area = sqrt( s * ( s - a ) * ( s - b ) * ( s - c );
perimeter = a + b + c;
printf("area = %.2f; perimeter = %.2f\n",area,perimeter);
else
printf("These sides do not correspond to a valid triangle\n");
return 0;
}
对源程序进行编译,采用每次修改第一个错误并重新编译的方法,记录每个错误的错误信息、分析错误原因并给出正确的语句。
编译结果为:
改错题采用如下格式
错误信息1:
错误原因:少了个“)”
改正方法:在第12行的末尾 分号之前加上“)”
错误信息2:
错误原因:else没有与之相配对的if
改正方法:在if语句的后面加上“{”,在else之前加上“}”即可
错误信息3:
错误原因:if语句中判断条件错误
改正方法:应该将if判断语句中“||”改成“&&”
改正之后的编译结果:
(二)学习总结
1.在编程解决问题的过程中,我们会用到多个if语句,if...else if... 语句以及switch语句,查阅资料,总结一下这三种情况的区别何在,并分别举例加以说明。禁止大段复制,要自己对资料进行归纳总结,并给出你参考的资料链接。
多个if语句:
说明:当 条件1,条件2,直到 条件n, 当所有的条件都为真,才执行 “{语句}”
if...else if... :
举例:
说明:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。
switch语句:
举例:
说明:switch语句中的常量表达式只是起到一个入口作用,一旦执行了相应的语句后,只要没有强迫中断语句(break),它就会一直按顺序继续执行下去,也就是会执行其它case后面的语句,直到遇到“”符号才停止。
区别:
1)多重if结构用于实现两路,三路分支比较容易,而switch结构实现三路以上分支比较方便,也可以用if...else if..
2)在使用switch时,应主意分支条件必须是整型表达式,且case语句后面必须是常量表达式
3)若是判断一个值是否在某个区间的情况,只能用if结构
参考网站:
https://wenku.baidu.com/view/2da3250690c69ec3d5bb7527.html
https://wenku.baidu.com/view/fe8e9ddb5022aaea998f0f40.html?from=search
2.对其他你认为需要进行总结的内容进行总结。
1)在使用if语句时,通常是在if语句和else语句后使用大括号,甚至在只有一条语句时也使用大括号,并且对大括号内的语句使用缩进,这样在以后添加其他语句时会变得很容易,同时也增加了代码的可读性,有助于避免出现错误。
2)条件运算符的优先级低于关系运算符,但高于赋值运算符条件运算符的结合方向是自右至左
(三)实验总结
本次实验总结,学号末位数是单数的同学完成选择结构(2)中的1、5、7、9题,学号末位数是双数的同学完成选择结构(2)中的2、4、6、8题。
格式如下:
1.比较大小
(1)题目
本题要求将输入的任意3个整数从小到大输出。
(2)流程图
(3)源代码
(4)
问题1:无
(5)本题PTA提交列表
2.高速公路超速处罚
(1)题目
按照规定,在高速公路上行使的机动车,超出本车道限速的10%则处200元罚款;若超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。
(2)流程图
(3)源代码
(4)
问题1:
原因:在第7行中缺少“double”
解决办法:在等于后面加上“double”
(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)
问题1:无
(5)本题PTA提交列表
4.12-24小时制
(1)题目
编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。
(2)流程图
(3)源代码
(4)
问题1:无
(5)本题PTA提交列表
(四)博客互评
1)http://www.cnblogs.com/liumiaomiao520/p/7753982.html#3830799
2)http://www.cnblogs.com/GX201701-/p/7765475.html#3830796