【C语言从不挂科到高绩点】05-流程控制语句-switch语句

news2024/9/28 6:05:05

Hello!彦祖们,俺又回来了!!!,继续给大家分享 《C语言从不挂科到高绩点》课程

本套课程将会从0基础讲解C语言核心技术,适合人群:

  1. 大学中开设了C语言课程的同学
  2. 想要专升本或者考研的同学
  3. 想要考计算机等级证书的同学
  4. 想要从事C/C++/嵌入式开发的同学

----------------------------------------------------------------------

分享不易,耗时耗力,麻烦给个不要钱的关注和赞吧

承接毕设指导,技术答疑,学习路上想要找私人教练的同学可以私信我

更多学习资料,公众号:墨轩学习网,B站:墨轩大楼

5.2 选择结构-switch

5.2.1 switch 格式

switch(值){
    case 值1:代码块1;
    case 值2:代码块2;
    case 值3:代码块3;
        ......
   default:默认代码块;
}

表示:根据 switch 括号中的值去匹配 case 中的值,一旦匹配上了就会从当前的 case 对应的代码块开始一直往下执行,直到遇到了 break 或者 switch 语句结束为止。

如果所有的 case 值都匹配不上,那么此时就会执行 default 中的默认代码块。

/**
根据 switch 括号中的值去匹配 case 中的值,
一旦匹配上了就会从当前的 case 对应的代码块开始一直往下执行,
直到遇到了 break 或者 switch 语句结束为止。
如果所有的 case 值都匹配不上,
那么此时就会执行 default 中的默认代码块。

**/

#include <stdio.h>

int main(){

	int n = 10;

	switch(n){
		case 1:
			printf("1\n");
		case 2:
			printf("2\n");
		case 3:
			printf("3\n");

		case 4:
			printf("4\n");
			// break提前结束switch语句,需要在什么位置上结束,就在哪里加break
			break; 
		default: // 当所有的case都匹配不上时,会执行default中的代码
		
			printf("5\n");

	}

	return 0;
}

需要注意的问题:

  1. 一旦匹配到了 case 值,会从当前的 case 对应代码块开始,一直往下执行,直到遇到了 break;
  2. break 表示提前结束 switch 语句。需要在什么位置上结束,就在哪里加break
  3. 当所有的case都匹配不上时,会执行default中的代码

【练习案例】:王者荣耀等级判断器

输入王者荣耀积分:

积分小于 50 是青铜

积分 50-60 是白银

积分 60-70 是黄金

积分 70-80 是铂金

积分 80-90 是钻石

积分 90-100 是星耀

积分 100 以上王者

【参考代码】

/**
输入王者荣耀积分:
积分小于 50 是青铜
积分 50-60 是白银
积分 60-70 是黄金
积分 70-80 是铂金
积分 80-90 是钻石
积分 90-100 是星耀
积分 100 以上王者
**/

#include <stdio.h>

int main(){
	printf("请输入王者积分:");
	int score = 0;
	scanf("%d",&score);

	// 用分数对10取整
	// score:0-9   -> 0
	// score:10-19  -> 1
	// .......
	// score: 51-59 -> 5
	//  60-69  ->6
	int n = score/10; // 根据分数取整,减少case的值

	switch(n){  // score=23  ,score/10=2
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
			printf("青铜\n");
			break;
		case 5:
			printf("白银\n");
			break;
		case 6:
			printf("黄金\n");
			break;
		case 7:
			printf("铂金\n");
			break;
		case 8:
			printf("钻石\n");
			break;
		case 9:
			printf("星耀\n");
			break;
		default:
			printf("王者\n");
			break;
	}


	return 0;
}

【练习案例】将某年某月有多少天的月份判断修改成 switch 格式

/**
	使用switch实现判断某年某月一共有多少天
**/

#include <stdio.h>


int main(){

	// 1.输入年份和月份
	int year=0,month=0;
	printf("请输入年份和月份:\n");
	scanf("%d %d",&year,&month);

	switch(month){
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			printf("%d年%d月一共有31天\n");
			break;
		case 4:
		case 6:
		case 9:
		case 11:
			printf("%d年%d月一共有30天\n");
			break;
		case 2:
			// case语句中是可以嵌套其他语句,比如if语句
			if(year%4==0&&year%100!=0||year%400==0){
				printf("%d年%d月一共有29天\n");
			}else{
				printf("%d年%d月一共有29天\n");
			}
			break;
	}

	return 0;
}

5.2.2 switch 的范围表示法

如果需要再 case 中表示范围可以使用 case m ... n, 表示范围就是 [m,n]

修改上面王者荣耀段位匹配的功能代码

/**
	王者荣耀段位匹配器
**/

#include <stdio.h>

