C 语言 三角形面积 求找出错误所在.
来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/08/17 22:33:25
C 语言 三角形面积 求找出错误所在.
#include
#include
void main()
{
int a,b,c;
double s=(a+b+c)/2;
printf ("请输入三条边的长度:\n");
scanf ("%d%d%d",&a,&b,&c);
if(a+b>=c) printf("%lf",s=abs(s*(s-a)*(s-b)*(s-c)));
else printf ("输入数据错误:两边之和必须大于第三边!\n");
if(a+c>=b) printf("%lf",s=abs(s*(s-a)*(s-b)*(s-c)));
else printf ("输入数据错误:两边之和必须大于第三边!\n");
if(b+c>=a) printf("%lf",s=abs(s*(s-a)*(s-b)*(s-c)));
else printf ("输入数据错误:两边之和必须大于第三边!\n");
}
请指教错误在哪?4楼说的多 scanf ("%d%d%d",&a,&b,&c); 改了,但是又有新问题出现了.
我要是出现一个答案,为何?这样
请输入三条边的长度:
2 3 1
0.000000
0.000000
0.000000
ress any key to continu
#include
#include
void main()
{
int a,b,c;
double s=(a+b+c)/2;
printf ("请输入三条边的长度:\n");
scanf ("%d%d%d",&a,&b,&c);
if(a+b>=c) printf("%lf",s=abs(s*(s-a)*(s-b)*(s-c)));
else printf ("输入数据错误:两边之和必须大于第三边!\n");
if(a+c>=b) printf("%lf",s=abs(s*(s-a)*(s-b)*(s-c)));
else printf ("输入数据错误:两边之和必须大于第三边!\n");
if(b+c>=a) printf("%lf",s=abs(s*(s-a)*(s-b)*(s-c)));
else printf ("输入数据错误:两边之和必须大于第三边!\n");
}
请指教错误在哪?4楼说的多 scanf ("%d%d%d",&a,&b,&c); 改了,但是又有新问题出现了.
我要是出现一个答案,为何?这样
请输入三条边的长度:
2 3 1
0.000000
0.000000
0.000000
ress any key to continu
![C 语言 三角形面积 求找出错误所在.](/uploads/image/z/15301979-35-9.jpg?t=C+%E8%AF%AD%E8%A8%80+%E4%B8%89%E8%A7%92%E5%BD%A2%E9%9D%A2%E7%A7%AF+%E6%B1%82%E6%89%BE%E5%87%BA%E9%94%99%E8%AF%AF%E6%89%80%E5%9C%A8.)
程序有两个问题
1.这是最重大的问题,a b c还没有通过 scanf 函数输入赋值就参加运算了;double s= (a+b+c)/2,这时候 abc 都是 0,所以 s 是零,后面的计算就都是零了
2.后面都 if 逻辑判断太冗余了,你写的是三个 if else 语句依次判断,正常情况,if 条件都会成立的,所以会输出 3 次,你直接把判断用 && 连接起来写到一个 if 后面就好了呗
1.这是最重大的问题,a b c还没有通过 scanf 函数输入赋值就参加运算了;double s= (a+b+c)/2,这时候 abc 都是 0,所以 s 是零,后面的计算就都是零了
2.后面都 if 逻辑判断太冗余了,你写的是三个 if else 语句依次判断,正常情况,if 条件都会成立的,所以会输出 3 次,你直接把判断用 && 连接起来写到一个 if 后面就好了呗