c - 我无法完美地完成此循环

  • 本文关键字:循环 完美 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,但相反,你"失败了">

如果梯子,你应该尝试使用 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("%sn", mark(grade));
        }
    }
    return 0;
}

最新更新