我无法完美完成此循环

时间:2019-07-26 03:10:01

标签: c algorithm

编写一个程序以输入五个分数,并采用其平均百分比来确定等级(仅在其他情况下使用嵌套),以达到以下条件: 90岁及以上:A级 如果80-70:B级 如果70-80:C级 如果50-70:D级 如果低于50:失败

我确实尝试过使用if(avg> = 50)从后面开始的循环,但它没有给我想要的输出,因为它总是会卡在您失败的地方,而我将其保持在其他状态。

if ( avg <= 90 )
{
    if ( avg <= 80 )
    {
        if ( avg <= 70 )
        {
            if ( avg <= 50 )
            {
                printf( "Fail" );
            }
            else
            {
                printf( "D" );
            }
        }
        else
        {
            printf( "C" );
        }
    }
    else  
    {
        printf( "B" );
    }
}
else  
{
    printf( "A" );
}

如果我输入的分数大于90,那么我希望输出结果为A,但是相反,这表示您已“失败”

3 个答案:

答案 0 :(得分:3)

您应该尝试使用梯形图其他

if(avg>=90)
{
 printf("A");
}
else if(avg>=80)
    {
     printf("B");
    }
else if(avg>=70)
    {
     printf("C");
    }
else if(avg>=50)
    {
     printf("D");
    }
else{ 
     printf("Fail");
    }

答案 1 :(得分:1)

这应该有效:

int main()
{
    int marks[5];
    int i,j;
    float avg;
    int total=0;

    for(i=0;i<5;i++)
    {
        scanf("%d",&marks[i]);
    }
    for(j=0;j<5;j++)
    {
        total = total+marks[j];
    }

    avg = total/5;

if(avg<50)
{
    printf("Fail");
}
  else
  {
      if(avg>=50 &&avg<70)
      {
          printf("C");
      }

        else if(avg>=70)
        {
            if(avg>=80)
            {
                if(avg<90)
                {
                    printf("B");
                }
                else if (avg>=90)
                {
                    printf("A");
                }
            }

        }
  }
}

答案 2 :(得分:0)

对于您而言,我认为switch语句可能是最好的解决方案。

# include <stdio.h>

const char * mark(int grade){
    switch (grade/10){
        case 10:
        case 9:
            return "A";
        case 8:
            return "B";
        case 7:
        case 6:
        case 5:
            return "C";
        default:
            return "Fail";
    }
}

int main(int argc, char* argv[]){
    int grade;
    for(int i = 1; i < argc; ++i){
        if (sscanf(argv[i], "%d", &grade) < 1){
            fprintf(stderr, "\"%s\" can not be converted to an int.\n", argv[i]);
            return -1;
        }else{
            printf("%s\n", mark(grade));
        }
    }
    return 0;
}