c语言switch用法

目录

1.概念介绍

2.整除

3.switch的使用 

3.1判断整形变量

3.2判断字符变量

3.3 switch中break的作用

3.4综合运用 


1.概念介绍

在C语言中,switch语句是一种选择性控制结构,它允许测试一个变量等于多个值时的情况。每个可能的值称为一个case,且被测试的变量会对每个case进行检查。

switch语句的基本格式为:switch(表达式){case 常量1:语句1; break; case 常量2:语句2; break; default:语句n;}。其中"表达式"通常是整型或字符型的变量,"case"后面的常量表达式必须与"表达式"的值完全匹配,才能执行该case后的语句。如果匹配成功,程序会执行相应的语句序列,直到遇到break语句才会跳出switch结构。

若"表达式"的值与所有case后的常量表达式都不匹配,则程序会执行default后的语句。需要注意的是,default语句是可选的,如果switch语句中没有default部分,且所有case均不匹配时,switch结构则会跳过,继续执行switch语句之后的代码。

此外,switch语句还支持嵌套使用,即在一个switch结构的内部,可以包含另一个完整的switch结构。这样的嵌套可以使用更复杂的条件判断和分支处理。

看不懂?没关系,从下面开始一点一点来

2.整除

想要学会使用switch,得先了解一些c语言整除的概念,俩int整形变量相除,得到的结果也是整形,只保留整数部分,小数部分直接去掉

比如

#include<stdio.h>c
int main()
{
	int a=5;
	int b=3;
	printf("5/3=%d\n",a/b);
	return 0;
}

 

3.switch的使用 

在C语言中,switch语句用于根据一个变量的值执行不同的代码块。以下是使用switch的基本语法:

switch (变量) {
    case 值1:
        // 当变量的值等于值1时执行的代码
        break;
    case 值2:
        // 当变量的值等于值2时执行的代码
        break;
    // ...其他case分支...
    default:
        // 当变量的值不匹配任何case时执行的代码
}
 

3.1判断整形变量

#include <stdio.h>

int main() {
    int num;
    printf("请输入一个整数(1-3):");
    scanf("%d", &num);

    switch (num) {
        case 1:
            printf("你输入的是1。");
            break;
        case 2:
            printf("你输入的是2。");
            break;
        case 3:
            printf("你输入的是3。");
            break;
        default:
            printf("你输入的不在1-3之间。");
    }

    return 0;
}

在这个示例中,我们首先从用户那里获取一个整数,然后使用switch语句根据该整数的值执行不同的代码块。如果输入的整数是1、2或3,程序将输出相应的消息;否则,它将输出“你输入的不在1-3之间”。

3.2判断字符变量

当然,不仅可以判断整形变量,还能判断字符变量

#include <stdio.h>
int main() {
    char c;
    printf("请输入一个字符(x/y/z):");
    scanf("%c", &c);
    switch (c) {
        case 'x':
            printf("你输入的是x。");
            break;
        case 'y':
            printf("你输入的是y。");
            break;
        case 'z':
            printf("你输入的是z。");
            break;
        default:
            printf("你输入的不在x/y/z之间。");
    }
    return 0;
}

3.3 switch中break的作用

在C语言中,break语句用于跳出当前switch语句的执行流程。它的作用是防止程序继续执行下一个case分支中的代码,直到遇到break或者switch语句结束。

如果没有break语句,当一个case分支的条件满足时,程序会继续执行下一个case分支中的代码,直到遇到break或者整个switch语句结束。这种情况被称为“贯穿”(fallthrough)。

例如,考虑以下代码:

#include <stdio.h>
int main() {
    int num;
    printf("请输入一个整数(1-3):");
    scanf("%d", &num);
    switch (num) {
        case 1:
            printf("你输入的是1。");
        case 2:
            printf("你输入的是2。");
        case 3:
            printf("你输入的是3。");
            break;
        default:
            printf("你输入的不在1-3之间。");
    }
    return 0;
}

在这个示例中,如果用户输入2,程序将输出:

你输入的是1。
你输入的是2。
你输入的是3。
 

这是因为没有使用break语句,所以程序会贯穿到下一个case分支并继续执行。但是,如果我们添加了break语句,程序将只输出:

你输入的是2。

3.4综合运用 

题目

根据用户输入的成绩(0-100分),判断其成绩等级并输出。如果成绩在90分以上(包括90分),则输出"成绩等级:A";如果成绩在80分以上(不包括90分),则输出"成绩等级:B";以此类推,直到成绩在60分以下,则输出"成绩等级:E"。如果用户输入的成绩不在0-100分之间,程序会输出"数据输入错误!"。

#include <stdio.h>
int main() {
    int score;
    printf("请输入成绩:");
    scanf("%d",&score);
    switch (score / 10) {
        case 10:
        case 9:
            printf("成绩等级:A\n");
            break;
        case 8:
            printf("成绩等级:B\n");
            break;
        case 7:
            printf("成绩等级:C\n");
            break;
        case 6:
            printf("成绩等级:D\n");
            break;
        case 5:
        case 4:
        case 3:
        case 2:
        case 1:
        case 0:
        	printf("成绩等级:E\n");
            break;
        default:
            printf("数据输入错误!\n");
            break;
    }
    return 0;
}

 代码解释:

scanf输入了一个0-100的变量,然后将其整除10丢给了switch

score的范围是0-100, 那switch/10的范围就是 0-10

  • 当score为90-100时,score/10为9或者10

因为90-100都是A,所以先case 10:后没加break跳出,紧接着case 9了

  • 当score为[80,90)时,score/10=8
  • 当score为[70,80)时,score/10=7
  • 当score为[60,70)时,score/10=6
  • 当score为[0,60)时,score/10的范围为0,1,2,3,4,5

同理0-60都是不及格,都是E,所以case5: 、case4、...都没加break,直到case 0

当score不在范围内:执行default语句

  • 15
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值