搜狐快站绑定未备案的网站域名吗,苏州市住房和城乡建设局网站首页,品牌建设的意义是什么,网站做防篡改if语句处理多个分支时需要用if-else if结构#xff0c;分支越多#xff0c;嵌套的if语句层就越多#xff0c;程序不但庞大、复杂#xff0c;理解起来也比较困难。在C编程中#xff0c;针对有些问题除了使用if-else if结构之外#xff0c;还有switch语句也可以实现#x…if语句处理多个分支时需要用if-else if结构分支越多嵌套的if语句层就越多程序不但庞大、复杂理解起来也比较困难。在C编程中针对有些问题除了使用if-else if结构之外还有switch语句也可以实现并且switch语句更加简洁易懂。
switch语句的格式
switch语句是适用于实现多分支选择的语句。swith语句在执行时先计算表达式的值然后按顺序与case子句中所列出的各个常量进行比较若表达式的值与常量中的值相等则由此进入相应的case语句执行程序并在执行完相应的语句加上break语句如果不加break程序不会立即跳出switch语句而是继续依次执行后面的case语句和default中的代码直到遇到break语句或switch语句结束。具体格式如下 switch(表达式){case 常量表达式1:语句1;……break;case 常量表达式2:语句2;……break;……case 常量表达式n:语句n;……break;default:语句n1;……
}
注意case语句后的各常量表达式的值不能相同否则会出现相互矛盾的现象造成逻辑混乱每个语句标号由保留字case和后面的常量表达式及冒号组成每个常量表达式通常为常量如常数或字符每个case和default的出现次序不影响执行结果该语句中可以使用一次或多次case标号但只能使用一次default标号或者省略整个default部分多个case标号也允许使用在同一个语句序列的前面break表示语句到此结束跳出整个switchdefault可选的default块当表达式的值与所有case都不匹配时执行default块的代码。
实战训练1—将某一门课程的成绩转换为等级输出
问题描述
一个学生的成绩如果大于等于90程序会输出“优秀”如果成绩大于等于80小于90程序输出“良好”如果大于等于70小于80程序输出“中等”如果大于等于60小于70程序输出“及格”如果小于60程序输出“不及格”。
输入格式
一行一个整数score,0score100
输出格式
输出成绩对应的等级。
输入输出样例 输入样例1 输出样例1 95 优秀 输入样例2 输出样例2 89 良好 输入样例3 输出样例3 73 中等 输入样例4 输出样例4 60 及格 输入样例5 输出样例5 56 不及格
问题分析
在前面的内容中使用多分支结构if-else if来处理的根据score的取值如果使用switch直接来处理那么case里面的常量会有100、99、98……、0共101个case通过分析90到99十位上的数为980到89十位上的数为8……所以根据成绩十位数一样的等级也是一样的其中100除以10之后为10所以9和10 都为优秀这样就可以先对score除以10之后再使用switch去处理具体程序如下 #includebits/stdc.h
using namespace std;
int main() {int score;//定义成绩变量score cinscore;//输入成绩变量score int swscore/10; //成绩除以10 switch(sw){//90以上包括90都是优秀 所以变量的值为9和10都输出优秀因此10和9可以使用同一语句块 case 10:case 9:cout优秀endl;break;case 8://大于等于80 —良好 cout良好endl;break;case 7://大于等于70 —中等 cout中等endl;break;case 6://大于等于60 -及格 cout及格endl;break;//小于60都是不及格所以共用同一语句块 case 5:case 4:case 3:case 2:case 1:case 0:cout不及格endl; break;default:break; }return 0;
}
对于上述代码可以进行相应的改进把不及格都放到default中 #includebits/stdc.h
using namespace std;
int main() {int score;//定义成绩变量score cinscore;//输入成绩变量score int swscore/10; //成绩除以10 switch(sw){//90以上包括90都是优秀 所以变量的值为9和10都输出优秀因此10和9可以使用同一语句块 case 10:case 9:cout优秀endl;break;case 8://大于等于80 —良好 cout良好endl;break;case 7://大于等于70 —中等 cout中等endl;break;case 6://大于等于60 -及格 cout及格endl;break;default://和前面内容都不匹配说明小于等于60所以可以将5到0进行合并写到default中 cout不及格endl; break;}return 0;
}
实战训练2—计算月份天数
问题描述
输入年份与月份让计算机输出该月份的天数。题目涉及年、月、天这几个量分别用year、month、days来表示前面内容介绍过闰年对于闰年来讲2月份是29天平年是28天月份1、3、5、7、8、10、12月份是31天剩余的月份4、6、9、11是30天最后对于2月份首先需要判断是否为闰年闰年为days赋值为29否则赋值为28。
输入描述
两个整数 year和month
输出描述
一个整数天数days
输入输出样例 输入样例1 输出样例1 2000 2 29 输入样例2 输出样例2 2006 3 31
问题分析
根据题意首先输入year和month这两个变量根据month的取值取月份1、3、5、7、8、10、12时都为31天使用相同的赋值语句同理对于
#includebits/stdc.h
using namespace std;
int main() {int year,month,days;//定义年份、月份和天数变量 cinyearmonth;//输入年份和月份 switch(month){//月份1 3 5 7 8 10 12天数为31天共用同一代码块 case 1:case 3:case 5:case 7:case 8:case 10:case 12:days 31;break;//月份4 6 9 11天数为30天共用同一代码块case 4:case 6:case 9:case 11:days 30;break;case 2:if(((year%40 ) (year%100 !0)) || (year%4000)) {//判断是否为闰年该条件 days 29;}else{days 28;}}coutdaysendl;return 0;
}