Chinaunix首页 | 论坛 | 博客
  • 博客访问: 124481
  • 博文数量: 52
  • 博客积分: 2200
  • 博客等级: 大尉
  • 技术积分: 580
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-08 15:00
文章分类

全部博文(52)

文章存档

2011年(1)

2009年(51)

我的朋友

分类: 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++,调试初步通过,可以检验出输入非法数据,检验出三边长合法性,先丢出来现现眼*/

阅读(313) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~