int main(){
	printf("请输入王者积分:");
	int score = 0;
	scanf("%d",&score);

	switch(score){
		case 0 ... 49:  //score范围在[0,49]
		    printf("青铜\n");
		    break;
		case 50 ... 59:  // [50,59]
			printf("白银\n");
		    break;
		case 60 ... 69:
			printf("黄金\n");
		    break;
		case 70 ... 79:
			printf("铂金\n");
		    break;
		case 80 ... 89:
			printf("钻石\n");
		    break;
		case 90 ... 99:
			printf("星耀\n");
		    break;
		case 100 ... 150:
			printf("王者\n");
		    break;
		default:
		   printf("段位未匹配成功\n");
	}


	return 0;
}

5.2.3 疑难杂症

  1. 在 case 中,第一行代码中不能定义变量,只能放表达式。
/**
	switch的疑难杂症
**/

#include <stdio.h>


int main(){


	int n = 3;
	switch(n){

		case 1:
			n++; // 可以放表达式
			//int m = 0; // case中的第一行不能定义变量
			//const int m = 0; // 常量也不行
			printf(" ");
			int m = 0;  // 可以在非第一行定义变量
			break;
		case 3:
			printf("2\n");
			break;
		default:
		    printf("3\n");
	}

	return 0;
}

如果在第一行定义变量会出现如下错误

  1. switch 括号中的值,需要一个准确的值,只能放:整数类型、字符类型、枚举(后面讲)
/**
	switch的疑难杂症
**/

#include <stdio.h>


int main(){


	// long n = 3;
	//float n = 3; //报错:error: switch quantity not an integer

	char n = '1';
	switch(n){

		case '1':
			n++; // 可以放表达式
			//int m = 0; // case中的第一行不能定义变量
			//const int m = 0; // 常量也不行
			printf(" ");
			//int m = 0;
			break;
		case '3':
			printf("2\n");
			break;
		default:
		    printf("3\n");
	}

	return 0;
}

如果 switch 中放了不合法的数据,就报如下的错误:

前文传送:

【C语言从不挂科到高绩点】01-C语言概述-CSDN博客

【C语言从不挂科到高绩点】02-变量、数据类型、标识符、关键字-CSDN博客

【C语言从不挂科到高绩点】03-C语言运算符

【C语言从不挂科到高绩点】04-流程控制语句-if-CSDN博客

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2088261.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux上启动redis

1.默认启动方式:在系统的任意位置执行 redis-server即可启动 ps:这是前端界面启动&#xff0c;无法直接连接redis&#xff0c;想要连接的话只能另外启动一个窗口&#xff0c;因此下面我们介绍后台启动redis 2.指定配置启动&#xff1a; redis的配置文件位置&#xff1a…

二叉树的基本知识

&#xff08;写给未来遗忘的自己&#xff09; 1.二叉树的种类 1. 满二叉树&#xff1a;所有分支都有数&#xff08;都填满&#xff09; 2. 完全二叉树&#xff1a;除了最底层没填满外其他的都满了&#xff0c;而且最底层从左到右是存在数的位置是连续的 3.二叉搜索树&#xf…

大学开学必备好物清单有哪些?开学必备清单大全,超详细版!

即将踏入大学校园的新生们&#xff0c;是否已经准备好迎接全新的挑战与机遇呢&#xff1f;在开学之前&#xff0c;将必备物品筹备妥当是极为重要的事情&#xff0c;因为这能够助力大家更为良好地适应大学生活。接下来&#xff0c;为大家提供一份实用的大学生开学必备物品清单&a…

性能测试面试题总结

最近这一年&#xff0c;对性能测试有了更多的认知。 压力、强度测试&#xff1a;在一定软硬件环境下&#xff0c;通过高负载的手段来使服务器资源&#xff08;强调服务器资源&#xff0c;硬件资源&#xff09;处于极限状态&#xff0c;测试系统在极限状态下长时间运行是否稳定…

大模型微调---qwen实战

一、Qwen大模型的介绍 Qwen是阿里云开发的大语言模型&#xff0c;整个qwen系列的模型&#xff0c;由base模型、rm模型、chat模型、code模型、math模型等等。 qwen采用chatml样式的格式来进行模型训练&#xff0c;chatml格式可以时模型有效区分各类信息&#xff0c;可以增强模…

blender插件库

插件安装教程&#xff1a;blender4.2中安装插件的方式-CSDN博客 blender官网插件库地址&#xff1a;Add-ons — Blender Extensions 1&#xff0c;ExtraObjects&#xff1a;提供更多网格形状&#xff0c; 链接:https://caiyun.139.com/m/i?2gov6Lw5RAib8 提取码:0ayj 复制内…

有向图的转置:算法分析与实现

有向图的转置:算法分析与实现 前言1. 邻接链表表示法2. 邻接矩阵表示法结论前言 在计算机科学中,图是一种非常重要的数据结构,用于表示对象之间的复杂关系。有向图(Directed Graph)是一种图,其边具有方向性。有向图的转置(Transpose)是一种基本操作,它将图中所有边的…

LLM面经(持续更新中)

Tokenizer Norm Batch Norm 好处 使得模型训练收敛的速度更快 每层的数据分布都不一样的话(解决Internal Covariance Shift)&#xff0c;将会导致网络非常难收敛和训练&#xff0c;而如果把每层的数据都在转换在均值为零&#xff0c;方差为1的状态下&#xff0c;这样每层数据…

