此算法必须按月牙顺序打印四个数字。当我启动它时,我收到一个错误:“期望的表达式”。为什么会这样?

#include <stdio.h>

int main()
{
    int A,B,C,D,Riserva;

    scanf("%d",&A);
    scanf("%d",&B);
    scanf("%d",&C);
    scanf("%d",&D);

    if(A>B)
    else
    {
        Riserva=A;
        A=B;
        B=Riserva;
    }
    if(C>D)
    else
    {
        Riserva=C;
        C=D;
        D=Riserva;
    }
    /*Fine*/
    if(A>C)
        else
        {
            Riserva=A;
            A=C;
            C=Riserva;
        }
    if(B>D)
        else
        {
            Riserva=B;
            B=D;
            D=Riserva;
        }
    /*Fine*/
    if(A>D)
        else
        {
            Riserva=A;
            A=D;
            D=Riserva;
        }
    if(B>C)
        else
        {
            Riserva=B;
            B=C;
            C=Riserva;
        }

    printf("\n\n%d %d %d %d",D,C,B,A);

}

最佳答案

引用C11标准(第6.8.4.1章),if..else语句的语法为



如果我们比较您的代码,我们将看到



这是无效的语法。您在那儿错过了一条声明。

您必须在if (condition)部分之后放置一个语句,可以是;{}(空语句)。在这种情况下,使用if...else没有多大意义。您可以将if...else检查减少为单个if语句,例如

if(A<=B)   //condition reversed
{
   //previously else block code
}

09-25 18:50