![零基础C语言学习笔记](https://wfqqreader-1252317822.image.myqcloud.com/cover/191/36710191/b_36710191.jpg)
5.2 if语句的基本形式
if语句可以判断表达式的值,然后根据该值的情况控制程序流程。if语句有if、if...else和else if 共三种语句形式,下面讲解每种语句形式的具体使用方式。
5.2.1 if语句
if语句主要用于对表达式进行判断,并且根据判断的结果决定是否进行相应的操作。if语句的语法格式如下:
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_2.jpg?sign=1739503189-szBI6dDbMa9ACYlfbA7RILqj3YEGoeRw-0-e04dabf0bfcfcdce26f9fd4e9090c9dc)
if语句的执行流程图如图5.1所示。
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_3.jpg?sign=1739503189-yS4USeOKB7AQpjeZFJfEJSlL0QmLGpLi-0-b7974a462f574c098eedacc420c8368c)
图5.1 if语句的执行流程图
例如:
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_4.jpg?sign=1739503189-xEZTpH2XP5dzlf1X0vEI25cH44JHpk5R-0-f273b5f415fa87cb9cb26d479ce29273)
上述代码的含义:判断变量iNum的值,如果变量iNum的值为真,则执行后面的输入语句;如果变量iNum的值为假,则不执行后面的输入语句。
在if语句的括号中,不仅可以判断一个变量的值是否为真,还可以判断表达式的结果是否为真。例如:
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_5.jpg?sign=1739503189-wcRe0uQgewXpkiP1u29MBTz3bE7IOIEr-0-a8c66a99e17cc385c18df8b9d60021fa)
上述代码的含义:判断表达式iSignal==1的结果,如果表达式iSignal==1的结果为真,则执行后面的输出语句;如果表达式iSignal==1的结果为假,则不执行后面的输出语句。
上述两行代码中的if语句的执行部分只调用了一条语句,如果执行部分要调用两条语句,则可以使用大括号将执行部分括住,使之成为语句块。例如:
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_6.jpg?sign=1739503189-vruwdG1U09lWbVgTqvAPdYvWMxhZnxSF-0-c376b7e329971c0d99af883a0b5d7501)
将执行的语句都放在大括号中,当if语句的判断条件为真时,就可以全部执行。使用这种方法的优点是可以更规范、清楚地表示if语句中执行语句的范围,因此建议大家在使用if语句时使用大括号将执行语句括起来。
学习笔记
在使用if语句处理问题时,一定要将条件描述清楚,如下面的语句是错误的。
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_7.jpg?sign=1739503189-fAQlS6O59pHdwGfE0WWDzlfpTH6RCcZz-0-91cfb0b2d08525c1e8fd5caf86a741a5)
初学编程的人在程序中使用if语句时常常将如下两个判断弄混。
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_8.jpg?sign=1739503189-SXSMtVPAP79I9JQ21QNWy1iDngTPhi7E-0-b44d601e2c65ce1945f3f1daea85a5b8)
这两行代码中都有变量value,虽然变量value的值相同,但是判断的结果却不同。第一行代码表示判断变量value的值是否为真,第二行代码表示判断表达式value==0是否成立。假设变量value的值为0,那么第一个if语句的判断结果为假,所以不会执行if语句后的语句;但是第二个if语句的判断结果为真,所以会执行if语句后的语句。
5.2.2 if...else语句
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_9.jpg?sign=1739503189-BXSmyz702cQfRanmpSfEg2nrBo72OyZc-0-578a02d602b962bd88b0e26df70279fb)
除了可以指定在条件为真时执行某些语句,还可以指定在条件为假时执行其他语句,这在C语言中是利用else语句完成的。例如,买彩票,如果中奖了,就买轿车,否则买自行车。彩票中奖示意图如图5.2所示,对应的彩票中奖流程图如图5.3所示。
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_10.jpg?sign=1739503189-wxscQFFWrQRIkOWi1sdlzE37gjY9FlDk-0-e6705be8e9961eb393c113043dd76e0f)
图5.2 彩票中奖示意图
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_11.jpg?sign=1739503189-VGN3wM9wZHMf8FHBR8RLWrGbAlsFglhC-0-51bcf114671bbc4659277e0476b513dd)
图5.3 彩票中奖流程图
从图5.3可以看出,if...else语句的语法格式如下:
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_12.jpg?sign=1739503189-EutLibfgwFVO8rLmxjP7zhIwLsQXAlJt-0-d38133478655f30e79c511b2c08a2813)
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_13.jpg?sign=1739503189-9V0051pWkT8Zlw3D1t8yYlTgHp8nDP4q-0-491afca6e9e61d0e80fe12e5d998fb96)
if...else语句的执行流程图如图5.4所示。
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_14.jpg?sign=1739503189-hrvJ4pPhiEzQVbwbKyqZYT1DpJIcfEQ0-0-4b7e649e744b2fabb5e183ced0fd124b)
图5.4 if...else语句的执行流程图
在if后的括号中判断表达式的结果,如果表达式的结果为真,则执行语句块1;如果表达式的结果为假,则执行语句块2。例如:
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_15.jpg?sign=1739503189-bxLbT4mMAro5ZjVMDuohSwsJCFwSWrYk-0-ffd73b8b3ccc1f5bcbb57b256421861b)
在上面的代码中,如果判断变量value的值为真,则执行if后面的语句块。如果判断变量value的值为假,则执行else后面的语句块。
学习笔记
else语句必须跟在if语句后面。
5.2.3 else if语句
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_16.jpg?sign=1739503189-gqZ9AEEuSPHnGNVcaS3P27z0Bqxm8Uy0-0-ed1eea56281fad37ecc22e2409a4220f)
else if语句主要用于对一系列互斥的条件进行检验。例如,某4S店进行大转轮抽奖活动,根据中奖的金额可以获得不同类型的车,中奖的金额段之间是互斥的,每次抽奖结果都只能出现一个中奖的金额段。这个抽奖过程可以使用else if语句实现。
else if语句的语法格式如下:
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_17.jpg?sign=1739503189-S7GZOek00xYGJNm4jygkUg6hyIg9hP6O-0-6e8adec4662ff27544c5480d7b7abc00)
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_18.jpg?sign=1739503189-dyLfBpozq57mviJBBQjKvquomZLcVRAT-0-0b59a9f6d134021431e5d63f15251155)
else if语句的执行流程图如图5.5所示。
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_19.jpg?sign=1739503189-dOSmKtFQEBjjQsJHKpQAODOtOJPMLYzd-0-c09de22dc55ca2fd25128a0545c98a11)
图5.5 else if语句的执行流程图
在图5.5中,首先对if语句中的表达式1进行判断,如果表达式1的结果为真,那么执行语句块1,然后跳过else if语句和else语句;如果表达式1的结果为假,那么对else if语句中的表达式2进行判断,如果表达式2的结果为真,那么执行语句块2,然后跳过后面的else if语句和else语句;以此类推,当所有表达式的结果都为假时,执行else后的语句块n。例如:
![img](https://epubservercos.yuewen.com/9B6764/19471983208811106/epubprivate/OEBPS/Images/txt006_20.jpg?sign=1739503189-f0uKZ8N4YK7GsJJNdjtm6Z6o7WN3orV2-0-0375831802d841ee65bd040b238327c1)
上述代码的含义如下:
●使用if语句判断表达式iSelection==1的结果是否为真,如果结果为真,那么执行if后面的语句块,然后跳过后面的else if语句和else语句。
●如果表达式iSelection==1的结果为假,那么使用else if语句判断表达式iSelection==2的结果是否为真,如果结果为真,则执行第一个else if后面的语句块,然后跳过后面的else if语句和else语句。
●如果表达式iSelection==2的结果为假,那么使用else if语句判断表达式iSelection==3的结果是否为真,如果结果为真,则执行第二个else if后面的语句块,否则执行else后面的语句块。也就是说,当前面的所有判断都不成立(为假值)时,执行else后面的语句块。