switch case 组合
语法结构
switch(整型变量/常量/整型表达式){ case var1: break; case var2: break; case var3: break; default: break; }
switch语句也是一种分支语句,常常用于多分支的情况
这种多分支,一般指的是很多分支,而且判定条件主要以整型为主
- 多分支
//如 switch (day){ case 1: printf("星期一\n"); break; case 2: printf("星期二\n"); break; case 3: printf("星期三\n"); break; case 4: printf("星期四\n"); break; case 5: printf("星期五\n"); break; case 6: printf("星期六\n"); break; case 7: printf("星期日\n"); break; default: printf("bug!\n"); break; }
case的作用:本质是进行判定功能
break在switch中的作用:break本质其实是进行分支功能
case之后,如果没有break,则会依次执行后续有效语句,直到碰到break跳出
- 多个不同case执行同一个语句
int main() { int day = 6; switch (day) { case 1: case 2: case 3: case 4: case 5: printf("周内\n"); break; case 6: case 7: printf("周末\n"); break; default: printf("bug!\n"); break; } return 0; }
case后面的值的要求
switch(m) && case n //其中m 和 n必须是什么类型变量或者表达式? 整型变量/常量/整型表达式 //case 语句后面是否可以是const修饰的只读变量呢? 不行,const修饰后为常变量但本质还是变量
default语句
default可以出现在switch内的任何部分
结论:尽管如此,我们依旧强烈推荐default应该放在case语句的最后
循环语句
三种循环
语法结构
- while
//while 条件初始化 while(条件判定){ //业务更新 条件更新 }
- for
1. //for 2. for(条件初始化; 条件判定; 条件更新){ 3. //业务代码 4. }
- do while
三种循环对应死循环写法
1. while(1){ 2. } 3. for(;;){ 4. } 5. do{ 6. }while(1);
break&continue在循环中的应用
int main() { while (1){ char c = getchar(); //获取字符//输入abcd#1234 if ('#' == c){ break; } printf("echo: %c\n", c); } system("pause"); return 0; } //测试用例1:break:终端输除abcd //测试用例2:continue:终端输入abcd1234
break:跳出循环(结束循环)
continue:结束本次(一次)循环
- 注意区别:
在while或do while语句中,遇到continue跳到条件判定
在for语句中,遇到continue跳到条件更新(调整),再进行条件判定
循环语句注意点
- 推荐外小内大(例如双循环遍历),一般效率是会高一些,但是差别不会特别大, 实际测试的时候,出现效率现象出现反直觉现象,也不要意外
- 推荐条件判定使用开区间,循环次数明确,便于进行个数计算
goto实现循环
- 例如
int main() { int i = 0; START: printf("[%d]goto running ... \n", i); ++i; if (i < 10){ goto START; } printf("goto end ... \n"); return 0; }
一般禁用,避免破坏代码,不过有需要还是必须会用