#include <stdio.h>
int isTriangle(int a[3]); //函数申明
int isRightTriangle(int a[3]);
int sort(int a[3]);
int number(int min, int max);
int main(){
int a[3];
for (int i = 0; i < 3; i++){
printf("输入三条边的长度:");
scanf("%d",&a[i]);}
// isTriangle(a[i]);}
if (isTriangle(a) == 0)
{
printf("It not is a triangle");
}else if (isRightTriangle(a) == 0){
printf("It not is a right triangle");
}else{
printf("It is a right triangle");
sort(a);
int max = a[3];
int min = a[0];
// printf("%d",sort(a)); //返回值不显示
number (max,min);
printf("\n输出的最小余弦值为:%d/%d",min/number (max,min),max/number(max,min));
}
return 0;
}
//判断三角形
int isTriangle(int a[3]){
if (a[0] + a[1] > a[2] && a[0] + a[2] > a[1] && a[1] + a[2] > a[0]){
return 1;
}else{
return 0;
}
}
//判断是否为直角三角形
int isRightTriangle(int a[3]){
if (a[0]*a[0]+a[1]*a[1] == a[2]*a[2]
|| a[0]*a[0]+a[2]*a[2] == a[1]*a[1]
|| a[2]*a[2]+a[1]*a[1] == a[0]*a[0])
{
return 1;
}else{
return 0;
}
}
//数组进行从小到大排序
int sort(int a[3]){
int temp = 0;
for (int i = 0; i < 3; i++){
if (a[i] > a[i+1]){
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
}
//两个数的最大公约数 --辗转相除法
int number(int m, int n){
int t;
while (t = m % n){
m = n;
n = t;
}
return n;
}
原题:
任意输入三条边的边长(实数类型),判断能否组成三角形。如果不能组成三角形,程序就输出“It is not a triangle”;如果能组成三角形,就进而判断该三角形是否为直角三角形。如果不是直角三角形,程序就输出“It is not a right triangle”;否则,输出最小余弦值的最简分式。例如,三条边的边长分别是6、8、10,最小的余弦值是6/10,那么输出的结果应该是3/5。
有改进的地方大家可以评论: