| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1383 人关注过本帖
标题:关于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: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1506
专家分:9241
注 册: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
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:5 
跟switch没关系,
scanf中%f必须对应float,%d必须对应int。
2020-07-25 21:29
快速回复:关于switch的语句,不知道问题出哪了,麻烦高手看看,谢谢。
数据加载中...
 
   



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

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