引导语;c语言中有很多有趣的小程序,以下是小编分享给大家的,欢迎阅读!
#include
#include
#define EPSINON 1e-3
#define ABS***a*** *********a***>0***?***a***:***-a****** //?:不支持表达式嵌套
#define ZERO***x*** ******x***>-EPSINON && ***x***< p="">
#define MAX***a,b*** *********a***>***b******?***a***:***b******
#define MIN***a,b*** *********a***
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*********!='n' && ***cs=getchar*********!=EOF***;
printf***"输入错误,a b c必须大于零,是否新输入***y/n***:"***;
}
else if***judge_err_flag***
{
judge_err_flag = 0;
while******cs=getchar*********!='n' && ***cs=getchar*********!=EOF***;
printf***"组不成三角形,是否重新输入***y/n***:"***;
}
else
{
while******cs=getchar*********!='n' && ***cs=getchar*********!=EOF***;
printf***"是否再输入一组数据***y/n***:"***;
}
ch = getchar******;
}
while***ch=='y' || ch=='Y' || ch=='n'***;
puts***"Goodbye!"***;
return 0;
}