C生万物之分支语句即if...else与switch语句详细介绍<三>
今天是大年初五,祝看到这段话的朋友,24年发发发,龙年大吉
文章目录
- 前言
- 一.if语句
- 1-1 if
- 1-2 .else
- 1-3.分支中包含多语句
- 1-4.嵌套if
- 1-5.悬空else问题
- 二.switch语句
- 1-1 if语句和switch语句的对比
- 2-2switch语句中的default
- 2-3switch语句中的case和default的顺序问题
前言
C语言是结构化的程序设计语言,这里的结构指的是顺序结构,选择结构,循环结构。其实我们的日常生活处理事情也是这三种结构的组合。通常我们使用 if ,switch来实现分支结构,用while,do while,for语句实现循环结构。
一.if语句
1-1 if
- if(表达式)
- 语句
()中表达式成立为真,语句执行,反之则不执行。
在C语言中,0表示假,非零表示真,也就是表达式为0则语句不执行,若非零,则语句执行
例子如下:输入一个整数判断是否为奇数
#include int main() { int num = 0; scanf("%d",&num); if(num % 2 == 0) printf("%d是偶数\n",num); return 0 ; }
1-2 .else
我们知道if语句之后还想得到相反的结果,这里我们就要用到else。
- if(表达式)
- 语句1
- else
- 语句2
例子如下:输入一个整数判断是奇数还是偶数
#include int main() { int num = 0; scanf("%d",&num); if(num % 2 == 0) printf("%d是偶数\n",num); else printf("%d是奇数",num); return 0 ; }
1-3.分支中包含多语句
默认if和else只控制一条语句也就是说
#include int main() { int num = 0; scanf("%d",&num); if(num % 2 == 0) printf("%d是偶数\n",num); printf("hello"); return 0 ; }
在上面的代码中,不论数字是否为偶数,都会在屏幕上打印hello,因为if或者else只能控制一条代码,则改正代码为:
#include int main() { int num = 0; scanf("%d",&num); if(num % 2 == 0) { printf("%d是偶数\n",num); printf("hello"); } return 0 ; }
这样就只会在输入偶数时打印hello。
1-4.嵌套if
在if else语句中,else还可以与另一个if语句连用,构成多重判断。比如:要求输入一个整数,判断输入的整数是0,还是正数或负数
#include int main() { int num = 0; scanf("%d",&num); if(num == 0) printf("输入的数字为0\n"); else if(num>0) printf("输入的数字为正数\n"); else printf("输入的数字为负数\n"); return 0 ; }
1-5.悬空else问题
如果有多个if 和else,可以记住这样一条规则,else总是和最近的一条if匹配。
补充说明
表达式中关系比较,一般返回值为0或1来表示真假,关系表达式常用于if或while结构。
注意
相等运算符==与赋值运算符=是两个不一样的运算符,不要混淆。
二.switch语句
除了if语句外,C语言还提供了switch语句来实现分支结构。其实switch语句是一种特殊的if else结构,它简化了多重else if,增加了可读性。
switch(expression)
{
case 1:
case 2:
}
上述代码中,根据表达式expression不同的值,执行相应的case分支,若找不到则执行default
注意
switch后的expression必须是整型表达式
case后的值,必须是整形常量表达式
1-1 if语句和switch语句的对比
eg:输入任意一个整数值,计算除3之后的余数
如果用if语句完成:
#include int main() { int n = 0; scanf("%d",&n); if(n%3 == 0) printf("余数是0\n"); else if (n%3==1) printf("余数是1\n"); else printf("余数是2\n"); return 0 ; }
用switch语句改写如下
#include int main() { int n = 0; scanf("%d",&n); switch(n%3) { case 0: printf("余数是0\n"); break; case 1: printf("余数是1\n"); break; case 2: printf("余数是2\n"); } return 0 ; }
注意
1.case和后面的数字之间必须有空格
2 每一个case语句执行完成后,只有加上break,才能跳出这个switch语句若不加break,则进行完该条分支后会继续进行下一条分支。
2-2switch语句中的default
在使用switch语句中,我们可能遇到表达式的值无法匹配到代码中的case语句,这个之后就需要加上default子句
switch(expression)
{
case 1:
case 2:
default:
}
代码示例如下
#include int main() { int day = 0; scanf("%d",&day); switch(day) { case 1: case 2: case 3: case 4: case 5: printf("工作日\n"); case 6: case 7: printf("休息日\n"); default: printf("输入错误,请重新输入\n"); } return 0 ; }
2-3switch语句中的case和default的顺序问题
其实在switch语句中,case语句和default语句没有顺序要求,只要你的顺序满足实际需求即可。但是通常,我们把default语句放在最后处理。
看到这里,能不能留下您宝贵的赞,鼓励我一下,非常感谢!!!
(如有错误,麻烦各位大佬评论区指正,感谢!)
…下篇文章将详细介绍循环语句