| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 398 人关注过本帖
标题:为啥输出结果是错的?求教。。
只看楼主 加入收藏
小小火
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-6-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
为啥输出结果是错的?求教。。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void  sanjiaoxing()
{
    int x1,y1,x2,y2,x3,y3;
    double  area,s;
    double g,h,i;
    printf("请输入3个点的坐标,(不用加括号,坐标之间用逗号隔开)");
    scanf("%d,%d%d,%d%d,%d",&x1,&y1,&x2,&y2,&x3,&y3);
+     g=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
     h=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
     i=sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
         if(g>=h+i||h>=g+i||i>=g+h)
     {
         printf("不是三角形");
     }
         else if(g=h=i)
         {
             printf("等边三角形");
         }
         else if(g*g==i*i+h*h||i*i==g*g+h*h||h*h==i*i+g*g)
         {
             printf("直角三角形");
         }
         else printf("一般三角形");
      s=(g+h+i)/2.0;
      area=sqrt(s*(s-g)*(s-h)*(s-i));
      printf("三角形的面积为:%f\n",area);
}
搜索更多相关主题的帖子: include double 三角形 
2013-06-25 21:34
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
收藏
得分:20 
else if(g*g==i*i+h*h||i*i==g*g+h*h||h*h==i*i+g*g) 这个判断是会不正确的,因为sqrt 取平方根之后会是一个近似值.所以会出错。

C++菜鸟
2013-06-25 22:09
小小火
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-6-25
收藏
得分:0 
哦,谢啦
2013-06-25 22:28
爱她永远
Rank: 2
等 级:论坛游民
帖 子:14
专家分:19
注 册:2013-6-9
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
    int x1,y1,x2,y2,x3,y3;
    double  area,s;
    double g,h,i;
    printf("请输入3个点的坐标,(不用加括号,坐标之间用逗号隔开)");
    scanf("%d,%d%d,%d%d,%d",&x1,&y1,&x2,&y2,&x3,&y3);
    g=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
    h=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
    i=sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
    printf("%1f\n%1f\n%1f\n",g,h,i);
    if(g>=h+i||h>=g+i||i>=g+h)
    {
        printf("不是三角形\n");
    }
    else if(g==h==i)
    {
         printf("等边三角形\n");
    }
    else if(g==sqrt(i*i+h*h)||i==sqrt(g*g+h*h)||h==sqrt(i*i+g*g))
    {
         printf("直角三角形\n");
    }
    else printf("一般三角形\n");
    s=(g+h+i)/2.0;
    area=sqrt(s*(s-g)*(s-h)*(s-i));
    printf("三角形的面积为:%f\n",area);
}
这样就可以,
2013-06-25 23:28
浪漫横行
Rank: 4
等 级:业余侠客
威 望:1
帖 子:127
专家分:291
注 册:2013-4-30
收藏
得分:0 
c语言一般都有主函数啊,不是吗?
2013-06-27 14:04
快速回复:为啥输出结果是错的?求教。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025579 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved