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:
错误原因: if else语句要用到{}来进行引用,if和else后的条件句都没有{}。
改正方法:将if和else后的条件句用{}括起来。
错误信息2:
错误原因:缺少),sqrt函数表达式不完整。
改正方法:在函数表达式最后加上)。
(二)学习总结
1.在编程解决问题的过程中,我们会用到多个if语句,if...else if... 语句以及switch语句,查阅资料,总结一下这三种情况的区别何在,并分别举例加以说明。禁止大段复制,要自己对资料进行归纳总结,并给出你参考的资料链接。
总结:在多个判断条件的情况下,使用if...else if语句相对于使用多个if语句而言,可以减少程序的判断次数,提高效率;在只需要判断一个条件的时候,使用if语句更方便有效,当多个条件并列时,使用此语句更方便;if...else if在任何一个环节满足条件的时候就将会终止判断,条件适中时适合使用 此语句。
资料链接:http://www.cnblogs.com/wankun/p/4989831.html
举例:1.
2.

3.

2.对其他你认为需要进行总结的内容进行总结。
(1)注意区分if,if....else,switch等语句的运用;
(2)切记&的应用;
(3)case后要加break。
(三)实验总结
本次实验总结,学号末位数是单数的同学完成选择结构(2)中的1、5、7、9题,学号末位数是双数的同学完成选择结构(2)中的2、4、6、8题。
格式如下:
1 比较大小
(1)本题要求将输入的任意3个整数从小到大输出。本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。
(2)流程图
插入raptor流程图


(3)源代码
插入程序源代码(注意MarkDown格式以及程序格式的规范化,如缩格)
include<stdio.h>
int main()
{
int a,b,c,t;
scanf("%d %d %d",&a,&b,&c);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
}
(4)实验分析
记录实验中遇到的问题及解决方法,格式如下:
问题1:
原因:输出位置与输入位置不对应。’
解决办法:将输出语句放在条件外。
问题2:答案错误。
原因:输出的结果跟题目的要求不符。
解决办法:根据题目要求进行调整。
(5)本题PTA提交列表


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

(3)源代码
插入程序源代码(注意MarkDown格式以及程序格式的规范化,如缩格)
include<stdio.h>
int main()
{
int v,x,y;
double z;
scanf("%d %d",&v,&x);
if(v10 < x11 && v > 0)
{
printf("OK\n");
}
else
{
if(v10 >= x11 && v10 < x15)
{
y = (v-x);
z = y100.0/x;
printf("Exceed %.0f%%. Ticket 200\n ",z);
}
else
{
if(v10 >= x15)
{
y = (v-x);
z = y100.0/x;
printf("Exceed %.f%%. License Revoked\n",z);
}
}
}
return 0;
}
(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)流程图
插入raptor流程图


(3)源代码
插入程序源代码(注意MarkDown格式以及程序格式的规范化,如缩格)
include <stdio.h>
include <stdlib.h>
int main()
{
int a,b;
char c;
double q;
scanf("%d %d %c",&a,&b,&c);
switch(b)
{
case 90:
if(c == 'm')
{
q = 6.95*a*0.95;
}
else
{
if(c == 'e')
{
q = 6.95*a*0.97;
}
}
break;
case 93:
if(c == 'm')
{
q = 7.44*a*0.95;
}
else
{
if(c == 'e')
{
q = 7.44*a*0.97;
}
}
break;
case 97:
if(c == 'm')
{
q = 7.93*a*0.95;
}
else
{
if(c == 'e')
{
q = 7.93*a*0.97;
}
}
break;
}
printf("%.2f\n",q);
return 0;
}
(4)实验分析
记录实验中遇到的问题及解决方法,格式如下:
问题1:
原因:case后没有加空格。
解决办法:在case后加空格。
问题2:
原因:缺少结束语句。
解决办法:在break前加;。
(5)本题PTA提交列表


4 12-24小时制
(1)题目
输入在一行中给出带有中间的:符号(半角的冒号)的24小时制的时间,如12:34表示12点34分。当小时或分钟数小于10时,均没有前导的零,如5:6表示5点零6分。
提示:在scanf的格式字符串中加入:,让scanf来处理这个冒号。
(2)流程图
插入raptor流程图

(3)源代码
插入程序源代码(注意MarkDown格式以及程序格式的规范化,如缩格)
include <stdio.h>
include <stdlib.h>
int main()
{
int a,b;
char n;
char y,z;
scanf("%d %c %d",&a,&n,&b);
if(a > 12 && a < 24)
{
a = a-12;
y = 'P';
z = 'M';
}
else
{
if(a < 12 && a >= 0)
{
a = a;
y = 'A';
z = 'M';
}
}
if(a == 12)
{
y = 'P';
z = 'M';
}
if(b < 10)
{
b = b%10;
}
if(a < 10)
{
a = a%10;
}
printf("%d%c%d %c%c",a,n,b,y,z);
return 0;
}
(4)实验分析
记录实验中遇到的问题及解决方法,格式如下:
问题:
原因:少输出了一个变量。
解决办法:在最后输出时加一个%c。
(5)本题PTA提交列表

(四)博客互评
每个同学至少评论三篇其他同学的博客作业,依次列出你所评论的博客地址。对于同学对你的博客作业提出的问题,应积极进行回答,存在的错误应及时改正。希望大家能够在互评的过程中取长补短,共同进步。
李水心:http://www.cnblogs.com/lsx123/p/7780863.html
王丽敏:http://www.cnblogs.com/wlm312/p/7783077.html
马阳光:http://www.cnblogs.com/myg123/p/7784651.html
浙公网安备 33010602011771号