一、if分支语句
int main () { /* 格式1: if(表达式) 语句; 格式2: if(表达式) 语句1; else 语句2; 格式3: if(表达式) 语句1; else if 语句2; if 语句3; */ return 0; }
if
和else
可以不跟{}
,但是这样,if
和else
只能管住自己之后的一行代码。并且,在没有{}
时else
自动与距离他最近的一个if
进行匹配。
int main () { int age = 10; if (age >= 18) printf("成年了!\n"); //这串代码不管是否满足 age>=18 的条件都执行的 printf("可以谈恋爱!\n"); else printf("未成年!\n"); //这串代码不管是否满足 age<18 的条件都执行的 printf("不能谈恋爱!\n"); //下面的大面什么都不会打印 //因为else与第二个if匹配了 /*int a = 0; int b = 1; if (a == 1) if (b == 2) printf("heh\n"); else printf("haha");*/ return 0; }
所以,为了代码结构清楚明了,我们要在每个if
与else
加上{}
来表明他们的作用范围。
二、switch分支语句
int main () { /*switch语句: switch(整型表达式){ 语句项; } 语句项: case 整型常量表达式 语句; */ return 0; }
case 整型常量表达式
用来进入一个分支,但是他不会跳出分支;所以下面的代码不管从哪个分支开始,都会执行到第七个分支才会停止。
int main() { int day = 0; scanf("%d", &day); switch (day) { case 1: printf("星期一\n"); case 2: printf("星期二\n"); case 3: printf("星期三\n"); case 4: printf("星期四\n"); case 5: printf("星期五\n"); case 6: printf("星期六\n"); case 7: printf("星期天\n"); } return 0; }
我们跳出分支语句就需要用到break
;
int main() { int day = 0; scanf("%d", &day); 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; } return 0; }
这样,我们的代码就不会执行到底了,但是这时候又会出现另一个问题,那就是总会有些人的脑子构造和我们不一样,1-7他偏偏都不喜欢,就喜欢这7个数之外的数,之后就需要用到我们的default
子句。
int main() { int day = 0; scanf("%d", &day); 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("输入错误\n"); break; } return 0; }
注意:每个switch语句只能有一个default子句。