1.有时候在if-else我们会要求判断当输入的某个值在某个范围内去做什么事情.如根据输入一个值type,打印不同的结果.
那么这个程序会怎么运行呢?如果足够幸运,比如type=他在第一个就满足条件,然后跳出if,不过如果,运气不好的话,如type=5,会一步步往下走,那我们有没有什么办法能让他直接去到符合它条件的地方,让它执行完后自动跳出呢.switch-case就是你的选择.
这样看这个switch-case也挺像if-else的.都是后面跟个括号,里面有表达式,然后后面有一对大括号,里面是待执行的语句.不过其实还是挺不一样的,switch根据括号里的表达式或者变量的值然后决定说哪个case是跟他匹配的,就去执行这个case里面的语句.一直到遇到break为止.当然如果case都不满足则会直接到default.default不用多加个"break;"因为执行完它会直接跳出.它不用像if一样需要一个个判断,它能直接找到匹配的然后跳到那里做它该做的事情.
2.switch-case结构
!!!注意!!!switch(控制表达式),括号里面的值只能是整数型的结果.case后面是一个常量,这个常量可以是常数,也可以是常数计算的表达式.如case 5-1+3合法.或者定义了一个const int MRN=5, case MRN也是合法的.同时再重申一遍,case只是一个路牌,不能阻止程序继续往下运行,只有break可以.有时候可以利用这个特性来完成一些特定的任务,如
3.练习:百分成绩转五分成绩
#include<stdio.h>
int main()
{
int score;
printf("请输入分数");
scanf("%d",&score);
switch(score/10)
{
case 10:
case 9:
printf("成绩为A");
break;
case 8:
printf("成绩为B");
break;
case 7:
printf("成绩为C");
break;
case 6:
printf("成绩为D");
break;
default:printf("成绩为E");
break;
}
}
这段代码不符合单一出口的原则,因为我们还没学过字符或字符串数据的处理.当然,这样的代码我们用数组来做的话会更漂亮一点
有时候这种思想和特性还是挺重要的,我就是忘了switch有这个特性迟迟做不出来.
4.问题