如图 c++编程 初学者,不要喷 判断直角三角形的,到底哪里错了啊/绝望

如题所述

用这个代码试试:

int a; int b; int c;
cout<<"输入三个正整数"<<endl;
cin>>a; cin>>b; cin>>c;
if(a>b&&a>c)
if(a*a==b*b+c*c)
   {
   cout<<"它是一个直角三角形"<<endl;
   cout<<"S="<<b*c/2<<endl;
   }
else   cout<<"它不是一个直角三角形"<<endl;
else if(b>a&&b>c)
if(b*b==a*a+c*c)
   {
   cout<<"它是一个直角三角形"<<endl;
   cout<<"S="<<a*c/2<<endl;
   }
else   cout<<"它不是一个直角三角形"<<endl;
else if(c>a&&c>b)
if(c*c==a*a+b*b)
   {
   cout<<"它是一个直角三角形"<<endl;
   cout<<"S="<<a*b/2<<endl;
   }
else   cout<<"它不是一个直角三角形"<<endl;

system("pause");
return 0;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-01

有两个问题:

1)一个变量的平方,不能用a^2来表示,而要用a*a来表示,b平方、c平方也是如此。

2)计算面积时的公式,不能用1/2*……来计算,这样会导致计算值不化后面乘以多少,最后输出全是0的结果。(因为在C语言中,两个整数的商,也是一个整数,商的小数部分全部被丢弃了,1/2的值是0)

代码部分,这样写就比较简洁:

int a,b,c,t;
cin>>a>>b>>c;
if(a<b){t=a;a=b;b=t;}
if(a<c){t=a;a=c;c=t;}
if(a*a==b*b+c*c)
  cout<<"Yes\nS="<<0.5*b*c;
    else cout<<"No\n";

本回答被提问者采纳