分类: C/C++
2009-10-08 16:04:16
/*-----村长学习c之路-----*/
/*应用海伦定理求三角形的面积*/
#include
#include
#include
int judge(float a,float b,float c);
int main()
{
float a,b,c,s,area=0;//定义三角形三条边和面积、周长1/2
char ch;
int id1=0;
while(!id1)
{
printf("请输入三角形的第一条边边长\n"); //分别对三角形的三边进行验证
while((scanf("%f",&a))!=1)
{
while((ch=getchar())!='\n')
putchar(ch);
printf(" 不是数字.\n请输入一个类似 2.5,-1.78E8,或者 3的数字:");
}
printf("请输入三角形的第二条边边长\n");
while((scanf("%f",&b))!=1)
{
while((ch=getchar())!='\n')
putchar(ch);
printf(" 不是数字.\n请输入一个类似 2.5,-1.78E8,或者 3的数字:");
}
printf("请输入三角形的第三条边边长\n");
while((scanf("%f",&c))!=1)
{
while((ch=getchar())!='\n')
putchar(ch);
printf(" 不是数字.\n请输入一个类似 2.5,-1.78E8,或者 3的数字:");
}
int sign;
int id2=1;//标识符是否求的三角形面积
while(id2)
{
sign=judge(a,b,c);
if(sign)
{
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%7.2f,b=%7.2f,s=%7.2f\n",a,b,c,s);
printf("area=%7.2f\n",area);
id1=1;
id2=0;
}
else
{
printf("输入的三角形三边长非法,请重新输入\n");
id1=0;
id2=0;
}
}
}
system("PAUSE"); //保证窗口停滞
}
int judge(float a,float b,float c)//根据三角形两边之和大于第三边判定三角形是否合理
{
if(((a+b-c)>0)&&((a+c-b)>0)&&((b+c-a)>0))
return 1;
else
return 0;
}
/*本来是书上一个比较短的程序,昨天看到一个论坛的帖子是来求算加减乘除法的,受到启发就把原来的程序进行了充实,加入了对输入三边长的数据检验,对三边长合法性的检验,工具是dev c++,调试初步通过,可以检验出输入非法数据,检验出三边长合法性,先丢出来现现眼*/