求助(全AC是强行代点位出来的)
查看原帖
求助(全AC是强行代点位出来的)
443337
小肉圆子儿cry楼主2021/8/18 20:09

大佬们这道题我刚开始做做到了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;
}

求大佬们的解答!

2021/8/18 20:09
加载中...