有switch语句编程成绩由百分制转为等级制

qq_40814199 2017-10-29 06:50:06
编程有很多问题,switch语句不太会用,请大家帮忙找找问题
...全文
3612 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_40814199 2017-10-30
  • 打赏
  • 举报
回复
引用 1 楼 lamb666666的回复:
这里的问题出在case条件,case 的条件必须是要个常量,而且在C语言中也没有90~100这样的表达方式。这里还是推荐使用if else的判断语句来做

if (grade >= 90 && grade <= 100) 
    printf("A");
else if (grade >=80 && grade < 90)
    printf("B");
另外提供一下switch的用法

//switch的用法
switch (X) {
    case 1:
        //do something
        break;
    case 2:
        //do something
        break;
    default:
        //do something
}
谢谢,我if语句会用,但就是case这里不知道如何去写,因为我要输入一个分数段,不太会写
qq_40814199 2017-10-30
  • 打赏
  • 举报
回复
引用 2 楼 自信男孩的回复:
#include <stdio.h>

int main(void)
{
    int grade, ch;

    scanf("%d", &grade);
    if (grade < 0 || grade > 100)
        return 0;

    ch = grade / 10;

    switch (ch) {
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            printf("E\n");
            break;

        case 6:
            printf("D\n");
            break;

        case 7:
            printf("C\n");
            break;

        case 8:
            printf("B\n");
            break;

        case 9:
        case 10:
            printf("A\n");
            break;

        default:
            printf("Enter error data!\n");
            break;
    }

    return 0;
}
可以参考一下
谢谢,可是我需要将分数段输入到case里要怎么做,不太清楚
自信男孩 2017-10-30
  • 打赏
  • 举报
回复
#include <stdio.h>

int main(void)
{
    int grade, ch;

    scanf("%d", &grade);
    if (grade < 0 || grade > 100)
        return 0;

    ch = grade / 10;

    switch (ch) {
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            printf("E\n");
            break;

        case 6:
            printf("D\n");
            break;

        case 7:
            printf("C\n");
            break;

        case 8:
            printf("B\n");
            break;

        case 9:
        case 10:
            printf("A\n");
            break;

        default:
            printf("Enter error data!\n");
            break;
    }

    return 0;
}
可以参考一下
lamb666666 2017-10-30
  • 打赏
  • 举报
回复
这里的问题出在case条件,case 的条件必须是要个常量,而且在C语言中也没有90~100这样的表达方式。这里还是推荐使用if else的判断语句来做

if (grade >= 90 && grade <= 100) 
    printf("A");
else if (grade >=80 && grade < 90)
    printf("B");
另外提供一下switch的用法

//switch的用法
switch (X) {
    case 1:
        //do something
        break;
    case 2:
        //do something
        break;
    default:
        //do something
}
qq_40814199 2017-10-30
  • 打赏
  • 举报
回复
引用 1 楼 lamb666666的回复:
这里的问题出在case条件,case 的条件必须是要个常量,而且在C语言中也没有90~100这样的表达方式。这里还是推荐使用if else的判断语句来做

if (grade >= 90 && grade <= 100) 
    printf("A");
else if (grade >=80 && grade < 90)
    printf("B");
另外提供一下switch的用法

//switch的用法
switch (X) {
    case 1:
        //do something
        break;
    case 2:
        //do something
        break;
    default:
        //do something
}
谢谢指教,我明白了,下次还请多多帮忙
qq_40814199 2017-10-30
  • 打赏
  • 举报
回复
引用 6 楼 Intel0011的回复:
#include <stdio.h>

int main(void)
{
   int grade;

   //scanf("%d\n", &grade); //不能加\n
   scanf("%d", &grade);

   switch (grade)
   {
      case 100:
      case  99:
      case  98:
      case  97:
      case  96:
      case  95:
      case  94:
      case  93:
      case  92:
      case  91:
      case  90:
         printf("A\n");
         break;
      case  89:
      case  88:
      case  87:
      case  86:
      case  85:
      case  84:
      case  83:
      case  82:
      case  81:
      case  80:
         printf("B\n");
         break;
      case  79:
      case  78:
      case  77:
      case  76:
      case  75:
      case  74:
      case  73:
      case  72:
      case  71:
      case  70:
         printf("C\n");
         break;
      case  69:
      case  68:
      case  67:
      case  66:
      case  65:
      case  64:
      case  63:
      case  62:
      case  61:
      case  60:
         printf("D\n");
         break;
      case  59:
      case  58:
      //其他自己写,一般有区间的不宜用switch case语句表达,而应该使用if else语句
      case   1:
      case   0:
         printf("E\n");
         break;
   }
   

   return 0;
}
我明白了谢谢,刚刚接触C语言,不懂的有很多,还请多多帮忙
Intel0011 2017-10-30
  • 打赏
  • 举报
回复
#include <stdio.h>

int main(void)
{
   int grade;

   //scanf("%d\n", &grade); //不能加\n
   scanf("%d", &grade);

   switch (grade)
   {
      case 100:
      case  99:
      case  98:
      case  97:
      case  96:
      case  95:
      case  94:
      case  93:
      case  92:
      case  91:
      case  90:
         printf("A\n");
         break;
      case  89:
      case  88:
      case  87:
      case  86:
      case  85:
      case  84:
      case  83:
      case  82:
      case  81:
      case  80:
         printf("B\n");
         break;
      case  79:
      case  78:
      case  77:
      case  76:
      case  75:
      case  74:
      case  73:
      case  72:
      case  71:
      case  70:
         printf("C\n");
         break;
      case  69:
      case  68:
      case  67:
      case  66:
      case  65:
      case  64:
      case  63:
      case  62:
      case  61:
      case  60:
         printf("D\n");
         break;
      case  59:
      case  58:
      //其他自己写,一般有区间的不宜用switch case语句表达,而应该使用if else语句
      case   1:
      case   0:
         printf("E\n");
         break;
   }
   

   return 0;
}
qq_40814199 2017-10-30
  • 打赏
  • 举报
回复
这是两个代码的对比谢谢帮忙

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