第5章第4节 §54 switch语句 多分支选择结构,即“多选一”,常用于设计菜单 switch语句的形式 switch(表达式) {case常量表达式1:语句1; case常量表达式2:语句2; case常量表达式n:语句n; default:语句n+1 二 switch语句的执行过程 成立,则执行语句,然后执行下一个 case语句中和语句计+1,继续向下 判该 case,…,:行 defaul:中的语句n1,结 计算 switch)中值?ca中人束 表达式的值常量表达式 i>的值 不成立,执行 defaul:中的语句n+1, 结束
第5章 第4节 §5.4 switch 语 句 多分支选择结构,即“多选一”,常用于设计菜单 一. switch语句的形式 switch(表达式) {case 常量表达式1:语句1; case 常量表达式2:语句2; ..... case 常量表达式n:语句n; default : 语句n+1 } 二. switch语句的执行过程 计算switch()中 表达式的值 判该 值?=case 中< 常量表达式 i >的值 成立,则执行语句i, 然后执行下一个 case 语句中和语句i+1 ,继续向下一个 case, .....执行defaul : 中的语句n+1,结 束。 不成立,执行defaul : 中的语句n+1, 结束
第5章第4节 解决办法:语句后面加 break语句 switch(表达式) {case常量表达式1:语句1; break; case常量表达式2:语句2; break; case常量表达式n:语句n; break; default:语句n+1 例:输入一个考试分数,输出成绩等级(优、良、中等、及格、不及格) 解法一:用 ifa. else if语句实现 main float score prin(“输入分数”); scanf(“%r”,& rscore); if( score>=90.0) printf(“成绩为:优n”); else if( score>=80.0) printf(“成绩为:良好\n) else if( score>=70.0) printf(“成绩为:中等n”) else if( score>=60.0) printf(“成绩为:及格Ⅶn”); else printf(“成绩为:不及格Ⅷ”);
解决办法:语句i后面加break语句 第5章 第4节 switch(表达式) {case 常量表达式1:语句1;break; case 常量表达式2:语句2;break; ..... case 常量表达式n:语句n;break; default : 语句n+1 } 例: 输入一个考试分数,输出成绩等级(优、良、中等、及格、不及格) 解法一:用if... else if 语句实现 main() {float score; printf(“输入分数:”); scanf(“%f”,&score); if (score>=90.0) printf(“成绩为:优\n”); else if (score>=80.0) printf(“成绩为:良好\n”); else if (score>=70.0) printf(“成绩为:中等\n”); else if (score>=60.0) printf(“成绩为:及格\n”); else printf(“成绩为:不及格\n”); }
第5章第4节 解法二:用if语句实现 main Float score printf(“输入分数:”); scanf(“%r”,& rscore); if( score>=90.0) print(“成绩为:优m”); if( score>=80.0&& score<90.0) printf(“成绩为:良好n”); f( score>=70.0&& score<80.0) printi“成绩为:中等m”); f( score>=60.0&& score<70.0) printf(“成绩为:及格\n”); if( score<60.0) printf(“成绩为:不及格n”);} 想一想if…和i. else if语句在这 个例子中有什么异同???
第5章 第4节 main() {float score; printf(“输入分数:”); scanf(“%f”,&score); if (score>=90.0) printf(“成绩为:优\n”); if (score>=80.0 &&score<90.0) printf(“成绩为:良好\n”); if (score>=70.0&&score<80.0) printf(“成绩为:中等\n”); if (score>=60.0&&score<70.0) printf(“成绩为:及格\n”); if (score<60.0) printf(“成绩为:不及格\n”);} 解法二: 用if... 语句实现 想一想if ....和if...else if 语句在这 个例子中有什么异同???
第5章第4节 解法三:用 switch语句实现 mainO Float score; int print“输入分数:”); scanf(“%r”,& score); i=(int)(score/10.0) switch (i Case 10:; case9: printf(“成绩为:优Ⅷ”); break; case8: printf“成绩为:良好m”); break; case7: printf(“成绩为:中等m”); break; case6: printf(“成绩为:及格Ⅶn”); break; default: printf(“成绩为:不及格in”);}
main() {float score; int i; printf(“输入分数:”); scanf(“%f”,&score); i= (int)(score/10.0); switch(i) {case 10: ; case 9: printf(“成绩为:优\n”); break; case 8: printf(“成绩为:良好\n”); break; case 7: printf(“成绩为:中等\n”); break; case 6: printf(“成绩为:及格\n”); break; default: printf(“成绩为:不及格\n”); } } 解法三: 用switch 语句实现 第5章 第4节
第5章第4节 有关说明 1) switch(表达式 任何类型(ANSI新标准) 常用:整型表达式 1字符型表达式 2)可以多个cae共用一组语句枚举型 switch(i) icase 10: case9: printf(“成绩为:优m”); break; case8: printf(“成绩为:良好n”; break; case7: printf(“成绩为:中等n”); break; case6: printf、成绩为:及格”); break; default: printi(“成绩为:不及格”);} 3)加入 break语句后,各个case及deau的次序不影响结果 switch(i) { default: printf(“成绩为:不及格n”; break; case 10: case9: printf(“成绩为:优ln”); break; case8: printf“成绩为:良好Ⅷm”; break; case7: printf“成绩为:中等m”; break; case6: printf(“成绩为:及格”; break;}
第5章 第4节 三 . 有关说明 1). switch (表达式) 任何类型(ANSI新标准) 常用:整型表达式 字符型表达式 枚举型 2). 可以多个case共用一组语句 switch(i) {case 10: case 9: printf(“成绩为:优\n”); break; case 8: printf(“成绩为:良好\n”); break; case 7: printf(“成绩为:中等\n”); break; case 6: printf(“成绩为:及格\n”); break; default: printf(“成绩为:不及格\n”); } 3)加入break语句后,各个case及default的次序不影响结果 switch(i) {default: printf(“成绩为:不及格\n”); break; case 10: ; case 9: printf(“成绩为:优\n”); break; case 8: printf(“成绩为:良好\n”); break; case 7: printf(“成绩为:中等\n”); break; case 6: printf(“成绩为:及格\n”); break;}