if (表达式)
语句
表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏,C语言中0为假,非0为真 接下来我们举个例子就懂了,我们试着来实现:输入一个整数,判断是否为奇数,首先判断方法就是让这个整数模2,如果返回1,那么它就是一个奇数,示例如下:
if (表达式)
语句1
else
具体示例:其含义为,输入一个整数,判断是否为奇数,是奇数就打印,否则为偶数,再打印
可以发现,虽然输入的年龄小于18,可是还是会打印“可以谈恋爱了”,但是不会打印“成年了”,这就是上面说的if默认只能控制一条语句,那怎么可以让它控制多条语句呢,只需要把要一起控制的语句用大括号括起,如图:
这下输入15就不会打印“可以谈恋爱了”。同理,如果else后想要控制多条语句,也要用大括号括起。
上面的if语句就嵌套在else语句中。再比如实现这样的程序:输⼊⼀个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:⾮正数,如图:
如上就是对if语句进行了嵌套。
输⼊⼀个⼈的年龄 如果年龄<18岁,打印"少年" 如果年龄在18岁⾄44岁打印"⻘年" 如果年龄在45岁⾄59岁打印"中⽼年" 如果年龄在60岁⾄89岁打印"⽼年" 如果90岁及以上打印"⽼寿星"
答案放在本文最下方
C 语⾔⽤于⽐较的表达式,称为 “关系表达式”,⾥⾯使⽤的运算符就称为“关系运算符”,主要有下⾯6个
条件操作符属于三目操作符,也是C语言唯一一个三目操作符,需要用三个操作数,大致用法是: 条件 ?表达式1 : 表达式2,如果条件成立,即条件为真,那么执行表达式1,条件不成立,即条件为假,执行表达式2,比如将如下代码改造为使用条件操作符的表达式:
解析:b后面用的赋值操作符,就是把表达式a >5 ? 3 : -3的结果赋给b,如果输入的值大于5,那么就执行表达式1,结果就为3,如果输入的值小于等于5,那么执行表达式2,结果就为-3。 从该例子可以看出,一些简单的条件判断就可以使用条件操作符,会比if语句简单一些
使⽤条件表达式实现找两个数中较⼤值
答案在本文最后
逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式,主要有下⾯三个运算符 • ! :逻辑取反运算符(改变单个表达式的真假) • && :逻辑与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假) • || :逻辑或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假) 接下来我们进行一一介绍:
解析:a的值为10,b的值为20,a>b,返回的就是假,然后取反过后就是真,那么以上表达式!(a>b)返回值就是真,那么满足了if语句的判断,就在屏幕上打印了“hello world”
解析:我们输入的月份必须必须满足大于等于3月,并且小于等于5月,即表达式1和2都要为真才行,如果有一个为假那么就不会打印“春天”,故我们可以总结出规律: • 真 && 真结果为真 • 真 && 假结果为假 • 假 && 真结果为假 • 假 && 假结果为假
解析:这里有三个条件,要么月份等于3,要么月份等于4,要么月份等于5,只要其中一个成立就会打印春天,只有都不满足这三个条件的月份才不会打印春天,即只有所有表达式为假,才会返回假,其余都返回真,可以总结规律如下: • 真 || 真结果为真 • 真 || 假结果为真 • 假 || 真结果为真 • 假 || 假结果为假
输⼊⼀个年份year,判断year是否是闰年 闰年判断的规则:
答案在文末
除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。switch 语句是⼀种特殊形式的 if…else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式,特点就是大部分情况需要知道表达式准确的返回值,其语法为: switch (表达式) { case 值1: statement case 值2: statement default: statement } 上⾯代码中,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值, 就执⾏ default 分⽀
使用Switch语句为:
上述的代码中,我们要注意的点有: (1)case 和后边的数字之间必须有空格 (2)每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。
我们会发现原本余数是0,结果还继续打印了余数是1,原因是 switch 语句也是分⽀效果的,只有在 switch 语句中使⽤ break 才能在跳出 switch 语句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续往下执⾏,有可能执⾏其他 case语句中的代码,直到遇到 break 语句或者 switch 语句结束。就⽐如上⾯的代码就执⾏了case 0 的语句,还执行了case 1 中的语句
试想如果用户没有按要求输入1~7的数字呢?此时就可以使用default,比如:
此时如果用户输入1~7之外的数字,也就是不在case中的数字,就会显示输入错误,相当于一个提示信息
如果上述需求发⽣变化,变为:
如何简便地将要求完成 答案在本文末尾
这里我们利用了Switch语句中如果没有break,那么从对应case进入,并且实现对应语句后,并不会直接停下来,而是继续执行代码。输入1,2,3,4,5都会打印工作日,那么不如直接将打印工作日放在case 5,然后用break结束,假设从case 1进入,什么也没有,就会往下面继续执行,知道碰见了case 5,打印了工作日后,break停止了,输入2~4也是同理。根据这个逻辑,输入6,7都会打印休息日,就直接把打印休息日放在case 7,然后用break结束,原理同上。 由此可见,我们可以根据需求,灵活使用break,不能太呆板
如果有什么疑问,欢迎在评论区留言。