在c语言中有三种程序结构。
1 . 顺序结构
2 . 分支结构
3 . 循环结构
本文章讲的是分支结构
文章目录
一、单分支语句1 . if 二、双分支语句1.if..else2.悬空else问题 多分支语句1.if...else if...else2.switch..casedefault以下是本篇文章正文内容,下面案例可供参考。
一、单分支语句
1 . if
if(表达式)\\此处对表达式进行判断,结果为真即运行,结果为假不运行。{语句;\\上面为真才执行此语句}//如果只有一条语句可以不加大括号,超过一条一句最好加上,//当然一条语句最好也加上,这里只是说可以不加,为什么要加下面悬空else问题会讲到。
单分支语句的作用就是在程序上多出一条分支,使程序多出一种可能,对if后的表达式进行判断,结果为真执行if里面的语句,结果为假直接跳过if 和其里面的语句在if表达式里面,0为假,非0即为真!
代码如下(示例):
int i = 0;if(i == 1)//因为i是0不等于1所以结果为0,也就是假。{printf("haha");//表达式为假,此处不运行。}
if i = 0;if( i == 0)//因为i是0等于0结果为1,也就是真。{printf("haha")//表达式为真,输出haha。}
二、双分支语句
1.if…else
双分支语句一定会执行其中一个语句,如果if后面的表达式为真的话执行语句1,为假的话执行语句2
用法如下。
if(表达式){语句1;//为真执行语句1。}else{语句2;//为假执行语句2。}
代码如下(示例):
int a = 0;if(a == 1)//因为a为0不等于1所以为假。{printf("hehe");}else{printf("haha");//表达式为假,执行语句2,输出haha。}
int a = 0;if(a == 0)//因为a为0等于0所以为真。{printf("hehe");//表达式为真,执行语句1,输出hehe。}else{printf("haha");}
2.悬空else问题
为什么前面说
代码如下(示例):
这里大家先猜猜程序结果是什么?答案在下面。
int main(){int a = 0;int b = 2;if(a == 1)if(b == 2)printf("hehe\n");elseprintf("haha\n");return 0;}
|
|
|
|
|
|
结果什么也没有输出,为什么?
因为else自动与距离最近的if进行组合,换种写法大家就明白了。
int main(){int a = 0;int b = 2;if(a == 1){if(b == 2){printf("hehe\n");}else{printf("haha\n");}}return 0;
所以写分支语句的时候要养成习惯,加上大括号,这样会避免没必要的麻烦。
多分支语句
1.if…else if…else
if(表达式1){语句1;//表达式1为真执行语句1}else if(表达式2){语句2;//表达式2为真执行语句2}else{语句3;//表达式1、2都不为真则执行语句3}
这里的else if 也可以写多个,按照情况决定,但是语句的结果只有一个!遇到表达式为真,则执行对应的语句然后退出此分支语句
代码示例
int main(){int age = 0;scanf("%d", &age);//假设这里输入19if(age<18)//19不小于18结果为假向下继续走{printf("少年\n"); }else if(age>=18 && age<30)//19小于30大于18结果为真{printf("青年\n");//输出青年退出分支语句}else if(age>=30 && age<50){printf("中年\n");}else if(age>=50 && age<80){printf("老年\n");}else{printf("寿星\n");}}
此程序输出青年
2.switch…case
switch(整型表达式)//这里是一个整形表达式{case 整形常量表达式1://当整形表达式等于整形常量表达式1的时候输入执行语句1语句1;break;//break用于终止循环,如果不写会一直向下执行直到程序结尾或者遇到break为止;case 整形常量表达式2://当整形表达式等于整形常量表达式2的时候输入执行语句2语句2;}
这里的case可以有多个,按照情况而定。
代码示例
int main(){int day = 0;scanf("%d",&day);//假设这里输入3switch(day){case 1://day不等于1向下执行printf("星期一\n");break;case 2://day不等于2向下执行printf("星期二\n");break;case 3://day等于3执行语句printf("星期三\n");//输出星期三break;//break的作用是跳出语句case 4:printf("星期四\n");break; case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;case 7:printf("星期天\n"); break;}return 0;}
default
switch case语句里面还可以加default,default的作用相当于else,只能存在一个,可以写在switch case的任意case中间,程序会先执行完所以case才会执行default,不过习惯上我们把它写在结尾