c语言分支结构之switch语句

我们都知道,在抽卡的时候,可以自主选择只抽一次或者十连抽,但在上面的if语句中,我们是直接判断能不能抽十连,资源够的话就直接抽了,但可能我不想直接抽十连,那该怎么办,怎么做到像游戏里面那样可以自主选择呢?说实话,我也不知道,但我们不妨简化一下问题,假设抽十连是数字1,单发时数字2,然后可以我们可以通过选择数字1或2来决定我们的抽卡方式,这就涉及到下一个分支结构,switch语句

switch...case...

switch语句的基本结构是:

switch (整数表达式)
{
    case 整数表达式 : 语句;
}

switch在英文中是打开的意思,所以括号内的表达式就是switch打开的东西,switch语句会根据括号内的值来选择对应的case语句,选择的根据就是case语句后面的整数表达式的值,要注意的是,表达式的值必须是整数,而且case与后面的表达式要有空格

借助switch语句我们就可以实现一个简洁的选择抽卡的功能,我们假设用户是变量a,再设置一个变量b来记录我们抽卡的次数:

int b = 0;
switch (a)
{
    case 1: printf("十连\n"); b += 10;
    case 2: printf("单抽\n"); b++;
}
printf("%d\n", b);

假设我们选择了十连,程序开始运行

神奇的事情出现了,结果是我们抽了11发,难道现在抽十连还送一发?

这是因为实际上switch语句也是按顺序运行下来的,从我们匹配的那个case语句一直到最后一个,要想实现只执行一个case语句,要在case语句后面加上一个break,让它直接结束switch语句:

int b = 0;
switch (a)
{
    case 1: printf("十连\n"); 
            b += 10;
            break;
    case 2: printf("单抽\n"); 
            b++;
            break;
}
printf("%d\n", b);

这样子就可以正常实现选择功能了。

但是假如我们用户输入错误了,比如输入了个3,那会发生什么

我们看到程序正常运行,也没有报错,但是0表示我们没有抽任何一次卡,说明switch语句没有被执行,由此我们可以推断出,在变量于case后任何一个值都不匹配时,switch语句会被跳过,虽然不会报错,但假设我们的程序比较复杂时,可能会导致出现未知的错误,所以这时候就需要default,当我们没有匹配项目是,会自动匹配到default后面的语句

int b = 0;
switch (a)
{
    case 1: printf("十连\n"); 
            b += 10;
            break;
    case 2: printf("单抽\n"); 
            b++;
            break;
    default:
            printf("未进行抽奖");
            break;
}
printf("%d\n", b);

这时候再输入3时程序就会输出未进行抽奖。

要注意的是default语句的位置是不固定的,可以在case语句的前面或者后面,对程序没有影响

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值