读书人

亲们帮忙看看哪错了。解决思路

发布时间: 2013-01-25 15:55:30 作者: rapoo

亲们,帮忙看看哪错了。
题目:
输入三个数据,如果这三个数据能够构成三角形,则计算并输出三个三角形的面积。
提示:
1)构成三角形的条件是:任意两边之和大于第三边。
2)计算三角形面积的公式是s=sqrt(x(x-a)(x-b)(x-c)),x=(1/2)*(a+b+c)

#include<stdio.h>
#include<math.h>
void main()
{ int a,b,c,s,x;
print("请输入三个正数:");
scantf("%d%d%d",a,b,c);
if(a+b>c)
if(a+c>b)
if(b+c>a)
printf("能构成三角形");
else
printf("不能构成三角形");
}
[解决办法]


#include <stdio.h>

int main(void)
{
int a, b, c;

printf("请输入三个正数:");
scanf("%d%d%d", &a, &b, &c);
if(a + b > c && a + c > b && b + c > a)
printf("能构成三角形");
else
printf("不能构成三角形");

return 0;
}

[解决办法]
你做错的原因归根到底就是你的代码风格导致的。 if else 没有配对使用。
你可以把所有的else 语句和 {} 花括号添上,问题就很清楚了。
你的else 不是和最外层配对的,而是和最里层配对的。。。

if(a+b>c)
if(a+c>b)
if(b+c>a)
printf("能构成三角形");

else /* 这个的条件其实是 b+c<a 的。*/
printf("不能构成三角形");

[解决办法]
#include<stdio.h>
#include<math.h>
void main()
{ int a,b,c,s,x;
print("请输入三个正数:");
scantf("%d%d%d",a,b,c);
if(a+b>c)
{
if(a+c>b)
if(b+c>a)
printf("能构成三角形");
}
else
{
printf("不能构成三角形");
}
}

这样也就没问题啦,else 会选择在他最近的那个if作匹配的。

读书人网 >C++

热点推荐