大佬们这道题我刚开始做做到了66分,结果4和5(还是3和4)点位就是过不去,但是笔上算着是没问题的
判断三角形的种类方法使用的是余弦定理。然后出现了莫名其妙cos值算出是0的情况(输入7 8 7,正解输出A与I;输入4 2 5,正解输出O)
于是我暴力把这两个点带进去了
暴力代点后的代码如下
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
//是否是三角形
if(a+b<=c||a+c<=b||b+c<=a)
{
printf("Not triangle");
return 0;
}
//是否RT三角形
int a2,b2,c2;
a2=a*a;
b2=b*b;
c2=c*c;
if(a2+b2==c2||a2+c2==b2||b2+c2==a2)
{
printf("Right triangle");
printf("\n");
}
//余弦定理
int cosa,cosb,cosc;
cosa=(b2+c2-a2)/(b*c);
cosb=(a2+c2-b2)/(a*c);
cosc=(a2+b2-c2)/(a*b);
//是否锐角三角形
if(cosa>0&&cosb>=0&&cosc>0)//这里的cosb等号不应该加
{
printf("Acute triangle");
printf("\n");
}
//是否钝角三角形
if(cosa<0||cosb<0||cosc<=0)//这里的cosc等号不应该加
{
printf("Obtuse triangle");
printf("\n");
}
//是否等腰三角形
if(a==b||b==c||c==a)
{
printf("Isosceles triangle");
printf("\n");
}
//是否等边三角形
if(a==b&&b==c)
{
printf("Equilateral triangle");
printf("\n");
}
return 0;
}
求大佬们的解答!