目录
在第一节的时候,我们学习过,C语言是结构化语言。他的结构可以分成:顺序结构、选择结构、循环结构、复合结构。那我们该怎样在程序中实现这些结构呢,就需要用到一些语句。
1、if 语句
if
语句是编程中常用的一种控制流结构,用于根据条件选择性地执行特定的代码块。它允许程序根据条件的真假来决定执行哪些语句。因此他可以实现选择结构
1.1 基本结构
他的基本语法结构是
如果表达式为真,则执行下面的语句,如果为假,则不执行
题目:用户输入成绩,如果大于等于60,打印出来及格,否则不显示任何内容
输入70,打印及格
输入50,不进行任何操作
1.2 else 的使用
还是刚才的问题,如果输入60分以下,打印不及格,就要引入else
结构:
表达式为真,执行语句1
表达式为假,执行语句2
1.3 多条语句
如果还是刚才的问题,如果成绩大于等于60分,不仅输出及格,还输出恭喜你,同样的,如果成绩小于60分,不仅输出不及格,还输出继续努力,该怎么写呢,这样写可以吗?
结果是发生错误。
因为:默认if 和else 语句都只能控制一条语句
如果想要控制多条语句,需要用{}括起来
比如刚才的代码可以改成
1.4 嵌套用法
我们再对刚才的问题进行改进
如果大于等于60分,再输出及格以后,我们再进一步分析
如果成绩小于80分,等级为B
如果成绩大于等于80分,等级为A
这个时候我们还可以这样写
这种在if-else 语句中继续使用if-else语句的用法称为嵌套用法
1.5 else的就近原则
请看这个代码
可能会理解成,如果分数小于60,输出不及格,如果大于60再判断是否大于80,如果是的,再输出你的等级是A
我们来运行一下
输入如果是70,理想结果是什么也不输出,因为没有大于80,后面程序就结束了
但是实际上的结果令人摸不到头脑
那是因为else 与跟他最近的if匹配,即使可以让它跟第一个的if保持缩进一致也没有用,所以代码的逻辑是,首先判断是不是大于等于60分,如果不是吗,程序结束了,什么也不输出,我们试一试50
如果输入的是70,先判断是不是大于60,是的继续判是不是大于80,如果不是,输出不及格
其实我们只要加上大括号就可以解决这个问题
这样程序就变正常了。
1.6 if- else if-else 的用法
如果在选择结构中,引入多条选择还可以使用这种书写方式
比如:输入一个数,判断是正数还是负数
2、关系操作符
在学习if语句的时候,我们说了if后面是表达式,那哪些表达可以使用呢,在C语言这些用来比较的表达式称为"关系表达式“,里面的运算符是“关系运算符”常用的有:
> 大于
< 小于
>=大于等于
<=小于等于
==等于(不是=,因为这是赋值操作)
!=不等于(不是=!)
举个例子,判断一个数是正数、负数、还是0
关系操作符不能连用
比如0<x<100,这样是不可以的,这样的话,其实是从左到右进行判断,首先
0<x 是不是成立的,结果实际上就两种0(代表假),1(代表真),无论1或者0肯定小于100,所以肯定为假
这个时候如果我们就要表达x大于0,而且是小于100的,这个时候我们需要用逻辑操作符
3. 逻辑操作符
&& 并且
|| 或者
!非
&&两个都满足的时候才为真,有一个为假的时候就假
a | b | a&&b |
0 | 0 | 0 |
非0 | 0 | 0 |
0 | 非0 | 0 |
非0 | 非0 | 非0 |
c语言中真是非0,假是0
|| 两个都假的时候才为假,有一个为真的时候就真
a | b | a||b |
0 | 0 | 0 |
非0 | 0 | 非0 |
0 | 非0 | 非0 |
非0 | 非0 | 非0 |
c语言中真是非0,假是0
! 原来为真,非后为假,原来为假,非后为真
a | !a |
0 | 非0 |
非0 | 0 |
所以针对前面说的对于关系操作符不能连用的情况,我们就可以用逻辑操作符的&&。
请看下面的代码,如果成绩在65-100之间,得到的等级是B,其他情况不输出任何东西,我们可以这样写
4. 条件操作符
条件操作符是三目操作符,他可以将if语句简化
语句1? 语句2 :语句3
他的含义是:如果语句1为真,执行语句2,整个表达式的值就是语句2的值,反正执行语句3,整个表达式的值就是语句3的值
比如判断两个整数谁大,并把大的数输出出来
5、Switch 语句
5.1基本结构
它的逻辑是:首先执行表达式的值,得到结果是几,就执行谁后面的语句,如果没有对应的就输出default 后面语句。
举个例子,比如输入一个数字,求被3除以后的余数
还可以再看个例子
输入1-7,输出的是对应的星期几,比如输入1,输出星期一
5.2 break 的作用
在switch
语句中,break
语句的作用是终止switch
块的执行,并跳出switch
语句。当switch
块中的某个case
条件被匹配成功时,程序会执行相应的代码块,并在执行完该代码块后遇到break
语句时跳出switch
语句。
如果没有break
语句,程序会继续执行后续的case
条件的代码块,直到遇到break
语句或switch
块结束。
比如刚才的代码,我们把break去掉
5.3 default 的位置
一般我们在使用switch case 语句的时候,把default放在最后。