注册 登录
编程论坛 C语言论坛

关于switch的语句,不知道问题出哪了,麻烦高手看看,谢谢。

kr0 发布于 2020-07-24 19:14, 1671 次点击
(1)//当我把scanf_s("%d",&score);改成scanf_s("%f",&score);保留int score=0;时,float无论我输入什么输出的都是Please enter the score between 0 to 100
这是输出结果

Please enter the score:99
Please enter the score between 0 to 100
(2)//当我把scanf_s("%f",&score);改成scanf_s("%d",&score),并且把int score=0改成float score=0;时,无论我怎么输入,它输出都是显示Your grade is: E
这是输出结果

Please enter the score:89
Your grade is:E

Please enter the score:123
Your grade is:E

//只有在float score=0; 和scanf_s("%f",&score)的情况下才能正确输出结果, 所以我想知道出现上面两种情况的原因是什么。

#include<stdio.h>
int main(void)
{
    int score=0;
    char ch=0;
    printf("Please enter the score:");
    scanf_s("%f",&score);
    while (score < 0 || score>100)
    {
        printf("Please enter the score between 0 to 100:");
        scanf_s("%f", &score);
    }
    switch ((int)score/10)
    {
    case 10:
    case 9:ch = 'A'; break;
    case 8:ch = 'B'; break;
    case 7:ch = 'C'; break;
    case 6:ch = 'D'; break;
    case 5:
    case 4:
    case 3:
    case 2:
    case 1:
    case 0:ch = 'E';
    default:break;
    }
    printf("Your grade is:%c\n", ch);
   
    return 0;
}
2 回复
#2
apull2020-07-25 18:46
程序没问题,不管用int还是float,vs2015编译运行正常,

有一个不是很明显的错误
printf("Please enter the score between 0 to 100:");
这一句终端冒号是全角字符:,改成半角字符:
#3
rjsp2020-07-25 21:29
跟switch没关系,
scanf中%f必须对应float,%d必须对应int。
1