c语言第四次作业-选择结构1

(一)改错题

输出三角形的面积和周长,输入三角形的三条边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
",area,perimeter);

    else
        printf("These sides do not correspond to a valid triangle
");

    return 0;        
}

错误信息1:
错误原因:第13的括号没有扩回
改正方法:在第13行加上括号
错误信息2:
错误原因:if下面的信息没有加{}
改正方法:if下面加上{}
错误信息3:
错误原因:应该是和的关系
改正方法:或改成和的关系
(二)学习总结
1.在编程解决问题的过程中,我们会用到多个if语句,if...else if... 语句以及switch语句,查阅资料,总结一下这三种情况的区别何在,并分别举例加以说明。
*.if:表示如果,适用于条件清晰,不重叠。比如判断一个数是整数还是负数,条件内容所属区间独立,不干涉适合if语句,但是一条条判断,增加条件复杂性。
*.if else:表示如果,剩下的。适合多项判断,相对于if语句,如果符合条件,自动结束,不用一一判断条件是否符合,例如,判断一个字符属于什么类型。
*.switch:switch语句适合判断一个参数是否等于一个条件,比如判断一个月份有多少天,但是只能适合明确的量,而不能判断一个参数是否属于一份区间。
资料链接:
(1)http://www.cnblogs.com/wankun/p/4989831.html
(2)http://www.cnblogs.com/pureEve/p/6564012.html
(3)http://www.cnblogs.com/bluesky365/p/5631517.html

2.对其他你认为需要进行总结的内容进行总结。
*.在switch语句中default后面不需要加入case,就像if..else...中的else后不需要加判断语句一样
*.或和非的关系
(三)实验总结(我的学号为单号,需总结1,5,7,9题)
第一题:成绩转换
(1)题目:本题要求编写程序将一个百分制成绩转换为五分制成绩。
(2)流程图

(3)源代码

include <stdio.h>

int main(void)
{
int grade;
scanf("%d",&grade);
switch(grade/10)
{
case 10:
case 9:
printf("A ");
break;
case 8:
printf("B ");
break;
case 7:
printf("C ");
break;
case 6:
printf("D ");
break;
default:
printf("E ");
}
return 0;
}
(4)实验分析
本题较简单
(5)本题PTA提交列表

7-5 三角形判断(10 分)
(1)题目
给定平面上任意三个点的坐标(x
​1
​​ ,y
​1
​​ )、(x
​2
​​ ,y
​2
​​ )、(x
​3
​​ ,y
​3
​​ ),检验它们能否构成三角形。

输入格式:

输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x
​1
​​ 、y
​1
​​ 、x
​2
​​ 、y
​2
​​ 、x
​3
​​ 、y
​3
​​ 。

输出格式:

若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。
(2)流程图

(3)源代码

include<stdio.h>

include<math.h>

int main(void)
{
double x1,y1,x2,y2,x3,y3,a,b,c,perimeter,s,aera;
scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
a = sqrt(pow(x1 - x2,2)+pow(y1 - y2,2));
b = sqrt(pow(x1 - x3,2)+pow(y1 - y3,2));
c = sqrt(pow(x3 - x2,2)+pow(y3 - y2,2));
if(a + b > c && a + c > b && b + c > a)
{
perimeter = a + b + c;
s = perimeter / 2.0;
aera = sqrt(s * (s - a) * (s - b) * (s - c));
printf("L = %.2f, A = %.2f",perimeter,aera);
}
else
{
printf("Impossible");
}
return 0;
}
(4)实验总结
问题:三角形面积公式忘记
解决:问同学
(5)本题PTA提交列表

7-7 两个数的简单计算器(10 分)
(1)题目
本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。
(2)流程图

(3)源代码

include <stdio.h>

include <stdlib.h>

int main()
{
int a,b,result;
char op;
scanf("%d %c%d",&a,&op,&b);
switch(op)
{
case '+':result = a + b;break;
case '-':result = a - b;break;
case '*':result = a * b;break;
case '/':result = a / b;break;
case '%':result = a % b;break;
default :printf("ERROR");
exit(0);
}
printf("%d",result);
return 0;
}
(5)本题PTA提交列表

7-9 求一元二次方程的根(10 分)
(1)题目
本题目要求一元二次方程的根,结果保留2位小数。
(2)流程图

(3)源代码

include<stdio.h>

include<math.h>

int main(void)
{
double a,b,c,n,x1,x2;
scanf("%lf%lf%lf",&a,&b,&c);
n = b * b - 4 * a * c;
if(a == 0 && b == 0 && c == 0)
{
printf("Zero Equation");
}
if(a == 0 && b == 0 && c != 0)
{
printf("Not An Equation");
}
if(n > 0 && a != 0)
{
x1 = (-b + sqrt(n)) / (2 * a);
x2 = (-b - sqrt(n)) / (2 * a);
printf("%.2f %.2f",x1,x2);
}
else if(n == 0 && a !=0)
{
x1 = -b / (2 * a);
printf("%.2f",x1);
}
else if(n < 0 && a != 0 && b!= 0)
{
b = -b / ( a * 2);
n = fabs(n);
x1 = sqrt(n) / (a * 2);
printf("%.2f+%.2fi ",b,x1);
printf("%.2f-%.2fi ",b,x1);
}
else if(a == 0 && b != 0)
{
x1 = -c / b;
printf("%.2f",x1);
}
else if(n < 0 && b == 0 && a !=0)
{
n = fabs(n);
x1 = sqrt(n) / 2;
printf("0.00+%.2fi ",x1);
printf("0.00-%.2fi",x1);
}
return 0;
}

(5)本题PTA提交列表

(四)博客互评
对杜瑞柯同学的博客作业的建议:

对王映丹同学的博客作业的建议:

原文地址:https://www.cnblogs.com/zrx--/p/7788561.html