C语言,怎么编程判断三角形的形状?

作者&投稿:糜戚 (若有异议请与网页底部的电邮联系)
c语言或者c++。判断三角形的形状~

#include

#include
using namespace std;
int zhijiao(int a,int b,int c);//判断是否为直角三角形
//需要完善,做出安全检查,以确定数据的准确性
void main()
{
int a, b, c;//保存三边长度
int index = 1;//记录第几个三角形
cout << "请输入三角形的数据:";
string s;//保存输入的字符串,约定为n个三角形,每个三角形为分号隔开,三角形内每边用逗号;"1,2,3;3,4,5"
cin >> s;
char* split = strtok((char*)s.c_str(), ";");//根据分号分割字符串
while (split != NULL)
{
//cout << split << endl;//检验分割的字符串
a = (int)split[0] - 48;//char型字符转数字,'0'转化为数字48
b = (int)split[2] - 48;
c = (int)split[4] - 48;
if (!(a + b < c || a + c < b || b + c < a))
{
if (a == b || a == c || b == c)
{
if (a == b && b == c)
cout << "a = " << a << ";b = " << b << ";c = " << c << "该三角形为等边三角形DB" <<endl;
else if (zhijiao(a, b, c))
cout << "a = " << a << ";b = " << b << ";c = " << c << "该三角形为等腰直角三角形DZY" <<endl;
else
cout << "a = " << a << ";b = " << b << ";c = " << c << "该三角形为等腰三角形DY" <<endl;
}
else
{
if (zhijiao(a, b, c))
cout << "为非等腰直角三角形" << endl;
else
cout << "为普通三角形" << endl;
}
}
else
{
cout << "不为三角形ERROR";
}
split = strtok(NULL, ";");


}
system("pause");

}
int zhijiao(int a, int b, int c)
{
if (a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a)
{
return 1;
}
else
return 0;
}

不知你是怎么输入的呢?注意输入的数用逗号分隔开来:

代码如下:

#include <stdio.h>

#include <stdlib.h>

