henry1 发表于 2018-3-4 20:24:26

请大佬们帮我解决一下这个问题:编译之后不管输入什么,结果都是error。

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
        int grade;
        printf("Grade is:");
        scanf("%d",&grade);
        switch(grade)
{   case'A':printf("85~100\n");
    case'B':printf("70~84\n");
    case'C':printf("60~69\n");
    case'D':printf("<60\n");
    default:printf("error\n");
   
}
   
        return 0;
}

henry1 发表于 2018-3-4 20:36:43

发现问题在哪了...
只能输入ABCD对应的ASCII码...

henry1 发表于 2018-3-4 20:41:31

henry1 发表于 2018-3-4 20:36
发现问题在哪了...
只能输入ABCD对应的ASCII码...

不过有大佬知道case后面能否加一个范围吗?

BngThea 发表于 2018-3-4 21:29:18

把scanf中的%d改为%c
case语句每条后面加一条break语句
通过某些不加break来实现范围判断

757129128 发表于 2018-3-5 21:12:13

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
         char grade;
         printf("Grade is:");
         scanf("%c",&grade);
         switch(grade)
{   case'A':printf("85~100\n");break;
   case'B':printf("70~84\n");break;
   case'C':printf("60~69\n");break;
   case'D':printf("<60\n");break;
   default:printf("error\n");break;
   
}
   
         return 0;
}
//希望采纳{:5_105:}

549444387@qq.co 发表于 2018-3-6 15:12:43

是的 每一个case后面都要加上一个break指令

549444387@qq.co 发表于 2018-3-6 15:13:43

549444387@qq.co 发表于 2018-3-6 15:12
是的 每一个case后面都要加上一个break指令

如果不加break的话都会把指令default运行了
页: [1]
查看完整版本: 请大佬们帮我解决一下这个问题:编译之后不管输入什么,结果都是error。