首页 > 其他分享 >3.3 switch语句

3.3 switch语句

时间:2024-08-29 10:54:31浏览次数:9  
标签:语句 case break switch 3.3 printf 输入

1.switch语句

C语言中,除了if语句外,还有switch语句也可用来实现分支结构。

switch语句是一种特殊形式的if……else结构,用于判断条件有多个结果的情况,把多重的else if改成更易用、可读性更好的形式。switch-开关

switch  (expression){

            case value1:statement

            case value1:statement 

            default:statement

}

expression是一个表达式,表达式可以计算一个结果,结果为几,执行value几,若找不到case对应的值,则执行default语句。

注意:

  • switch后的expression必须是整型表达式。
  • case后的值,必须是整型常量表达式。

1.1 switch语句和if语句对比

exe1:输入任意一个整数值,计算除3之后的余数。

用if语句:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int a=0;
	printf("请输入值:", a);
		scanf("%d", &a);
	if (a % 3 == 0)
		printf("余数为0\n");
	else if (a % 3 == 1)
		printf("余数为1\n");
	else 
		printf("余数为2\n");
	return 0;
}

运行结果:

用switch语句:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int a=0;
	printf("请输入值:", a);
	scanf("%d", &a);
	switch (a % 3) 
	{
	case 0:
		printf("余数是0\n");
		break;
	case 1:
		printf("余数是1\n");
		break;
	case 2:
		printf("余数是2\n");
		break;
	}
	return 0;
}

运行结果:

switch后的expression必须是整型表达式(包括字符类型)。case后的值,必须是整型常量表达式。default语句可有可无

注意:

1.case和后边的数字之间必须有空格。

2.每一个case语句中的代码执行完成后,需要加break,才可跳出switch语句。(若无break则语句一直在执行。想要实现分支就需加break语句。)

1.1.1 习题1.使用switch语句,输入一个1~7的数字,打印对应的星期几。

例如:

输入: 1     输出:   星期一

输入: 2     输出:   星期二

输入: 3     输出:   星期三

输入: 4     输出:   星期四

输入: 5     输出:   星期五

输入: 6     输出:   星期六

输入: 7     输出:   星期日

完整代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("星期一\n");
		break;
	case 2:
		printf("星期二\n");
		break;
	case 3:
		printf("星期三\n");
		break;
	case 4:
		printf("星期四\n");
		break;
	case 5:
		printf("星期五\n");
		break;
	case 6:
		printf("星期六\n");
		break;
	case 7:
		printf("星期日\n");
		break;

	}
	return 0;
}

运行结果:

1.1.2 习题2.使用switch语句,输入一个1~7的数字,输入1~5为工作日,6~7为休息日。

例如:

输入: 1     输出:   工作日

输入: 2     输出:   工作日

输入: 3     输出:   工作日

输入: 4     输出:   工作日

输入: 5     输出:   工作日

输入: 6     输出:   休息日

输入: 7     输出:   休息日

完整代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
	}
	return 0;
}

运行结果:

注意:

1.利用了case后无break语句则继续往下运行来实现需求。

2.由示例可知,case语句后必须跟break是错误的,取决于逻辑需要。

1.2 switch语句中的default

若switch语句后面的表达式中值无法匹配代码中的case语句时,可以加入default。如打印工作日的练习,若day的输入不是1~7的值,需提示:输入错误。

完整代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
    default:
        printf("输入错误,请重新输入1-7的值\n");
        break;
	}
	return 0;
}

运行结果:

注意:

1.当所有case不匹配时,default就会起作用。

2.若删除case7中的break,输入6,则会输出:休息日和输入错误,请重新输入1-7的值。原因:无break,语句会继续向下运行。

1.3 switch语句中case和default的顺序问题

switch语句中case语句和default语句没有顺序要求,顺序满足需求就可,通常情况下把default语句放在最后处理。

标签:语句,case,break,switch,3.3,printf,输入
From: https://blog.csdn.net/weixin_72031058/article/details/140643403

相关文章

  • Python中的if语句:通往逻辑世界的钥匙
    引言if语句允许我们在满足特定条件时执行一段代码,这看似简单的功能背后,却隐藏着无限的可能性。无论是游戏开发、数据分析还是Web应用,几乎每一个非线性的程序设计都会用到if语句来进行决策处理。掌握好if语句的使用方法,对于任何层次的开发者而言都至关重要。基础语法介绍......
  • switch&回调函数
    #include<stdio.h>//函数原型声明floatcalc(floata,floaty,constcharop);floatadd(floata,floatb);floatminus(floata,floatb);floatmultiple(floata,floatb);floatdivide(floata,floatb);floatcalc_using_callback(floata,floatb,floa......
  • OpenGauss中循环语句
    在OpenGauss(以及很多其他的SQL数据库系统中),循环语句不是SQL的一部分,因为SQL主要被设计为处理数据的查询、更新、插入和删除等操作,而不包括传统编程语言中的控制流语句(如循环和条件语句)。然而,OpenGauss提供了PL/pgSQL(PostgreSQL的过程语言的一个变种,也被OpenGauss......
  • 数据库-单表结构-建表语句
    1.mysql-uroot-p[root@localhost~]#mysql-uroot-pEnterpassword:WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis6Serverversion:5.1.73SourcedistributionCopyright(c)2000,2013,Oracleand/oritsaffiliate......
  • 13.3 Java对象序列化梳理
    目录13.3Java对象序列化13.3.1 引入13.3.1 对象序列化与对象流1.Serializable接口2.ObjectInputStream类和ObjectOutputStream类13.3.2向ObjectOutputStream中写入对象13.3Java对象序列化13.3.1 引入应用场景:对象的寿命通常随着创建该对象程序的终止而终......
  • ETL学习之SQL Server数据库常用SQL语句
    在数据仓库和ETL(提取、转换、加载)过程中,SQLServer数据库是一个广泛使用的平台。ETL工程师需要熟练掌握SQL语句,以便有效地从源系统中提取数据,进行转换,并将其加载到目标数据库中。本文将介绍一些ETL工程师常用的SQLServer数据库SQL语句。1.数据提取(Extract)查询特定列SELEC......
  • T240827【定理3.3 Cauchy积分定理的 Goursat 证明】
    [T240819]Cauchy积分定理:设\(f(z)\)在\(z\)平面上的单连通区域\(D\)内解析,\(C\)为\(D\)内的任一条周线,则\[\int_Cf(z)~\mathrmdz=0\]证:【Goursat证明】Step1:若\(C\)为\(D\)内任一三角形\(\Delta\).假设\(|\int_{\Delta}f(z)~\mathrmdz|=M\),下证......
  • 【nacos】通过curl语句更新配置文件
    有时候nacos不一定有页面,需要使用到指令去拉取或更新配置获取tokencurl-XPOST'http://{ip}:8848/nacos/v1/auth/login'-d'username={username}&password={password}'获取某个配置,将token拼接最后curl-XGET'http://{ip}:8848/nacos/v1/cs/configs?dataId=application.y......
  • CI3捕获SQL语句异常
    之前遇到数据库语句错误,一直无法捕获异常publicfunctionhehe(){try{$data=array('title'=>123134,'content'=>'aaaaa','aaa'=>222......
  • golang interface{} Type assertions类型断言 x.(T) 和Type switches类型选择 switch
    在golang的开发中,我们经常会用到类型断言typeassertions和switchx.(type)类型选择,他们都可以对interface{}空接口类型的数据进行类型断言,他们的功能类似但是有区别,区别如下:共同点:都可以对interface{} /any类型的数据进行数据类型的断言区别:  类型断言x.(T)......