C程序帮助/If,Else If

C程序帮助/If,Else If,c,C,这是我用来提问的密码。唯一不返回D的情况是当输入60时,输入的任何其他值仍然给出答案D。我用这个大纲编写程序来验证结果,它确实不返回D以外的值,或者在输入60的情况下,返回E。这是为什么?我已经知道如何解决它,这将是通过放置范围,但我不知道为什么它现在不返回正确的值 for each student if student's average > 60 award student a D else if student's average > 70 award st

这是我用来提问的密码。唯一不返回D的情况是当输入60时,输入的任何其他值仍然给出答案D。我用这个大纲编写程序来验证结果,它确实不返回D以外的值,或者在输入60的情况下,返回E。这是为什么?我已经知道如何解决它,这将是通过放置范围,但我不知道为什么它现在不返回正确的值

for each student if student's average > 60 
    award student a D 
else if student's average > 70
    award student a C
else if student's average > 80 
    award student a B 
else if student's average > 90 
    award student an A 
else 
    award student an E 
C代码:

#include <stdio.h>    

int main()
{    
    int Average1, Average2, Average3, Average4;
    Average1 = 60;
    Average2 = 78;
    Average3 = 65;
    Average4 = 50;

    if (Average2>60)
    {
        printf("D");
    }
    else if (Average2>70)
    {
        printf("C");
    }       
    else if (Average2>80)
    {
        printf("B");
    }
    else if (Average2>90)
    {
        printf("A");
    }   
    else
        printf("E");

    return 0; 
}
#包括
int main()
{    
int平均值1,平均值2,平均值3,平均值4;
平均值1=60;
平均2=78;
平均3=65;
平均4=50;
如果(平均值2>60)
{
printf(“D”);
}
否则如果(平均值2>70)
{
printf(“C”);
}       
否则如果(平均值2>80)
{
printf(“B”);
}
否则如果(平均值2>90)
{
printf(“A”);
}   
其他的
printf(“E”);
返回0;
}

您需要更改条件的顺序。 例如,尽管数字可以是92,但仍然大于60,并且由于它首先检查第一个条件,并且条件(
Average2>60
)为真,因此它打印“D”。 然后它不会检查下面的其他条件,因为它们是
else if

您需要首先检查
Average2>90
,然后检查
Average2>80
,依此类推

if (Average2>90)
    {
        printf("A");
    }
else if (Average2>80)
    {
        printf("B");
    }
else if (Average2>70)
    {
        printf("C");
    }

else if (Average2>60)
    {
        printf("D");
    }   

else
    printf("E");

您需要更改条件的顺序。 例如,尽管数字可以是92,但仍然大于60,并且由于它首先检查第一个条件,并且条件(
Average2>60
)为真,因此它打印“D”。 然后它不会检查下面的其他条件,因为它们是
else if

您需要首先检查
Average2>90
,然后检查
Average2>80
,依此类推

if (Average2>90)
    {
        printf("A");
    }
else if (Average2>80)
    {
        printf("B");
    }
else if (Average2>70)
    {
        printf("C");
    }

else if (Average2>60)
    {
        printf("D");
    }   

else
    printf("E");

错误在原始伪代码中。问题是修复伪代码中的错误,还是预期伪代码是正确的?想想看;对于大于60的任何值,第一个条件为真,仅处理第一个真条件块。通过简单的代码演练,这应该是显而易见的。@ZhangQi:他根本不应该这样做,60的正确分数是E——这从最初的伪代码中是清楚的。但是,该代码仅为原始伪代码中的错误值生成正确的结果。问题是修复伪代码中的错误,还是预期伪代码是正确的?想想看;对于大于60的任何值,第一个条件为真,仅处理第一个真条件块。通过简单的代码演练,这应该是显而易见的。@ZhangQi:他根本不应该这样做,60的正确分数是E——这从最初的伪代码中是清楚的。但是,代码仅为值生成正确的结果。我想到了条件的排列顺序,但由于伪代码被认为是正确的,所以我寻找了一个不同的解决方案。欢迎你:我建议你对你读到的内容持怀疑态度,因为你不能保证它在总体上是正确的。另外,如果你发现一个答案有帮助,请投票并接受它,这样它可以帮助其他人在将来面临类似的问题。Yall,重新阅读这个问题让我看到了我的错误。我以为第一个条件是60岁。因为我一直在想,为什么有人超过60岁就会得D?一些我忽略的东西,我的坏。谢谢你的帮助,我很感激!谢谢我想到了条件的排列顺序,但由于伪代码被认为是正确的,所以我寻找了一个不同的解决方案。欢迎你:我建议你对你读到的内容持怀疑态度,因为你不能保证它在总体上是正确的。另外,如果你发现一个答案有帮助,请投票并接受它,这样它可以帮助其他人在将来面临类似的问题。Yall,重新阅读这个问题让我看到了我的错误。我以为第一个条件是60岁。因为我一直在想,为什么有人超过60岁就会得D?一些我忽略的东西,我的坏。谢谢你的帮助,我很感激!