设计一个程序,读入三个整数,代表三角形三边长,程序显示三角形是不等边三角形,等腰三角形或等边三角形。

实现方式1:控制台程序tri_consloe,后跟三个参数,显示判断结果。
实现方式2:控制台程序tri_loop,启动后显示一个提示符tri:
若输入的是三个数,显示判断结果,再次显示提示符
若输入exit则退出程序。
求高手帮忙啊,谢谢了!

/*
设计一个程序,读入三个整数,代表三角形三边长,
程序显示三角形是不等腰三角形,等腰三角形或等边三角形

实现方式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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-13
我稍微进行了更改,而且经过调试,可以用,你可以把代码复制进去编译看看,我用的是VC++ 6.0 。代码如下:
#include <iostream>
using namespace std;

int isSanjiaoxing(int a,int b,int c)
{
if(a>(b+c) || b>(a+c) || c > (a+b))return 0; //不是三角形,返回0
else return 1; //是三角形,返回1
}

void main()
{
int choose;
for(;;)
{
cout<<"╔══════主菜单══════╗"<<endl;
cout<<"║ ① 输入三条边 ②退出 ║"<<endl;
cout<<"╚═══════════════╝"<<endl;
cout<<"请选择功能:";
cin>>choose;
switch(choose){
case 1: //输入三条边并判断
int a,b,c;
cout<<"请依次输入三个条边,每次以回车隔开:";
cin>>a>>b>>c;
int i;
i = isSanjiaoxing(a,b,c);
if(i == 0)cout<<"该三条边不能构成三角形!"<<endl;
else cout<<"该三条边能构成三角形!"<<endl;
break;

case 2:
exit(0); //退出
default:
cout<<"输入不正确,请重新输入!"<<endl;
}
}
}

如果还需要修改可以说下,我看到了马上修改。