一个小例子
同一段代码,if语句与Switch-case语句的比较:
if语句
if (type == 1)
printf("您好!");
else if (type == 2)
printf("早上好!");
else if (type == 3)
printf("晚上好!");
else if (type == 4)
printf("再见!");
else
printf("啊,啊什么啊?");
switch-case语句
switch (type)
{
case 1:
printf("您好!");
break;
case 2:
printf("早上好!");
break;
case 3:
printf("晚上好!");
break;
case 4:
printf("再见!");
break;
default:
printf("啊,啊什么啊?");
}
个人理解:if语句在执行时,需根据语句对循环条件依次进行判断,直到满足循环条件后跳出循环。而switch-case语句则直接对循环条件进行判断,执行相应语句后跳出循环
switch-case格式
switch (控制表达式)
{
case 常量:
语句
……
case 常量:
语句
……
default:
语句
……
}
·控制表达式只能是整数型的结果
·常量可以是常数,也可以是常数计算的表达式
switch语句可以看作是一种基于计算的跳转,计算控制表达式的值后,程序会跳转到相匹配的case(分支标号)处。分支标号只是说明switch内部位置的路标,在执行完分支中最后一条语句后,如果后面没有break,就会顺序执行到下面的case里去,直到遇到一个break,或者switch结束为止。
例题:成绩转换
本题要求编写程序讲一个百分制成绩转换为五分制成绩。
转换规则:
·大于等于90分为A;
·小于90分且大于等于80分为B;
·小于80分且大于等于70分为C;
·小于70分切大于等于60分为D;
·小于60分为E。
输入格式:
输入在一行中给出1个整数的百分制成绩。
输出格式:
在一行中输出对应的五分制成绩。
输入样例:
90
输出样例:
A
printf("请输入你的成绩(0~100):\n"); int grade; scanf("%d",grade); grade /= 10; switch(grade) { case 10: case 9: printf("A\n"); break; case 8: printf("B\n"); break; case 7: printf("C\n"); break; case 6: printf("D\n"); break; default: printf("F\n"); break; }