c语言:输入三个实数a,b,c,若能构成三角形,则输出三角形的面积!

来源:百度知道 编辑:UC知道 时间:2024/06/25 07:54:49
#include <stdio.h>
#include<math.h>
void main()
{double a,b,c,p,area;
printf("请输入三角形的三条边a,b,c:");
scanf("%f%f%f",&a,&b,&c);
if(c<b){p=c;c=b;b=p;}
if(c<a){p=a;a=c;c=p;}
if(b<a){p=b;b=a,b=p;}
if(a+b<=c)
{printf("错误,不能构成三角形\n");
return;}
}
p=(a+b+c)/2.0;
area=sqrt(p*(p-a)*(p-b)*(p-c));
printf("三角形的面积= .2f\n",area);
}

这是中国铁道版的c上机练习指导里面的程序,即答案,可以输入此程序就是得不到那个结果,得出如下的错误信息:--------------------Configuration: 01 - Win32 Debug--------------------
Compiling...
01.cpp
F:\c++练习\01.cpp(4) : warning C4101: 'area' : unreferenced local variable
F:\c++练习\01.cpp(14) : error C2501: 'p' : missing storage-class or type specifiers
F:\c++练习\01.cpp(14) : error C2065: 'a' : undeclared identifier
F:\c++练习\01.cpp(14) : error C2065: 'b' : undeclared ident

if(a+b<=c) 语句的地方,return后面多了一个 }

#include <stdio.h>
#include<math.h>
void main()
{double a,b,c,p,area;
printf("请输入三角形的三条边a,b,c:");
scanf("%f%f%f",&a,&b,&c);
if(c<b){p=c;c=b;b=p;}
if(c<a){p=a;a=c;c=p;}
if(b<a){p=b;b=a,b=p;}
if(a+b<=c)
{printf("错误,不能构成三角形\n");
return;}
p=(a+b+c)/2.0;
area=sqrt(p*(p-a)*(p-b)*(p-c));
printf("三角形的面积= .2f\n",area);
}

可能是你的程序放在路径F:\c++练习\……是非法路径的问题,有可能是不能包含中文名字或者++等字符。你把原程序复制到其他路径试下看,另外还有一个一楼指出的问题return后面多了一个 }

if(c<b){p=c;c=b;b=p;}
if(c<a){p=a;a=c;c=p;}
if(b<a){p=b;b=a,b=p;}
if(a+b<=c)
{printf("错误,不能构成三角形\n");
return;}
}
这段代码实在不敢恭维。。。
判断是不是三角形没这么复杂吧。
只要判断任意两边之和大于第三边,且之差小于第三边不就OK了?
if(a+b>c&&abs(a-b)<c)
printf("是三角形");

using namespace std;
int main()
{