这个程序该怎么改才符合

图一是要求 图二三是我写的123456789-/:;.@“凑字数.请忽略

img

img

img

这样考虑 用switch语句时
key值写成每个分数除以10
得到结果是不是就 缩小范围了呢 是吧

#include <stdio.h>

void judgeLevel(float x)
{
    switch((int)x/10)
    {
        case 0 : 
        case 1 : 
        case 2 : 
        case 3 : 
        case 4 : 
        case 5 : printf("等级不及格\n");break; 
        case 6 : 
        case 7 : 
        case 8 : printf("等级中等\n");break; 
        case 9 : 
        case 10: printf("等级优秀\n");break; 
        default: printf("输入有误");break; 
    }
     

}
 
int main()
{
    float a,b,c; 
    printf("请输入某同学的三科分数:");
      scanf("%f%f%f",&a,&b,&c);
      printf("科目一%.2f分",a);
      judgeLevel(a);
      printf("科目二%.2f分",b);
      judgeLevel(b);
      printf("科目三%.2f分",c);
      judgeLevel(c);
      
   return 0;
}

运行截图

img

控制台输入3个成绩,然后用 if 语句判断就好了

你的printf里至少要有2个参数,一个分数,一个你通过判断获得的字符串,你这里为什么只有一个分数?grade呢,算了半天给直接丢弃了?
再说了,你有3个分数,就要对应3个grade,怎么全赋值给同一个变量了,那还能区分出来吗
要么你每计算出一个grade就直接输出一个grade,不要等到最后再输出,那不全覆盖了吗