C语言中的分支语句用法解读
作者:wzsygcg
前言
C语言是一种结构化的程序设计语言,其由三大基本结构组成,分别为:顺序结构,选择结构,循环结构,它们组成的算法结构可以解决任何复杂的问题。
对于顺序结构指的就是从main函数入口开始,从头到尾依次执行代码。
对于选择结构,顾名思义就是进行选择,其有两种语句:
1.if语句
1.1 if语句的语法形式
if(表达式)
语句
1.2 if语句用法
例:输入一个整数,判断是否为奇数
由于表达式判断的依据为真,若为非0值,则执行语句,为0,则不执行语句,所以奇数判断依据 a%2==1 可以略为 a%2.
由上我们可以不由的想,若需要判断出偶数呢?
这就涉及到了if..else语句了
2.if..else语句
2.1 if...else语句的语法形式
- if(表达式)
- 语句1
- else
- 语句2
2.2应用
1.对上文的代码进行完善
2.输⼊⼀个年龄,>= 18岁就输出:成年,否则就输出:未成年
若我们要更加细致的区分不同年龄段的称谓,我们就需要多条的if...else语句进行连用,即
3.嵌套if语句
if else语句可以进行连用构成多重判断。
3.1例
输⼊⼀个⼈的年龄 ,如果年龄<18岁,打印"少年" ,如果年龄在18岁⾄44岁打印"⻘年" ,如果年龄在45岁⾄59岁打印"中⽼年" ,如果年龄在60岁⾄89岁打印"⽼年" ,如果90岁及以上打印"⽼寿星"。
常见编译错误1
问题:
修改后:
4.悬空else问题
对于这个问题,我们需要知道一个规则--else总是与最接近的if匹配
例:
对于上图代码,最后输出的结果是什么呢?
结果其实是没有输出的,这就是典型的悬空else问题。加了大括号后会便于理解,由于else总是与最接近的if匹配,所以在 a=0 的情况下,是不符合if表达式中条件的,故不会有输出。
由此可知,适当的加上大括号会使得代码的可读性高,逻辑更清晰。
当然,大括号还会改变与else最接近的if语句,如:
这样就会输出 haha 。
5.关系操作符
> ,>= , < , <= , == , !=
以上都是关系操作符,其返回 0\1 ,0表示假,1表示真。
常见编译错误2. 要注意区别 == 与 = ,== 是表示相等,若 A==B 表示A与B的值相等,但若是 A = B 则是表示将B赋值给A,两者不能混淆。
温馨小提示:若当一个变量与一个常量比较相等时,建议将常量值放在 == 的左边,这样在写错了== 之后编译器会进行报错,便于检查代码。但若是将常量值位于 == 右边则不会出现该报错,但程序最后的结果时错误的。
常见编译错误3.关系运算符不宜连用,会导致程序结果出错
上图就出现了错误,其执行流程是这样的:
先是a与47进行比较,得出0,后0与100进行比较,得出1,结果为真,返回 hehe。
那在C语言中如何表达 47<=a<=100?这就需要使用到逻辑操作符。
6. 逻辑操作符
- && :逻辑或 ---真真为真(真就是非0)
- || :逻辑与 ---假假为假(假就是0)
- !:逻辑非 ---改变单个表达式的真假
所以就可以表示为 47<=a&&a<=100 ; 若要表示 a<=47或 a>=100,则就是 a<=47||a>=100;
若要表示a不等于47,就是 a!=47。
例:输入年数,判断是不是闰年
7.短路
在C语言逻辑运算中有一个特点,都是先对左侧的表达式求值,再对右侧的表达式求值,其顺序是固定的,所以在左侧的表达式已经符合逻辑运算符的条件的时候,右侧的表达式将不会被执行,这就是短路。
例:
1.&&的短路
由于a++是先使用,再+1,所以当a=0的时候进行计算,故左侧表达式为假,所以右侧的表达式不会进行计算,由此输出 1 4 5 0。
2.||的短路
同理,由于a++和c++的计算结果为真(1),所以后面的b++不会被计算了,最后输出 1 4 6 1。
8..条件操作符
是C语言中唯一的三目操作符,其形式为:
例:比较两个数的大小
9.switch语句
9.1 switch语句是一种特殊的if...else 结构,适用于判断条件有多少个结果的情况。提高了代码的可读性,更方便使用。
9.2 switch语句的语法构
switch(整型/字符型表达式)
{
case(整型常量表达式1):(语句)
:
default:(语句)
:
}
根据表达式计算出的不同值,程序将会执行不同的case语句。若是找不到对应的case语句,就会执行default分支。
例:1.
2.输⼊⼀个1~7的数字,打印对应的星期⼏
例如:
- 输⼊:1 输出:星期⼀
- 输⼊:2 输出:星期⼆
- 输⼊:3 输出:星期三
- 输⼊:4 输出:星期四
- 输⼊:5 输出:星期五
- 输⼊:6 输出:星期六
- 输⼊:7 输出:星期天
变题:
1. 输⼊1~5,输出的是“⼯作⽇”;
2. 输⼊6~7,输出“休息⽇”.
若用户输入的不是1-7的数字该如何编写代码?
这时就可以借助default了。
switch语句中的case子句和default子句是没有顺序要求的,只要满足实际需求就行。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。