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

关于Switch的

sleepyyuy 发布于 2020-11-23 13:42, 1870 次点击
我想用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;

    }
}
7 回复
#2
风过无痕19892020-11-23 15:10
回复 楼主 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;

    }
}
#3
rjsp2020-11-24 16:59
我来写一个使用 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 );
}
#4
nosnoy2020-11-24 17:13
原因在于你的case判断的值是X 然而你的X值在你的自我认知里是x>=90 && x==100;的判断值,
实际上它的值是case 6: 这就是沟通的问题,具体的代码楼上已经给出了,可以考虑理解一下3楼的代码

综上所述你将switch错误的理解为了if elseif else语句
#5
nosnoy2020-11-24 17:21
x>=70 && x<=79;这只是一个逻辑表达式,不造成任何结果,比如x为78,那这个表达式的值为1,但是这个1你也没有将其赋值,也没有进行判断,相当于是无效语句,一般这样的代码会被优化,或者报错

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

所以当你的代码出现问题,除非是无法编译 请采取单步调试的方式查找出你脑海中和实际中的不同。除非是不能编译,不能编译的原因会报错,根据报错信息更改后自然是可以编译的
#6
sleepyyuy2021-01-27 02:34
回复 3楼 rjsp
太强了
#7
sleepyyuy2021-01-27 02:35
回复 2楼 风过无痕1989
感谢了
#8
sleepyyuy2021-01-27 02:37
回复 5楼 nosnoy
老师赶课,不看书对着PPT一直赶,纯小白完全跟不上。现在放假在家看书慢慢学才理解了这些
1