当前位置: 首页 > news >正文

switch的简单运用

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.hskmm.com/?act=detail&tid=36888

相关文章:

  • 软工第三次作业——结对项目
  • 10.22总结
  • AutoGen框架入门:5个核心概念搭建智能体协作系统
  • 使用google上colab编辑器
  • 16
  • 英语_阅读_The power of curiosity_待读
  • goden-eye 靶场
  • 20232424 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • 记录docker desktop wsl2奔溃的查询思路
  • 股票操作统计分析报告 - 2025年10月22日
  • 软工结对作业
  • 20232419 2025-2026-1《网络与系统攻防技术》实验二实验报告
  • dfs模板(p1036)
  • Java中的修饰符
  • CF2078D Scammy Game Ad
  • [树状数组]P11855 [CSP-J2022 山东] 部署 题解
  • C#/.NET/.NET Core技术前沿周刊 | 第 58 期(2025年10.13-10.19)
  • 行列式+矩阵树定理
  • 测试金字塔与测试左移:提升软件质量的双翼策略
  • 兼职MOer的幸福生活
  • 20232323 2025-2026-1《网络与系统攻防技术》实验二实验报告
  • 完整教程:阿里云上CentOS6.9(停止维护)导致的yum下载chrony失败如何解决?
  • LGP5494 [LG TPLT] 线段树分裂 学习笔记
  • 股票操作统计分析报告 - 2025-10-22
  • 随笔测试
  • 文档智能信息抽取技术在金融财税领域的应用研究与发展前景
  • 今日策略:年化436%,回撤7%,夏普比5.28, deap因子挖掘重构,附python代码 - 详解
  • 51单片机实践之数码管电子时钟/时间呈现及其设置
  • vue2:v-if和v-show的区别以及造成的影响
  • P6845 题解