前言:
C语言是结构化的程序化语言,这里的结构就是指C语言的三大结构,分别是顺序结构、选择结构、循环结构,为什么只有这三种呢,其实我们仔细想一想,日常生活中的事情都可以拆分成这几种结构或者这几种结构的结合。
下面就由小怡为大家分享介绍一下选择结构吧!
1.if语句
1.1 if
if语句的语法形式如下
if(表达式)
语句
表达式成立,为真,则语句执行,表达式不成立,为假,则语句不成立。
在C语言中,0为假,非零为真(注意:这里的非零不是只包含正数,也包含负数)
另一种形式是如果有多条语句需要执行,就要加个括号。
if(表达式)
{
语句
}
代码如下
其执行程序就是下面这样的
1.2 else
下面我们来学一学如何来判断一个数是奇数还是偶数。
那就要用到if...else...语句了,语法形式如下
if(表达式)
{
语句1;
}
else
{
语句2;
}
代码如下
执行程序如下
1.3 嵌套if
在if...else语句中,能进行嵌套使用,构成多重判断,就是在if的语句中可以包含if...else语句。
eg:要求输入一个整数,判断输入的数是0,还是正数或者负数,代码如下:
再比如,输入一个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:非正数。代码如下
有了嵌套if语句,就能够完成更多复杂逻辑的判断。
1.4 悬空的else
如果有多个if和else,可以记住这样一条准则,else总是跟最接近的if匹配
代码如下
这个是加了大括号的,如果不加大括号,就会是这样
#include<stdio.h>
int main()
{
int n=0;
int m=2;
if(n==1)
if(m==2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
上面的代码排版让我们以为else是和第一个if配对的,当if语句不成立,自然想到的就是执行else子句,打印haha,但实际上else是和第二个if配对的,这样后边的if...else语句是嵌套在第一个if语句中的,如果第一个if语句就不成立,嵌套if和else就没机会打印了,最终什么也不打印。
所以只要带上适当的大括号,代码的逻辑就会更加的清晰,所以我们在写代码的时候要注意括号的使用,让代码的可读性更高。
2.switch语句
除了if语句外,C语言还提供了switch语句来实现分支结构。switch语句是一种特殊的if...else结构,用于判断条件有多个结果的情况。把多重的if...else语句改成更易用,可读性更好的形式。
switch(expression)
{
case value1:statement
case value2:statement
default:statement
}
根据表达式expression不同的值 ,执行相应的case分支,如果找不到对应的值,就执行default分支。
注意:1.switch后的expression必须是整型表达式;
2.case后的值,必须是整型常量表达式。
2.1 if语句和switch语句的对比
比如:输入任意一个整数值,计算除3之后的余数
下面是使用if语句完成的:
如果使用switch语句改写就是这样
注意:1.case和和后边的数字之间必须有空格;
2.每一个case语句中的代码执行完成后,需要加上break,才能跳出这个switch语句。
所以要注意根据自己的需求使用好break哦。
2.2 switch语句中的case和default的顺序问题
switch中的case语句和default语句是没有顺序要求的,只要满足需求就可以,不过我们通常是把default子句放在最后处理。
2.3 switch语句中的break
switch语句也是分支效果的,但是如果没有break,它就会依次一步一步执行,而不是执行完这个就跳过后面的了。只有在switch语句中使用break才能跳出switch语句,如果遇不到break就有可能执行其他case中的代码,直到遇到break或者switch语句结束。
switch语句中的break语句是非常重要的,能实现真正的分支效果。
但是,也不是每个case语句都有break语句,这就得根据实际情况来看了。
2.4 switch语句中的default
在使用switch语句的时候,我们经常可能遇到一种情况,比如switch后的表达式中的值无法匹配代码中的 case语句,这时候就不得不做处理,得在switch语句中加入default语句。
🌈✨好啦,本次的分享就到这里啦,小怡希望大家能一起努力学习,“如果命运是世界上最烂的编剧,那么你就要争取做你人生最好的导演”,不用去忙着焦虑,我们只管勇敢!❤️