如果一段 if-else if
中的条件都在判断 同一笔资料 是不是 等於某值,这段 if-else if
可以用 switch()
代替
语法是:
switch(<变数>){
case <值1>:
<执行内容>
⋮
<执行内容>
case <值2>:
<执行内容>
⋮
<执行内容>
case <值3>:
<执行内容>
⋮
<执行内容>
⋮
}
效果等同:
if(<变数>==<值1>){
<执行内容>
⋮
<执行内容>
}
else if(<变数>==<值2>){
<执行内容>
⋮
<执行内容>
}
else if(<变数>==<值3>){
<执行内容>
⋮
<执行内容>
}
⋮
透过 switch()
判断输入的符号,进行不同的运算
break
代表 强制结束 这个 区块,如果没有加上 break
会造成结果错误(可以把范例中的 break
拿掉後执行看看)
#include<stdio.h>
#include<stdlib.h>
int main(){
int x, y;
char operation;
scanf("%c", &operation);
scanf("%d%d", &x, &y);
switch(operation){
case '+':
printf("%d+%d=%d\n", x, y, x+y);
break;
case '-':
printf("%d-%d=%d\n", x, y, x-y);
break;
case '*':
printf("%d*%d=%d\n", x, y, x*y);
break;
case '/':
printf("%d/%d=%d\n", x, y, x/y);
break;
case '%':
printf("%d%%d=%d\n", x, y, x%y);
break;
}
return 0;
}
等同这段 if-else if
:
#include<stdio.h>
#include<stdlib.h>
int main(){
int x, y;
char operation;
scanf("%c", &operation);
scanf("%d%d", &x, &y);
if(operator == '+')
printf("%d+%d=%d\n", x, y, x+y);
else if(operator == '-')
printf("%d-%d=%d\n", x, y, x-y);
else if(operator == '*')
printf("%d*%d=%d\n", x, y, x*y);
else if(operator == '/')
printf("%d/%d=%d\n", x, y, x/y);
else if(operator == '%')
printf("%d%%d=%d\n", x, y, x%y);
return 0;
}
判断是不是等於 某些值,可以把多个 case
写在一起
#include<stdio.h>
#include<stdlib.h>
int main(){
int x;
scanf("%d", &x);
switch(x){
case 0: case 7:
printf("A\n");
break;
case 2: case 5:
printf("B\n");
break;
case 4: case 3:
printf("C\n");
break;
case 6: case 1:
printf("D\n");
break;
}
return 0;
}
default
类似 else
,会在资料不符合任何 case
时执行
#include<stdio.h>
#include<stdlib.h>
int main(){
int x;
scanf("%d", &x);
switch(x){
case 0: case 7:
printf("A\n");
break;
case 2: case 5:
printf("B\n");
break;
case 4: case 3:
printf("C\n");
break;
case 6: case 1:
printf("D\n");
break;
default:
printf("E\n");
break;
}
return 0;
}
switch()
实际上是 让程序从符合的 case
开始执行,所以执行到其他 case
的范围时会继续进行,不会跳过
在每个 case
结尾加上 break
会让 switch()
在执行到其他 case
前结束,确保每次只会执行一件事
挖坑清单:
main()
前面的 int
,和最後一行的 return 0;
\0
在字串、字元中的意思
小弟近日工作刚好会用到Azure,公司希望我们可以以考取AZ204为目标,所以接下来会照着这个目标发...
Nest 在大多数情况下是采用 单例模式 (Singleton pattern) 来维护各个实例,也...
今日文章目录 需求说明 过程纪录 问题统整 重点笔记 参考资料 需求说明 加入深浅主题色切换。 过...
1.computed & Watch Part_1 > Lab_Binding >...
今天是30天程序语言研究的第二十一天,由於资料库开发的部分我是负责前端所以想说顺便多练习一下其他开发...