30天学会C语言: Day 7-switch ON!!!

如果一段 if-else if 中的条件都在判断 同一笔资料 是不是 等於某值,这段 if-else if 可以用 switch() 代替

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;
}

break

switch() 实际上是 让程序从符合的 case 开始执行,所以执行到其他 case 的范围时会继续进行,不会跳过

在每个 case 结尾加上 break 会让 switch() 在执行到其他 case 前结束,确保每次只会执行一件事


挖坑清单:

  • main() 前面的 int,和最後一行的 return 0;
  • 可以拆成多行的情况
  • \0 在字串、字元中的意思
  • 指标

<<:  30天学会 Python: Day 7-无限轮回

>>:  用 Notion 打造心中的知识笔记

Azure - Day2 以考取AZ204为目标

小弟近日工作刚好会用到Azure,公司希望我们可以以考取AZ204为目标,所以接下来会照着这个目标发...

[NestJS 带你飞!] DAY17 - Injection Scopes

Nest 在大多数情况下是采用 单例模式 (Singleton pattern) 来维护各个实例,也...

DAY29 - [React] useContext 实作篇

今日文章目录 需求说明 过程纪录 问题统整 重点笔记 参考资料 需求说明 加入深浅主题色切换。 过...

Day62 (Vue)

1.computed & Watch Part_1 > Lab_Binding >...

30天程序语言研究

今天是30天程序语言研究的第二十一天,由於资料库开发的部分我是负责前端所以想说顺便多练习一下其他开发...