if语句
1.单分支if
- 单分支if的语法结构
if(表达式) { 代码块 code; }
这里我使用流程图的方式为大家展示
#include<stdio.h> int main() { //单分支 int age = 0; scanf("%d", &age); if (age >= 18) { printf("成年\n"); } return 0; }
计算机在处理if语句时,一般要先判断if()中表达式的真假再执行下一步
那计算机是如何判断真假的呢?
计算机将0判断为假,将非0判断为真
例如,上述代码中如给
age
输入8
,则age >= 18
为假,就不会执行if里面的语句,从而不会打印成年
2.多分支if语句
- 多分支if语法结构
if(表达式) { 代码块 code; } else if(表达式) { 代码块 code; } else if(表达式) { 代码块 code; } ...... else { 代码块 code; }
如同人生不止一个选择,同样的if语句也有多个分支
int main() { int age = 0; scanf("%d", &age); if (age >= 18) { printf("成年\n"); } else { printf("未成年\n"); } return 0; }
简单解释一下,上述代码如若if中表达式为真则执行if内语句为假则执行else内语句
上面呢仅仅是双分支,当然你也可以无限套娃
例:
int main() { int age = 0; scanf("%d", &age); if (age >= 18 && age < 35) { printf("成年\n"); } else if (age >= 35 && age < 60) { printf("中年\n"); } else if (age >= 60 && age < 90) { printf("老年\n"); } else if (age >= 90) { printf("老寿星\n"); } else { printf("未成年\n"); } }
3.多个if与if – else if 区别
细心的小伙伴已经发现这个标题不一般,没错这个是重点
这里我用代码为大家解惑
在上述多个if代码中,给
age
输入23
屏幕上既打印了青少年
又打印了成年
而在if-- else if 代码又是如何呢?我们接着往下看
在if-- else代码中我们依然给
age
输入23
,与多个if不同的是它仅仅打印了青少年
第一次的时候我也懵逼了,其实呢在多个if语句中计算机会每一个if语句都判断一下,只要条件为真if后面的语句都会执行,而在if-- else if语句中只要一个else if判断为真,其后面所有的else if 语句都不会在判断了
switch 语句
在C语言中并非只有if语句是分支语句,它还提供了switch语句
if语句在分支过多情况下用起来极为不便,而switch语句则弥补了这一缺点
- switch的语法结构
switch(表达式) { case 常量表达式1: 语句1; case 常量表达式2: 语句2; …… case 常量表达式n: 语句n; default: 语句n+1; }
注意:
- switch后面只能跟整形表达式
- case后面只能跟整形常量表达式
当a的值与case后的值一样时,就执行对应case后的语句
#include<stdio.h> int main() { int a = 0; scanf("%d", &a); switch (a) { 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"); default://当没有找到入口,就走这一条 printf("输出错误\n"); } return 0; }
运行上述代码
你会发现输出的结果并非所愿,这是因为当程序从
case 3:
进去后并没有跳出switch语句,这个时候你就需要break
的帮助了
是不是输出想要的答案了😄
✌️一些见解
- if,else if以及else后语句尽量用{ }括起来
- else总是与它最近的if相对应
- case语句后面记得跟break