第一个golang项目

第一个golang项目 开发环境安装golangVisual Studio Code安装golang语言插件初始化项目创建目录初始化golang配置 开始开发安装所需依赖创建main.go创建配置文件创建命令版本命令查看指定目录指定后缀文件并将指定内容替换为新内容 打包并运行 前因后果&#xff1a;因为工作需要…

不可错过的10款电脑监控软件推荐,电脑监控软件哪个好?宝藏安利

电脑监控软件已成为企业管理和家庭安全的重要工具。 无论是为了提升工作效率、保障信息安全&#xff0c;还是为了监督孩子的学习情况&#xff0c;一款优秀的电脑监控软件都能发挥巨大作用。 本文将为您推荐10款不可错过的电脑监控软件&#xff0c;并详细分析它们的优势与特点&…

Elastic Stack(三):Logstash介绍及安装

目录 1 Logstash介绍1.1 组件介绍1.2 Logstash 工作原理 2 Logstash安装2.1 logstash-源码包安装8.1.01、logstash安装2、创建配置文件3、启动4、配置快速启动文件 1 Logstash介绍 1.1 组件介绍 Logstash是一个开源数据收集引擎&#xff0c;具有实时管道功能。Logstash可以动…

财富趋势金融大模型已通过备案

财富趋势金融大模型已通过备案 8月28日晚&#xff0c;国内领先的证券软件与信息服务提供商——财富趋势&#xff0c;公布了其2024年上半年财务报告&#xff1a; 今年上半年&#xff0c;财富趋势营收1.48亿元&#xff0c;同比增长0.14%&#xff1b;实现归母净利润为1亿元&#x…

适用于 Windows 的文件恢复软件

我很遗憾我在 Windows中从 PC 中删除了数据并再次移动了它们。当我检查时&#xff0c;什么都没有。是否有任何 Windows 数据恢复软件&#xff0c;或者是否可以想象&#xff1f;我会看到任何援助的价值。 文档、图像、音频等数据文件可能会因意外删除、感染攻击、系统崩溃等不良…

mac os系统

各种各样的系统优缺点-CSDN博客 目录 一&#xff1a;mac os是什么系统&#xff1f;图形用户界面的革命性操作系统 二&#xff1a;mac os是什么系统&#xff1a;高性能和无缝衔接&#xff0c;功能丰富、安全可靠 三&#xff1a;mac os是什么系统&#xff1a;全新界面设计和卓…

Tomcat 环境配置及部署Web项目

一.环境 Java Tomcat 二.Java环境 1.下载安装JDK 2.修改及新建环境变量 3.查看Java 版本 三.Tomcat 环境 1.下载及解压Tomcat 2.配置环境变量 3.验证安装,运行startup.bat 访问&#xff1a;http://localhost:8080/ 三.Web项目 1.修改Tomcat配置文件 2.拷贝W…

Python将Latex公式插入到Word中

推荐一个库&#xff0c;可以使用python将Latex公式插入到Word中显示 使用pip进行安装: pip install latex2word 示例将如下公式插入到word 公式1&#xff1a; f(x) \int_{-\infty}^\infty \hat f(x)\xi\,e^{2 \pi i \xi x} \,\mathrm{d}\xi 公式2&#xff1a; \int x^{\mu}…

重生奇迹MU 小清新职业智弓MM

游戏中有一种令人迷醉的职业——智弓MM&#xff0c;她们以高超的射箭技能闻名于世。本文将为您介绍这个悠闲的小清新职业&#xff0c;在游戏中的特点以及如何成为一名出色的智弓MM。跟随我们一起探索这个奇妙而神秘的职业吧&#xff01; 悠闲的游戏节奏是游戏的初衷之一&#…

Dataease1.8.23 local本地安装

1、安装视频 手把手带你安装DataEase&#xff08;一&#xff09;Local模式部署 DataEase 免费开源BI工具 开源数据可视化分析工具 2、图文 安装模式 - DataEase 文档 注意点&#xff1a; 1、数据库&#xff1a;mysql 1&#xff09;my.cnf 新增配置&#xff1a; #忽略大小…

35岁以上程序员转行AI绘画领域:以Stablediffusion和Midjourney为舟,扬帆起航

前言 在技术浪潮的推动下&#xff0c;35岁的程序员面临职业转型的十字路口。AI绘画领域&#xff0c;以其独特的艺术创新和技术融合&#xff0c;为中年程序员提供了一个全新的舞台。利用AI工具如Stablediffusion和Midjourney&#xff0c;35岁以上的程序员可以在这个领域实现自我…

第二证券:三折折叠屏手机呼之欲出,14股业绩暴涨超200%

智能制作龙头大手笔投建机器人超级工厂 8月29日晚间&#xff0c;埃夫特发布公告称&#xff0c;公司拟运用自有或自筹资金在安徽省芜湖市经过购买土地用于出资制作埃夫特机器人超级工厂暨全球总部项目&#xff0c;根据初步测算&#xff0c;项目出资金额约人民币18.93亿元&#…