我是在VS写的程序,所以用scanf_s替代了scanf。以下是代码:
#include <stdio.h>
#include <math.h>
#define EPS 1e-1
/**
* a : 边1
* b : 边2
* c : 边3
* return : 0/1 0为不可以组成三角形 1为可以组成三角形
*/
int Triangle(double a, double b, double c)
{
/*************** Begin ***************/
int result;
if (a + b <= c || b + c <= a || a + c <= b) {
result = 0;
}
else {
result = 1;
}
return result;
/*************** End ***************/
}
/**
* a : 边1
* b : 边2
* c : 边3
* return : 0/1 0为不可以组成等边三角形 1为可以组成等边三角形
*/
int Equilateral(double a, double b, double c)
{
/*************** Begin ***************/
int result;
if (a == c && c == b && a == b) {
result = 1;
}
else {
result = 0;
}
return result;
/*************** Begin ***************/
}
/**
* a : 边1
* b : 边2
* c : 边3
* return : 0/1 0为不可以组成等腰三角形 1为可以组成等腰三角形
*/
int Isosceles(double a, double b, double c)
{
/*************** Begin ***************/
int result;
if (a == b || b == c || a == c) {
result = 1;
}
else {
result = 0;
}
return result;
/*************** Begin ***************/
}
/**
* a : 边1
* b : 边2
* c : 边3
* return : 0/1 0为不可以组成直角三角形 1为可以组成直角三角形
*/
int Right(double a, double b, double c)
{
/*************** Begin ***************/
int result;
if (a * a + b * b == (int)(c * c + 0.5) || b * b + c * c == (int)(a * a + 0.5) || c * c + a * a == (int)(b * b + 0.5)) {
result = 1;
}
else {
result = 0;
}
return result;
/*************** Begin ***************/
}
int main(void)
{
double a, b, c;
printf("Input the three edge length a,b,c:");
scanf_s("%lf,%lf,%lf", &a, &b, &c);
/*************** Begin ***************/
if (Triangle(a, b, c) == 1)
{
if (Equilateral(a, b, c) == 1)
{
printf("等边");
}
else if (Isosceles(a, b, c) == 1)
{
printf("等腰");
}
if (Right(a, b, c) == 1)
{
printf("直角");
}
}
else
{
printf("不能构成");
}
printf("三角形");
/*************** Begin ***************/
}
输入需要输入三个数,例如 5,6,8。不能只输入一个,输入一个不能构成三角形。
&&是且,和的意思 ||是隔开两个数的意思