switch的简单运用

news/2025/10/22 21:07:59/文章来源:https://www.cnblogs.com/ljy123456/p/19158971

switch 分支语法

switch 分支结构用于在多个可能的情况下选择一种情况进行处理。以下是 switch 分支结构的基本语法:

  switch(变量表达式){case 常量1:语句;break;case 常量2:语句;break;case 常量3:语句;break;...case 常量n:语句;break;default:语句;break;
}

另一种排版习惯:

  switch(变量表达式){case 常量1:语句;break;case 常量2:语句;break;case 常量3:语句;break;...case 常量n:语句;break;default :语句;break;
}

当变量表达式所表达的量与其中一个case分支中的常量相特时,就执行此case分支后面的语句,并依次下去执行后面所有case分支中的语句,除非遇到 break 语句路出 svtch为止。如果变量表达式的量与所有 case 分支的常量都不相符,就执行 default 分支中的语句。下面是一个使用 swtich 结构模拟四则运算的程序:

	#include <iostream>using namespace std;int main(){double num1,num2,result;char op;cout<<"请输入表达式(例如1+2):"<<endl;cin >>num1 >>op >> num2;switch(op){case '+':result = num1+ num2;break;case'-':result = num1-num2; break;case'*':result = num1*num2; break;case '/':"if(num2 == 0){cout<<"除数不能为0"<<endl;}return 1;}result = numl /num2;break;default:cout<<"操作符输入有误"<<endl;return 1;}cout<<"结果是:"<<result<<endl;return 0;}

该示例中,程序根据用户输入的表达式,通过switch分支结构来进行简单的数学运算。在每个case分支中,程序都执行某种运算操作,并通过break:语句结束该分支。如果用户输入的操作符不是、、*、/中的任意一个,则执行 default 分支,输出「操作符输入有误」。从上面的例子可以看出,svidh分支结构可以用于处理多个可能的情况,其逻辑结构比多个ese语句更加清晰简洁。但是,需要注意的是,switch 分支结构中需要进行比较的值必须是整型、字符(非字符串)或枚举类型,不能是浮点型或其他类型的数据。

何时使用 break ?

在 svirth分支结构中,并不是每一个case 语句都必须使用 break,因为有些时候,当snitch 判断的表达式在匹配多个值的时候,执行的是相同的功能,我们仅需写一份执行代码来对应多个case,然后再用break 跳出即可。但也要特别留意,漏写 break 可能会导致严重逻辑错误。

1.根据输入的数字判断其正负性

	int num = -3;switch(num){case 0:cout<<"Number is zero.";case 1:case 2:case 3:case 4:case 5:cout<<"Number is positive.";case -1:case -2:case -3:case -4:case -5:cout<<"Number is negative.";
}

如果输入数字为 -3,那么该程序的输出结果将为:

Number is negative.

这里看起来没有问题,但实际上,由于没有添加 break语句,程序会继续执行下一个分支代码,直到switch结束。假设,这里的 num为 0,那么那么该程序的输出结果将为:

Number is zero.Number is positive.Number is negative.

2 判断某一天是当年的第几天:

	#include <iostream>using namespace std;int main(){int year, month, date,leap, days = 0;// 提示用户输入年份、月份、日cout<<"请输入年份:";cin >>year;cout<<"请输入月份:";cin >>month;cout<<"请输入日:";cin >>date;// 判断是否为闰年,并记录该年2月份的天数leap =(year%4==0&&year %100!=0||year % 400 == 0);// 利用 switch 分支结构计算输入日期是这一年的第几天switch(month){case 12:days += 30;case 11:days += 31;case 10:days += 30;case 9:days += 31;case 8:days += 31;case 7:days += 30;case 6: days += 31;case 5: days +=30;case 4:days += 31;case 3:days += 28 + leap;case 2:days += 31;case 1:days += date; break;default: cout<<"数据错误"<<endl;break;}// 输出计算结果cout<< year <<"年"<<month<<"月"<< date<<"日是这一年的第"<<days<<"天。"return 0;
}

swtich 和if 对比

使用switch分支结构可以使得某些情况下代码行数更少、易读性更高,且可以更快地判断某个值是否等于一系列常量中的任意一个。下面给出一个非常适合使用snich的例子。假如我们要根据星期几的数字(1-7),输出对应的(Monday,Tuesday,Wednesday.sundavy)。这个问题可以用 if-else分支结构来实现,例如:

int day = 3;
if(day == 1){
cout<<"Monday";
} else if(day == 2){
cout<<"Tuesday";
} else if(day == 3){
cout<<"Wednesday";
} else if(day ==4){
cout<<"Thursday";
} else if(day ==5){
cout<<"Friday";
} else if(day ==6){
cout<<"Saturday";
} else if(day ==7){
cout<<"Sunday ;
} else {
cout<<"Invalid day";
}