#define EPSINON  1e-3
#define ABS(a)  (((a)>0)?(a):(-a)) //?:不支持表达式嵌套
#define ZERO(x)  ((x)>-EPSINON && (x)<EPSINON)
#define MAX(a,b) (((a)>(b))?(a):(b))
#define MIN(a,b) (((a)<(b))?(a):(b))
float a, b, c;
float max, mid, min;
char input_err_flag = 0;
char judge_err_flag = 0;
int equal(float a, float b)
{
float tmp;
tmp = a - b;
tmp = ZERO(ABS(tmp));
return tmp;
}
void input(void)
{
a = b = c = 0;
printf("输入三条边的值:");
scanf("%f %f %f",&a, &b, &c);
if(!(a>0) || !(b>0) || !(c>0))
{
input_err_flag = 1;
}
}
void sort(void)
{
max = MAX(MAX(a,b),c);
min = MIN(MIN(a,b),c);
if(MAX(a,b) < c)
mid = MAX(a,b);
else
mid = MAX(MIN(a,b),c);
}
void judge(void)
{
float max_square, mid_square, min_square, tmp;
if(max >= (mid+min))
{
judge_err_flag = 1;
}
else
{
max_square = max * max;
mid_square = mid * mid;
min_square = min * min;
tmp = mid_square + min_square;
if(equal(mid,min) || equal(max, mid))
{
if(equal(mid, min))
{
if(mid == max)
puts("等边三角形。");
else if(equal(max_square, tmp))
puts("等腰直角三角形。");
else if(max_square < tmp)
puts("等腰锐角三角形。");
else
puts("等腰钝角三角形。");
}
else
{
if(equal(min, mid))
puts("等边三角形。");
else
puts("等腰锐角三角形。");
}
}
else if(equal(max_square, tmp))
puts("直角三角形。");
else if(max_square < tmp)
puts("锐角三角形。");
else
puts("钝角三角形。");
}
}
int main(void)
{
char cs, ch;
do
{
input();
sort();
judge();
if(input_err_flag)
{
input_err_flag = 0;
while((cs=getchar())!='
' && (cs=getchar())!=EOF);
printf("输入错误,a b c必须大于零,是否新输入(y/n):");
}
else if(judge_err_flag)
{
judge_err_flag = 0;
while((cs=getchar())!='
' && (cs=getchar())!=EOF);
printf("组不成三角形,是否重新输入(y/n):");
}
else
{
while((cs=getchar())!='
' && (cs=getchar())!=EOF);
printf("是否再输入一组数据(y/n):");
}
ch = getchar();
}
while(ch=='y' || ch=='Y' || ch=='
');
puts("Goodbye!");
return 0;
}



供参考……
#include "stdio.h"//

void main(void){//
int a,b,c;
printf("Please input the triangle 3 side length...\n");
scanf("%d%d%d",&a,&b,&c);
if(a+b<=c || a+c<=b || b+c<=a)
printf("Not a triangle!\n");
else if(a==b && b==c)
printf("A equileteral triangle!\n");
else if(a==b || b==c || a==c)
printf("A isosceles triangle!\n");
else if(a*a+b*b==c*c || a*a==b*b+c*c || a*a+c*c==b*b)
printf("A right triangle!\n");
else printf("A triangle...\n");
}

3个数从小到大排序:a b c

[判定三角形依据:两边之和大于第三边]
如果a+b>c,是三角形,否则不是三角形

1。3个数相等:等边三角形
2。2个数相等:等腰三角形
3。3个数满足勾股定理(a*a+b*b=c*c):直角三角形

从小到大排序:a<=b<= c

如果a+b>c,是三角形,否则不是三角形[三角形两边之和大于第三边]

三边相等:等边三角形
两边相等:等腰三角形
a*a+b*b=c*c:直角三角形

c语言判断三角形是否成立并求三角形面积
答:c语言判断三角形是否成立并求三角形面积如下:include<;stdio.h>;include<;math.h>;int main(){ double a,b,c,area;printf(“Enter the sides of the triangle:”);scanf(“%lf%lf%lf”,&;a,&;b,&;c);if(a+b>;c&;&;a+c>;b&;&;b+c>;a){ area=0....

请问c语言判定是三角形的条件是什么?
答:是三角形成立的条件么?可以用两边之和大于第三边来判断。也就是a+b>c, a+c>b, b+c>a。就这三个条件 更多追问追答 追问 语言a,b,c都大于0吗? 追答 嗯嗯,那是肯定的嘛!边长哪有为负的 本回答被提问者采纳 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 木子思曰 2013-05-13 ·...

...键盘输入三个整数,判断此三数能否作为三角形的三个边,若能,进一步...
答:include<stdio.h> void main(){ int a,b,c,t;scanf("%d%d%d",&a,&b,&c);if(a>0&&b>0&&c>0){ if(a+b>c&&a-b<c){ printf("这个是三角形\n");if(a>b){t=a; a=b; b=t;} if(b>c){t=b; b=c; c=t;}/*把最长的一条边换到c边上,后面的就比较好比较*/ if...

C语言:三角形类型判断(循环)
答:按照你的要求编写的判断三角形类型的C语言程序如下 include<stdio.h>#include<math.h>float cal_area(float a,float b,float c){ float p,s; p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); return s;}int main(){ int i,n; float a,b,c,e=0.001; scanf("%d",&n);...

C语言 输入三角形三条边(实数),如何判断是直角三角形
答:include <stdio.h>#include <stdlib.h>#include <math.h>void main(){ float a,b,c,temp; printf("请输入三个数:\n"); scanf("%f%f%f",&a,&b,&c); printf("您输入的三个数是:\n"); printf("%f\t%f\t%f\n",a,b,c); //判断哪个是最长的边 if(a<b...

C语言 判断三角形的类型
答:main(){ float a,b,c,temp;do{ printf("Please input a,b,c:\n");scanf("%f%f%f",&a,&b,&c);/*对a,b,c从小到大排序*/ if(a>b){temp=a;a=b;b=temp;} if(a>c){temp=a;a=c;c=temp;} if(b>c){temp=b;b=c;c=temp;} if(a+b>c)break;else {printf("三角...

c语言 输入三个数值,判断其能否构成三角形,如果能,则求出其面积并输出...
答:include<stdio.h> include<math.h> int main(){ int a,b,c;scanf("%d%d%d",&a,&b,&c);if(a<=0 || b<=0 || c<=0){ printf("input error!\n");} if(a+b>c && a+c>b && b+c>a) //两边之和大于第三边,两边只差小于第三边。{ printf("yes\n");float p = ...

...的2条边和夹角输出三角形的面积,然后判断三角形的形状
答:include "stdio.h"#include "math.h"int main(int argc,char *argv[]){double a,b,c,C,pi=3.1415926,e=1E-6;printf("Please enter a, b(Length), C(Angle)...\n");scanf("%lf%lf%lf",&a,&b,&C);C=C/180*pi;//angle-->radianprintf("The area of this triangle is %f...

c语言,判断是否是直角三角形。求详细编程
答:示例代码:include<stdio.h> void main () { printf("Description"); float a, b, c; printf("请输入三角形三边"); scanf("%f,%f,%f",&a,&b,&c); if (a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a) printf("yes"); else printf("no"); } ...

c语言 判断三角形类型 简单代码 rt
答:include <stdio.h> include <math.h> int main(){ double a,b,c;loop:printf("input a b c:\n");scanf("%lf %lf %lf",&a,&b,&c);if (a<=0 || b<=0 || c <=0) goto loop;if (a+b<c || b+c<a || c+a c || fabs(b-c)>a || fabs(c-a)>b){ printf(...