(一)改错题

输出三角形的面积和周长,输入三角形的三条边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)错误信息:

c语言的第四次作业-LMLPHP

错误原因:

少了半个括号。函数后面要用括号括起来的。

改正方法:

在计算面积的最后一行加上半个后括号。

(2)错误信息:

c语言的第四次作业-LMLPHP

错误原因:

else没有找到对应的if。

改正方法:

在if和else下的代码中都加上大括号。

(3)错误信息:

c语言的第四次作业-LMLPHP

错误原因:

输入1 4 1 时,不构成三角形,但是却输出结果啦,不符合题目要求。在if判断时候出现错误。

改正方法:

把if判断的后面的或者换成并且的关系。“&&”

(4)正确的程序

c语言的第四次作业-LMLPHP

(二)学习总结

1.在编程解决问题的过程中,我们会用到多个if语句,if...else if... 语句以及switch语句,查阅资料,总结一下这三种情况的区别何在,并分别举例加以说明。

1>例如顺序结构(2)作业第四题

高速公路超速处罚

按照规定,在高速公路上行使的机动车,超出本车道限速的10%则处200元罚款;若超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。

输入格式:

输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。

输出格式:

在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整数。

输入样例1:

65 60

输出样例1:

OK

输入样例2:

110 100

输出样例2:

Exceed 10%. Ticket 200

输入样例3:

200 120

输出样例3:

Exceed 67%. License Revoked

2>流程图

c语言的第四次作业-LMLPHP

(2)if....语句是都要运行,他们是并列运行的。前后没有联系 ,也没有影响。

1>例如顺序结构(2)作业第二题

比较大小

本题要求将输入的任意3个整数从小到大输出。

输入格式:

输入在一行中给出3个整数,其间以空格分隔。

输出格式:

在一行中将3个整数从小到大输出,其间以“->”相连。

输入样例:

4 2 8

输出样例:

2->4->8

2>流程图

c语言的第四次作业-LMLPHP

(3)switch语句可以判断更多条件,在多条件判断时,运用switch语句更简练。有时候累加计算必须用switch.

1>例如顺序结构(2)作业第三题

计算天数

本题要求编写程序计算某年某月某日是该年中的第几天。

输入格式:

输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。

输出格式:

在一行输出日期是该年中的第几天。

输入样例1:

2009/03/02

输出样例1:

61

输入样例2:

2000/03/02

输出样例2:

62

2>流程图

c语言的第四次作业-LMLPHP

2.对其他你认为需要进行总结的内容进行总结。

(1)要合理的运用if...;if...else..;switch..这三个语句。

(2)在switch语句中一般都不要忘记break。

(3)case 后要有空格,最后要用冒号,下面再写语句。

(4)再if条件判断时,等于的字符型要用单引号引起来。

(5)再程序中运用函数时一定要先再头文件声明。

(6)分清int 和 double 类型。一定要看清楚,有时候会需要强制性转换。

(三)实验总结

1.比较大小

(1)题目

本题要求将输入的任意3个整数从小到大输出。

(2)流程图

c语言的第四次作业-LMLPHP

(3)源代码

c语言的第四次作业-LMLPHP

(4)实验分析

问题:if..和if..else的区别错误。

原因:if...的几个语句都是并列的,所以这个题不能使用if...else 。

解决办法:三个都是用if语句。

(5)本题PTA提交列表

c语言的第四次作业-LMLPHP

2.高速公路超速处罚

(1)题目

按照规定,在高速公路上行使的机动车,超出本车道限速的10%则处200元罚款;若超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。

(2)流程图

c语言的第四次作业-LMLPHP

(3)源代码

c语言的第四次作业-LMLPHP

(4)实验分析

问题1:百分号的输入方式。

原因:输入了一个百分号,所以会出现结果不显示百分号。

解决办法:应该同时输入两个百分号的。

问题2:在if条件判断的时候出现错误。

原因:判断百分比的条件时,直接在if后直接计算带判断。

解决办法:应在使用if条件语句时,先进行百分比的计算,然后在判断。不容易出现逻辑上计算错误。

(5)本题PTA提交列表

c语言的第四次作业-LMLPHP

3.计算油费

(1)题目

现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。

本题要求编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助),计算并输出应付款。

(2)流程图

c语言的第四次作业-LMLPHP

(3)源代码

c语言的第四次作业-LMLPHP

(4)实验分析

问题:在判断char类型的写法上出现问题。

原因:char类型判断时要加上单引号,不能直接写字符类型。

解决办法:在if条件判断时用英文单引号括起来字符类型。

(5)本题PTA提交列表

c语言的第四次作业-LMLPHP

4.12-24小时制

(1)题目

编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。

(2)流程图

c语言的第四次作业-LMLPHP

(3)源代码

c语言的第四次作业-LMLPHP

(4)实验分析

问题1:一天只有24小时,在输入的时候,下面要进行判断的。

原因:在判断时判断的不够全面。

解决办法:再加一个判断等于24小时的条件。

问题2:输入多于60的问题。

原因:60分钟为一小时,多于六十,要前进一小时的。

解决办法:再加一个判断条件,判断是否分钟的输入大于60。

(5)本题PTA提交列表

c语言的第四次作业-LMLPHP

(四)博客互评

(1)http://www.cnblogs.com/lrxlrz/p/7763680.html

(2)http://www.cnblogs.com/he111923/p/7772093.html

(3)http://www.cnblogs.com/LYFRRS/p/7765102.html

04-24 22:06