亲们,帮忙看看哪错了。
题目:
输入三个数据,如果这三个数据能够构成三角形,则计算并输出三个三角形的面积。
提示:
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("不能构成三角形");
}
[最优解释]
你做错的原因归根到底就是你的代码风格导致的。 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>
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;
}
#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("不能构成三角形");
}
}
if(a+b>c)
if(a+c>b)
if(b+c>a)
if(a+b>c && a+c>b && b+c>a)
if( a+b>c && a+c>b && b+c>a )
{
//是三角形
}
else
{
//不是三角形
}
if ((a+b>c)&&(a+c>b)&&(b+c)>a))
{
printf("能构成三角形!");
}
else
printf("不能成为三角形!");
{
printf("能构成三角形\n");
x=(a+b+c)/2;
s=sqrt(x*(x-a)*(x-b)*(x-c)); //sqrt() 求根函数
printf("三角形的面积是: %lf \n",s);
}
else
printf("不能构成三角形");
}
[其他解释]
scanf("%d%d%d",&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("不能构成三角形");
}
[其他解释]
1.scanf 输入整型变量 需要加取地址符
2.else与距离它最近的if 匹配, 要加大括号的