这样写的缺点是代码行数很多,看起来比较繁琐。而如果我们使用 switch 分支结构,就可以更加简洁清晰地实现:

int day =3;switch(day){
case 1:cout<<"Monday"; break;
case 2:cout<<"Tuesday"; break;
case 3:cout<<"Wednesday":break;
case 4:cout<<"Thursday"; break;
case 5:cout<<"Friday"; break;
case 6:cout<<"Saturday"; break;
case 7: cout<<"Sunday"; break;
default: cout<<"Invalid day"; break;
}

6.题目集

image

#include <iostream>
using namespace std;
int main()
{int x;cin>>x;switch(x){case 1: cout<<"one"; break;case 2: cout<<"two"; break;case 3: cout<<"three"; break;default : cout<<"other"; break;}return 0;
}

image

#include <iostream>using namespace std;
int main()
{int x;cin>>x;switch(x){case 1: cout<<"NO"; break;case 2: cout<<"YES"; break;case 3: cout<<"NO"; break;case 4: cout<<"YES"; break;case 5: cout<<"NO"; break;case 6: cout<<"YES"; break;case 7: cout<<"YES"; break;default : cout<<"input error!"; }return 0;
}

image

#include <bits/stdc++.h>
using namespace std;
int main()
{int year1,month1,date1,year2,month2,date2,year3,month3,date3;int num1,num2,num3;cin>>year1>>month1>>date1;cin>>year2>>month2>>date2;cin>>year3>>month3>>date3;switch(month1){case 1: num1=year1*365+month1*31+date1;case 3: num1=year1*365+month1*31+date1;case 5: num1=year1*365+month1*31+date1;case 7: num1=year1*365+month1*31+date1;case 8: num1=year1*365+month1*31+date1;case 10: num1=year1*365+month1*31+date1;case 12: num1=year1*365+month1*31+date1;case 2: num1=year1*365+month1*28+date1;case 4: num1=year1*365+month1*30+date1;case 6: num1=year1*365+month1*30+date1;case 9: num1=year1*365+month1*30+date1;case 11: num1=year1*365+month1*30+date1;} switch(month2){case 1: num2=year2*365+month2*31+date2;case 3: num2=year2*365+month2*31+date2;case 5: num2=year2*365+month2*31+date2;case 7: num2=year2*365+month2*31+date2;case 8: num2=year2*365+month2*31+date2;case 10: num2=year2*365+month2*31+date2;case 12: num2=year2*365+month2*31+date2;case 2: num2=year2*365+month2*28+date2;case 4: num2=year2*365+month2*30+date2;case 6: num2=year2*365+month2*30+date2;case 9: num2=year2*365+month2*30+date2;case 11: num2=year2*365+month2*30+date2;}switch(month3){case 1: num3=year3*365+month3*31+date3;case 3: num3=year3*365+month3*31+date3;case 5: num3=year3*365+month3*31+date3;case 7: num3=year3*365+month3*31+date3;case 8: num3=year3*365+month3*31+date3;case 10: num3=year3*365+month3*31+date3;case 12: num3=year3*365+month3*31+date3;case 2: num3=year3*365+month3*28+date3;case 4: num3=year3*365+month3*30+date3;case 6: num3=year3*365+month3*30+date3;case 9: num3=year3*365+month3*30+date3;case 11: num3=year3*365+month3*30+date3;}if(num1>num3&&num3>num2){cout<<"Yes";} else if(num1<num3&&num3<num2){cout<<"Yes";}else if(num1==num3||num3==num2||num1==num3==num2){cout<<"Yes";}   else{cout<<"No"; }   return 0;
}

image

#include <iostream>using namespace std;int main(){int y,m,d,sum=0;cin>>y>>m>>d;switch(m){case 12: sum+=30;case 11: sum+=31;case 10: sum+=30;case 9: sum+=31;case 8: sum+=31;case 7: sum+=30;case 6: sum+=31;case 5: sum+=30;case 4: sum+=31;case 3: sum+=28;if((y%4==0 && y%100!=0)||y%400==0)sum+=1;case 2: sum+=31;case 1: sum+=d;}cout<<sum;return 0;
}

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

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

相关文章

科学计算库Numpy

View Post科学计算库Numpy1、认识Numpy数组对象 Numpy中最重要的一个特点就是其N维数组对象,即ndarray对象,该对象可以执行一些科学计算。点击查看代码 #导入库 import numpy as np2、创建Numpy数组 (1)最简单的创…

实用指南:基于蜣螂优化的LSTM深度学习网络模型(DBO-LSTM)的一维时间序列预测算法matlab仿真

实用指南:基于蜣螂优化的LSTM深度学习网络模型(DBO-LSTM)的一维时间序列预测算法matlab仿真2025-10-22 21:02 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !import…

