C++多分支选择结构
switch语句是多分支选择语句,用来实现多分支选择结构,switcht的一般形式如下,和C语言基本上一样,只是输出语句不同。
switch(表达式) | |
{ | |
case 常量表达式1:语句1 | |
case 常量表达式2:语句2 | |
…… | |
case 常量表达式n:语句n | |
default:语句n+1 | |
} |
switch后面的括号里的表达式,原则上允许为任何类型,多个case可以共用一组执行语句。
当swtich表达式的值与大括号里面的某一个case子句中的变量表达式的值相同时,就会执行此case子句后面的语句。
当所有的case子句中的常量表达式的值没有一个和switch表达式的值相同时,会执行default子句后面的语句。
switch后面大括号里面的每一个case表达式的值必须不同,否则就会出现相互矛盾。
大括号里面的case和default出现的次序不影响执行结果,也就是读者就算把default放到第一行也可以。
执行完一个case子句后,流程控制会转移到下一个case子句继续执行,case常量表达式只是起到语句标号作用,并不是在该处进行条件判断。
在执行switch语句时,根据表达式的值找到与之匹配的case子句后,就从这个case子句开始执行了,不再进行判断。
如果需要使流程跳出switch语句,可以用break语句。
案例:判断某年是否使闰年,并且判断这年的某月有几天。
#include <iostream> | |
using namespace std; | |
int main() | |
{ | |
int year, month, mon; | |
cout << "输入年份和月份,年月之间用空格隔开" << endl; | |
cin >> year >> month; | |
if (month < 1 || month>12) | |
{ | |
cout << "输入的月份不存在" << endl; | |
} | |
else | |
{ | |
if ((year % 4 == 0 && year % 100 != 0) || year % 100 == 0) | |
{ | |
mon = 1; | |
cout <<year<< "年是闰年" << endl; | |
} | |
else | |
{ | |
mon = 2; | |
cout <<year<< "年是平年" << endl; | |
} | |
} | |
switch (month) | |
{ | |
case 1:cout << "你输入的1月有31天"; break; | |
case 2: | |
if (mon==1) | |
{ | |
cout << "你输入的2月有29天"; | |
} | |
else | |
{ | |
cout << "你输入的2月有28天"; | |
}; break; | |
case 3:cout << "你输入的3月有31天" << endl; break; | |
case 4:cout << "你输入的4月有30天" << endl; break; | |
case 5:cout << "你输入的5月有31天" << endl; break; | |
case 6:cout << "你输入的6月有30天" << endl; break; | |
case 7:cout << "你输入的7月有31天" << endl; break; | |
case 8:cout << "你输入的8月有31天" << endl; break; | |
case 9:cout << "你输入的9月份有30天" << endl; break; | |
case 10:cout << "你输入的10月有31天" << endl; break; | |
case 11:cout << "你输入的11月有30天" << endl; break; | |
case 12:cout << "你输入的12月有31天" << endl; break; | |
default:cout << "输入有误!" << endl; | |
break; | |
} | |
} |
执行本程序之后
输入年份和月份,年月之间用空格隔开
2020 10
2020年是闰年
你输入的10月有31天
正文完