首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

亲们,帮忙看看哪错了。解决思路

2013-01-25 
亲们,帮忙看看哪错了。题目:输入三个数据,如果这三个数据能够构成三角形,则计算并输出三个三角形的面积。提

亲们,帮忙看看哪错了。
题目:
输入三个数据,如果这三个数据能够构成三角形,则计算并输出三个三角形的面积。
提示:
     1)构成三角形的条件是:任意两边之和大于第三边。
     2)计算三角形面积的公式是s=sqrt(x(x-a)(x-b)(x-c)),x=(1/2)*(a+b+c)

#include<stdio.h>
#include<math.h>
void main()
{   int a,b,c,s,x;
    print("请输入三个正数:");
    scantf("%d%d%d",a,b,c);
    if(a+b>c)
      if(a+c>b)
        if(b+c>a)
           printf("能构成三角形");
    else
        printf("不能构成三角形");
}
[解决办法]


#include <stdio.h>

int main(void)
{
int a, b, c;

printf("请输入三个正数:");
scanf("%d%d%d", &a, &b, &c);
if(a + b > c && a + c > b && b + c > a)
printf("能构成三角形");
else
printf("不能构成三角形");

return 0;


[解决办法]
你做错的原因归根到底就是你的代码风格导致的。 if else 没有配对使用。
你可以把所有的else 语句和 {} 花括号添上,问题就很清楚了。
你的else 不是和最外层配对的,而是和最里层配对的。。。

    if(a+b>c)
      if(a+c>b)
        if(b+c>a)
           printf("能构成三角形");

     else /* 这个的条件其实是 b+c<a 的。*/
        printf("不能构成三角形");

[解决办法]
#include<stdio.h>
#include<math.h>
void main()
{   int a,b,c,s,x;
    print("请输入三个正数:");
    scantf("%d%d%d",a,b,c);
    if(a+b>c)
    {
      if(a+c>b)
        if(b+c>a)
           printf("能构成三角形");
     }
    else
     {
        printf("不能构成三角形");
      }
}

这样也就没问题啦,else 会选择在他最近的那个if作匹配的。

热点排行