switch_case范围取值问题


#include<stdio.h>
double main()
{
    int grade = 0,level=0;

    printf("请输入成绩");

    scanf("%d", grade);
    
    level = grade / 10;

    switch (level)
    {
    case 1 ... 5:printf("你不及格");
    }
    return 0;
}

case里面的范围运行不了,系统提示中间的三点应输入":"。

#include<stdio.h>
double main()
{
    int grade = 0,level=0;
 
    printf("请输入成绩");
 
    scanf("%d", grade);
    
    level = grade / 10;
 
    switch (level)
    {
    case 9: printf("你的成绩是A");
...
    }
    return 0;


供参考:https://blog.csdn.net/qq_44708202/article/details/129945074

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7790712
  • 你也可以参考下这篇文章:switch case语法
  • 除此之外, 这篇博客: switch中多个case值对应一个执行语句中的 引言 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    最近做电能表相关通信协议的工作,看了些开源代码,发现在一些有相同属性的变量处理上使用到了switch case语句,设计得比较精妙,当有多个属性相同的case值的时候可以执行具有相同属性的同一个语句,比如在通信协议中收到的电流、电压、有功功率帧数据都需要进行BCD码转float型的时候就可以用一个语句解决三种情况下的处理工作。

  • 以下回答来自chatgpt:

    优化的问题是如何输入多组数据并输出每组的和。

    可以使用以下的代码来解决这个问题。

    while True:  
        try:  
            x, y = map(int, input().split())  
            print(x + y)  
        except:  
            break
    

    这段代码中,while循环不断读取输入,直到输入结束为止。使用try-except结构来捕捉输入异常,当输入结束时,会抛出异常从而退出循环。

    在循环中,使用input()函数读取一行输入,并使用split()方法将输入按空格分割成多个部分。然后使用map()函数将每个部分转换为整数,并赋值给变量x和y。最后输出x和y的和。

    通过这种方式,可以实现同时输入多个数并输出每个数的和。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^