对此C代码感到困惑

时间:2014-09-16 07:40:47

标签: c

首先,我想清楚地知道这是一个任务问题所以我不需要确切的答案或所有编码。问题是检查毕达哥拉斯三元组的任何三个整数输入。我已经制作了以下代码但是它说它有一个" else"没有先前的"如果"虽然我已经有了#34;如果"所以我很困惑,为什么编译器显示错误的错误?如果我没有得到它,那么我在这里错过了什么。它还显示了错误警告:隐含的功能声明' elseif' ,即使我已经包含了库stdio.h和stlib.h?为什么?谢谢!

#include<stdio.h>
#include <stdlib.h>

int main()
{
    int a, b, c, largest, large, small;
    printf("Enter a b and c: ");
    scanf("%d%d%d",&a,&b,&c);

    if (a^2+b^2==c^2)
    {
        printf("yes");
    }
    elseif((a^2+c^2)==b^2);
    {
        printf("yes");
    }

    elseif((c^2+b^2)==a^2);
    {
        printf("yes");

    }
    else
    {
        printf("no");

    }


}

注意:即使我已经告诉它是一个任务问题而且我不需要精确的解决方案/代码但只是澄清我的困惑,仍然有人喜欢对我的问题投票,Don&#39;我知道为什么:\。我觉得堆栈溢出是一个讨论与错误相关的代码和混淆的平台,所以如果我讨论了我的作业问题代码有什么不对?有些人只是通过详细的解释(我感谢下面的所有人)帮助我深入地形成/理解我的代码,然后有些人只是投票而不是更具建设性和帮助:/

6 个答案:

答案 0 :(得分:1)

因为你在这里有;

elseif((a^2+c^2)==b^2);
                      ↑

相当于:

else if((a^2+c^2)==b^2) { } 
{
        printf("yes");
} else .. //problem is here

另请注意,^不是其他答案所提及的权力。

答案 1 :(得分:0)

a ^ 2不会将a提升到2的幂。^运算符计算它或两个操作数的异或。请改用* a。

答案 2 :(得分:0)

在else和if

之间添加空格

否则if(条件)

答案 3 :(得分:0)

删除;,表示空语句。

#include<stdio.h>
#include <stdlib.h>

int main()
{
    int a, b, c, largest, large, small;
    printf("Enter a b and c: ");
    scanf("%d%d%d",&a,&b,&c);

    if (a*a+b*b==c*c)
    {
        printf("yes");
    }
    else if((a*a+c*c)==b*b)
    {
        printf("yes");
    }

    else if((c*c+b*b)==a*a)
    {
        printf("yes");

    }
    else
    {
        printf("no");

    }
}

如果您希望提高代码效率,可以计算a*ab*bc*c并将其存储在某些变量中并重新使用而不是重新使用 - 每次计算。

答案 4 :(得分:0)

删除;如果,不确定为什么他们是..他们表明空陈述

#include<stdio.h>
#include <stdlib.h>

int main()
{
    int a, b, c, largest, large, small;
    printf("Enter a b and c: ");
    scanf("%d%d%d",&a,&b,&c);

    if (a*a+b*b==c*c)
    {
        printf("yes");
    }
    else if((a*a+c*c)==b*b)
    {
        printf("yes");
    }

    else if((c*c+b*b)==a*a)
    {
        printf("yes");

    }
    else
    {
        printf("no");

    }

}

如果你想提高你的代码效率,你可以计算一个* a,b * b,c * c并将它们存储在一些变量中并重复使用它而不是每次都重新计算。 /强>

答案 5 :(得分:0)

  1. 之间插入空格
      

    ELSEIF

    它应该像

      

    否则如果

    1. 应该没有;在其他条件之后
    2.   

      否则if()

      1. a ^ 2不会将a提升到2的幂。^运算符计算它或两个操作数的异或。请改用* a。或者您可以使用math.h中的 pow()函数。
      2. 你的代码应该是这样的

        #include<stdio.h>
        #include<stdlib.h>
        
        int main()
        {
            int a, b, c, largest, large, small;
            printf("Enter a b and c: ");
            scanf("%d%d%d",&a,&b,&c);
        
            if (a*a+b*b==c*c)
                printf("yes");
            else if((a*a+c*c)==b*b)
                printf("yes");
            else if((c*c+b*b)==a*a)
                printf("yes");
            else
                printf("no");
        }