/*
设计一个程序,读入三个整数,代表三角形三边长,
程序显示三角形是不
等腰三角形,等腰三角形或
等边三角形实现方式1:控制台程序tri_consloe,后跟三个参数,显示判断结果。
实现方式2:控制台程序tri_loop,启动后显示一个提示符tri:
若输入的是三个数,显示判断结果,再次显示提示符
若输入exit则退出程序。
*/
#include <
stdio.h>
#include <
string.h>
#include <
stdlib.h>
/*
切换实现的方式的
常量,可选的值为:1,2
当 STYLE =1 时,程序保存名为:tri_consloe.c
当 STYLE =2 时,程序保存名为:tri_loop.c
*/
#define STYLE 2
/* 枚举三角形类型,分别是:
不能组成三角形
普通三角形
等腰三角形
等边三角形
直角三角形
*/
enum TriangleType
{
NOT_TRIANGLE,
COMMON_TRIANGLE,
ISOCELES_TRIANGLE,
EQUILATERAL_TRIANGLE,
RIGHT_ANGLE_TRIANGLE
};
// 输出实现方式1的帮助文档
void PrintHelpText1()
{
printf("使用方法:程序名 三角形边长1 三角形边长2 三角形边长3\n");
}
// 输出实现方式2的帮助文档
void PrintHelpText2()
{
printf("使用方法:\n");
printf(" 1.判断三角形类型命令:三角形边长1 三角形边长2 三角形边长3\n");
printf(" 2.结束程序命令:exit\n");
}
/*
判断三角形类型
参数:
a,b,c 三角形的三边长
返回:
三角形类型
*/
int JudegTriangle(int a,int b,int c)
{
if((a+b)<=c || (a+c)<=b || (b+c)<=a)
{
printf("边长:%3d,%3d,%3d 不能组成三角形\n",a,b,c);
return NOT_TRIANGLE;
}
else if((a==b && b!=c) || (a==c && a!=b) || (b==c && b!=a))
{
printf("边长:%3d,%3d,%3d 组成等腰三角形\n",a,b,c);
return ISOCELES_TRIANGLE;
}
else if(a==b && b==c)
{
printf("边长:%3d,%3d,%3d 组成等边三角形\n",a,b,c);
return EQUILATERAL_TRIANGLE;
}
else if((a*a+b*b)==c*c || (b*b+c*c)==a*a || (a*a+c*b)==b*b)
{
printf("边长:%3d,%3d,%3d 组成直角三角形\n",a,b,c);
return RIGHT_ANGLE_TRIANGLE;
}
else
{
printf("边长:%3d,%3d,%3d 组成普通三角形\n",a,b,c);
return COMMON_TRIANGLE;
}
}
int main(int argc, char *argv[])
{
int a,b,c;
char edges[3][10];
if(STYLE==1)
{
if(argc!=4)
{
PrintHelpText1();
}
else
{
a=atoi(argv[1]);
b=atoi(argv[2]);
c=atoi(argv[3]);
JudegTriangle(a,b,c);
}
}
else if(STYLE==2)
{
printf("tri:");
while(scanf("%s",edges[0]) && strcmp(edges[0],"exit")!=0)
{
scanf("%s%s",edges[1],edges[2]);
a=atoi(edges[0]);
b=atoi(edges[1]);
c=atoi(edges[2]);
JudegTriangle(a,b,c);
printf("tri:");
}
}
return 0;
}