| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1694 人关注过本帖
标题:关于Switch的
只看楼主 加入收藏
sleepyyuy
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2020-11-23
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:7 
关于Switch的
我想用switch case写一个多少分内就报多少字母,可是怎么写都是错的
程序代码:
int main()
{
    int x;
    scanf("%d",&x);
    
    switch(x){
        case 1:
            x>=90 && x==100;
            printf("A");
            break;
        case 2 :
            x>=80 && x<=89;
            printf("B");
            break;
        case 3:
            x>=70 && x<=79;
            printf("C");
            break;
        case 4:
            x>=60 && x<=69;
            printf("D");
            break;
        default:
            printf("E");
            break;

    }
}
搜索更多相关主题的帖子: Switch printf break case int 
2020-11-23 13:42
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
收藏
得分:7 
回复 楼主 sleepyyuy
程序代码:
#include <stdio.h>
int main()
{
    int x;
    scanf("%d", &x);
    x = 10 - x / 10;     // 你的 case 是由大至小的,所以用 10 来减。改变一下顺序
    switch (x)
    {
    case 0:
    case 1:
    {
        x >= 90 && x == 100;
        printf("A\n");
        break;
    }
    case 2:
    {
        x >= 80 && x <= 89;
        printf("B\n");
        break;
    }
    case 3:
    {
        x >= 70 && x <= 79;
        printf("C\n");
        break;
    }
    case 4:
    {
        x >= 60 && x <= 69;
        printf("D\n");
        break;
    }
    default:
        printf("E\n");
        break;

    }
}
2020-11-23 15:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:7 
我来写一个使用 switch,但没有 break 的代码

程序代码:
#include <stdio.h>

int main( void )
{
    int x;
    scanf( "%d", &x );

    char score = 'A';
    switch( x/10 )
    {
    default: ++score;
    case 6:  ++score;
    case 7:  ++score;
    case 8:  ++score;
    case 9:
    case 10: ;
    }
    putchar( score );
}
2020-11-24 16:59
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:7 
原因在于你的case判断的值是X 然而你的X值在你的自我认知里是x>=90 && x==100;的判断值,
实际上它的值是case 6: 这就是沟通的问题,具体的代码楼上已经给出了,可以考虑理解一下3楼的代码

综上所述你将switch错误的理解为了if elseif else语句

穷举是最暴力的美学
2020-11-24 17:13
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:0 
x>=70 && x<=79;这只是一个逻辑表达式,不造成任何结果,比如x为78,那这个表达式的值为1,但是这个1你也没有将其赋值,也没有进行判断,相当于是无效语句,一般这样的代码会被优化,或者报错

同理 if(a=1){b=2;}当a=3,b=3的时候经过这个if语句,b的值为2,因为a=1;这只是一条赋值语句,它在逻辑上是恒等于1的;当然有些编译器会对这种语句提出警告,这样的错误经常会犯。

所以当你的代码出现问题,除非是无法编译 请采取单步调试的方式查找出你脑海中和实际中的不同。除非是不能编译,不能编译的原因会报错,根据报错信息更改后自然是可以编译的

穷举是最暴力的美学
2020-11-24 17:21
sleepyyuy
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2020-11-23
收藏
得分:0 
回复 3楼 rjsp
太强了
2021-01-27 02:34
sleepyyuy
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2020-11-23
收藏
得分:0 
回复 2楼 风过无痕1989
感谢了
2021-01-27 02:35
sleepyyuy
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2020-11-23
收藏
得分:0 
回复 5楼 nosnoy
老师赶课,不看书对着PPT一直赶,纯小白完全跟不上。现在放假在家看书慢慢学才理解了这些
2021-01-27 02:37
快速回复:关于Switch的
数据加载中...
 
   



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

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