Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我不能完美地完成这个循环_C_Algorithm - Fatal编程技术网

C 我不能完美地完成这个循环

C 我不能完美地完成这个循环,c,algorithm,C,Algorithm,编写一个程序,输入五个分数,并通过取其平均百分比,仅使用嵌套if-else根据以下条件确定成绩: 90岁及以上:A级 如果80-70:B级 如果70-80:C级 如果50-70:D级 如果低于50:失败 我确实使用ifavg>=50尝试了从后退开始的循环,但它没有给我所需的输出,因为它总是停留在您失败的位置,我将它保持在else状态 if ( avg <= 90 ) { if ( avg <= 80 ) { if ( avg <= 70 )

编写一个程序,输入五个分数,并通过取其平均百分比,仅使用嵌套if-else根据以下条件确定成绩: 90岁及以上:A级 如果80-70:B级 如果70-80:C级 如果50-70:D级 如果低于50:失败

我确实使用ifavg>=50尝试了从后退开始的循环,但它没有给我所需的输出,因为它总是停留在您失败的位置,我将它保持在else状态

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,但结果是您失败了

如果出现梯形图,您应该尝试使用else

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");
    }
这应该起作用:

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");
                }
            }

        }
  }
}
在您的情况下,我认为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;
}

您能提供完整的代码吗?如果int avg=90,您的代码将按预期打印一个。您不必在else中包含ifavg>=50&&的内容,else已经涵盖了这一点。此外,你的70-80-90连锁店很混乱,容易出错。看看奥马尔的答案,看看他干净利落的做法。