标题:关于switch的语句,不知道问题出哪了,麻烦高手看看,谢谢。
只看楼主
kr0
Rank: 1
等 级:新手上路
帖 子:8
专家分:5
注 册:2020-6-9
结帖率:75%
已结贴  问题点数:5 回复次数:2 
关于switch的语句,不知道问题出哪了,麻烦高手看看,谢谢。
(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;
}
搜索更多相关主题的帖子: score Please the enter case 
2020-07-24 19:14
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:0 
程序没问题,不管用int还是float,vs2015编译运行正常,

有一个不是很明显的错误
printf("Please enter the score between 0 to 100:");
这一句终端冒号是全角字符:,改成半角字符:
2020-07-25 18:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
跟switch没关系,
scanf中%f必须对应float,%d必须对应int。
2020-07-25 21:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-502617-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012758 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved