m0_66394588 2022-03-25 22:23 采纳率: 91.5%
浏览 34
已结题

想问关于switch语句的问题,问题在//后面。

#include<stdio.h>

int main()
{
    int grade;
    float score;
    printf("请输入成绩:");
    scanf("%f",&score);
    
    if(score>100||score<0)
    {
        printf("输入成绩错误"); 
    }
    else
    {
        grade=(int)score/10; 
    }    
    switch(grade)
    { 
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:printf("不及格");break;
        case 6:printf("及格");break;
        case 7:printf("中等"); break;
        case 8:printf("良好");break;
        case 9:
        case 10:printf("优秀");break;/*我了解到的switch语句的知识是执行对应case后面常量的部分,为什么case 9后面没输入命令但是会执行case10后面的语句呢*/
     } 
     return 0;
}


```

  • 写回答

5条回答 默认 最新

  • breeze亭瞳 2022-03-26 11:20
    关注

    img

    img

    img

    img


    switch语句的步骤是:
    1.计算表达式的值
    2.找到与表达式值相同的case常量表达式,执行
    case后边的语句序列,之后转去执行Switch的后续语句。
    (也就是说只要,它会先找与它值对应的case语句,先执行自己对应的语句,像case1后面是空,所以它自己的,就会是空的,之后再继续执行后续的其他case对应的语句,如果遇到beak这种会跳出语句的,才不会执行语句)

    总而言之,只要没有遇到break,就会继续执行其他后续语句;遇到break,就会跳出语句。

    可以结合前面图片再理解下。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月3日
  • 已采纳回答 3月26日
  • 创建了问题 3月25日

悬赏问题

  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数