个人答案:
#include <iostream>
#include <iomanip>
#include <cmath>
#define s(a, b, c) (a+b+c)/2
#define area(a, b, c, s) s*(s-a)*(s-b)*(s-c)
using namespace std;
int main()
{
double a, b, c;
double ss, aa;
cout << "请输入边长 a, b, c: ";
cin >> a >> b >> c;
for (; (a + b) <= c || (a + c) <= b || (b + c) <= a; ) {
cout << "错误,请重试\n请输入边长 a, b, c: ";
cin >> a >> b >> c;
}
ss = s(a, b, c);
aa = sqrt(area(a, b, c, ss));
cout << setiosflags(ios::fixed) << setprecision(4);
cout << "S= " << aa << endl;
system("pause");
return 0;
}
结果:
参考答案:
#include <iostream>
#include <cmath>
using namespace std;
#define S(a,b,c) (a+b+c)/2
#define AREA(a,b,c) sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c))
int main()
{float a,b,c;
cout<<"input a,b,c:";
cin>>a>>b>>c;
if (a+b>c && a+c>b && b+c>a)
cout<<"area="<<AREA(a,b,c)<<endl;
else
cout<<"It is not a triangle!"<<endl;
return 0;
}