10.22总结

1.今天学习了数据库增添数据 2.明天准备学习删除数据 3.今天不太熟悉

AutoGen框架入门:5个核心概念搭建智能体协作系统

AutoGen 是微软研究院开源的多智能体 AI 系统框架。这个框架的设计思路很简单——让多个 AI 智能体(加上人类参与)在对话中完成复杂任务的协作和推理。 你甚至可以把它理解成一个团队聊天室,智能体们在里面讨论、争…

使用google上colab编辑器

1.先下载google,并注册google账号 手机注册失败时,可以在浏览器设置中把浏览器语言改为中文,重新注册即可 2.登录google drive 网址:https://drive.google.com/drive/my-drive 3.在google drive 中加载 Colab Noteb…

英语_阅读_The power of curiosity_待读

The power of curiosity 好奇心的力量 Curiosity is one of the most powerful forces that drive human progress. 好奇心是推动人类进步最强大的力量之一。 It is the desire to learn, explore and understand the …

20251022周三日记

20251022周三日记今日: 1.昨晚很不爽啊,越想越来气,最终想到无欲则刚,好死不如赖活着。 2.早上起床来趟实验室把电脑拿起来去上课,拜托陈和隋帮忙听CSC,感觉确实都是给博士的,可以先从语言入手。低能伦理课配ge…

goden-eye 靶场

开启靶场 端口探测 nmap nmap -sS -sV -T5 -A IP开启的80http与25端口, 访问一下80端口让我们访问/sev-home/ 这个页面登录 登录页面我们可以选择暴力破解 爆破资源太少,先试着获取一下敏感信息 f12有这样一个页面,有一…

20232424 2025-2026-1 《网络与系统攻防技术》实验二实验报告

20232424 2025-2026-1 《网络与系统攻防技术》实验二实验报告 1.实验内容 1.使用netcat在windows物理机获取远程主机kali的Shell,cron启动任务 2.使用socat在kali获取物理主机的Shell, 启动任务计划 3.使用MSF meterp…

记录docker desktop wsl2奔溃的查询思路

错误 无规律的间接性出现奔溃信息 There was a problem with WSL An error occurred while running a WSL command. Please check your WSL configuration and try again.running wslexec: An error occurred while ru…

股票操作统计分析报告 - 2025年10月22日

股票操作统计分析报告body { font-family: "Microsoft YaHei", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; line-height: 1.6; color: rgba(51, 51, 51, 1); max-width: 1000px; margin: …

软工结对作业

软件工程结对作业项目 内容所属课程 https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience/作业要求 https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience/homework/13470作业目标 完成…

20232419 2025-2026-1《网络与系统攻防技术》实验二实验报告

一、实验内容 由于在不同的网络条件下多次尝试,因此IP会有所不同 (1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定) PS:cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程 (2)使…

dfs模板(p1036)

P1036 [NOIP 2002 普及组] 选数 题目描述 已知 \(n\) 个整数 \(x_1,x_2,\cdots,x_n\),以及 \(1\) 个整数 \(k\)(\(k<n\))。从 \(n\) 个整数中任选 \(k\) 个整数相加,可分别得到一系列的和。例如当 \(n=4\),\(k…

leetcode477. 汉明距离总和

leetcode477. 汉明距离总和477. 汉明距离总和🤡过不了的暴力解:class Solution {public int totalHammingDistance(int[] nums) {int n = nums.length,res = 0;for(int i = 0;i < n;++i){for(int j = i + 1;j &l…

Java中的修饰符

在 Java 中,修饰符(Modifiers)是用来修改类、方法、变量、构造器等定义的关键字。它们主要分为两大类:访问修饰符和非控制修饰符。 以下是 Java 中所有修饰符的详细分类和说明: 一、 访问修饰符 (Access Modifier…

CF2078D Scammy Game Ad

设 \(f_{i, j}\) 为第 \(j\) 道的小人选择了第 \(i\) 个门,从 \(i \sim n\) 能够对答案产生多少贡献,倒着转移即可。

[树状数组]P11855 [CSP-J2022 山东] 部署 题解

完全不需要剖分啊,不知道 tag 在打什么劲。 首先看题面。 操作1是正常的操作,开一颗线段树记录 dfs 序区间修改。 操作2是反常的操作。这题需要记 bfs 序。这样就可以确保一个节点的直连节点 bfs 序是连续的。然后再…

行列式+矩阵树定理

https://www.luogu.com.cn/article/48au0mw4 行列式 对于矩阵 \(A_{[n],[n]}\) 其行列式为 \(det(A) = \sum\limits_{1∼n 的排列 P}{(-1)^{P 的逆序对个数} \prod\limits_{i=1}^{n}{A_{i,p_i}}}\)。 行列式的性质:单…