| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1687 人关注过本帖
标题:求助!一道题 为什么结果老是不对
只看楼主 加入收藏
C小菜
Rank: 1
等 级:新手上路
帖 子:109
专家分:3
注 册:2011-9-14
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:33 
求助!一道题 为什么结果老是不对
题目是这样的。
用C语言写输入三角形的三边边长
判断能否构成三角形
如果能构成三角形 判断是等腰直角三角形 还是直角三角形或者等边三角形
并计算出三角形的面积 公式为:(a+b+c)/2
为什么我每次输入3,4,5 结果却显示是等腰直角三角形 求解释。
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    printf("请输入边长\n");
    float a,b,c;
    scanf("%f,%f,%f",&a,&b,&c);
    if(a+b<=c||a+c<=b||b+c<=a)
       printf("不能构成三角形\n");
    else
    {
        if(a==b==c)
            printf("是等边三角形\n");
        else if((a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b)&&(a==b!=c||a==c!=b||b==c!=a))
            printf("是等腰直角三角形\n");
        else if((a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b))
            printf("是直角三角形\n");
    }
    printf("三角形的面积是%f\n",(a+b+c)/2);
    return 0;
}
求修改。!
搜索更多相关主题的帖子: 三角形 C语言 
2011-10-25 12:08
cncr031
Rank: 1
等 级:新手上路
帖 子:1
专家分:1
注 册:2011-10-25
收藏
得分:1 
貌似,== 优先级高于 !=   a==(b!=c)||a==(c!=b)||b==(c!=a),这样看看
2011-10-25 12:15
C小菜
Rank: 1
等 级:新手上路
帖 子:109
专家分:3
注 册:2011-9-14
收藏
得分:0 
不行。。报错啊。。! 能把修改后的代码发上来么。
2011-10-25 12:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:1 
你把3、4、5代入自己的程序中执行一次就知道为什么了?另外,谁教你写if(a==b==c)这种判断语句的?

授人以渔,不授人以鱼。
2011-10-25 12:19
C小菜
Rank: 1
等 级:新手上路
帖 子:109
专家分:3
注 册:2011-9-14
收藏
得分:0 
试过得啊、、、结果说是等腰直角三角形 。。那应该怎么改啊?
2011-10-25 12:24
C小菜
Rank: 1
等 级:新手上路
帖 子:109
专家分:3
注 册:2011-9-14
收藏
得分:0 
谁帮我改一改。。
2011-10-25 12:26
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你试过就知道为什么会落到那个结果上,还问。

授人以渔,不授人以鱼。
2011-10-25 12:34
C小菜
Rank: 1
等 级:新手上路
帖 子:109
专家分:3
注 册:2011-9-14
收藏
得分:0 
我试了啊。。。还是没有找到原因 结果输出是 等腰直角三角形
2011-10-25 12:44
uselessID
Rank: 2
等 级:论坛游民
帖 子:44
专家分:76
注 册:2011-8-22
收藏
得分:1 
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    printf("请输入边长\n");
    float a,b,c;
    scanf("%f,%f,%f",&a,&b,&c);
    if(a+b<=c||a+c<=b||b+c<=a)
        printf("不能构成三角形\n");
    else
    {
        if(a==b&&a==c)
            printf("是等边三角形\n");
        else if((a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b)&&(a==b&&a!=c||a==c&&a!=b||b==c&&b!=a))
            printf("是等腰直角三角形\n");
        else if((a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b))
            printf("是直角三角形\n");
    }
    printf("三角形的面积是%f\n",(a+b+c)/2);
    return 0;
}
2011-10-25 12:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你不是试出来第一个else if判断成立吗?它还有机会都下面那个else if去?出问题也是你写代码的判断流程不对,先在纸上把数学证明步骤写清楚了再转译成代码吧。

授人以渔,不授人以鱼。
2011-10-25 12:47
快速回复:求助!一道题 为什么结果老是不对
数据加载中...
 
   



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

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