分支语句和循环语句都属于控制语句,控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构)
在c语言中0表示假非0表示真
分支语句
if else语句
单分支语句
如果表达式为真,则执行语句。
多分支语句
悬空else
else与离其最近的未匹配的if相匹配
多语句的情况
如果要执行多语句则要使用代码块
switch case语句(switch允许嵌套使用)
常用于多分支的情况
case相当于入口,输入几就从几号入口进去,然后程序会依次向下执行,当然这并不符合我们的要求,我们则需要break来打破,直接跳出switch语句
还有一种情况就是输入不一样的入口,得到相同的结果
循环语句
while语句
表达式为真则执行循环语句,然后继续判断表达式的真假,如果为假则跳出循环
关于getchar问题的了解
看一串代码
编译器并没有报错,但是输出结果并不是我们想要的
由上图可知,我们输入的密码是123456这个123456被scanf获取走了,但其实还有一个隐性的字符存在就是空格('\n')这个字符被getchar获取走了,所以程序才会直接输出。
那么怎么避免这种情况出现呢?首先我们需要了解输入缓冲区这个知识点
输入缓冲区:就是我们在键盘上输入的字符都会存放到输入缓冲区中,scanf和getchar会获取输入缓冲区里面里面的字符。(scanf和getchar都是输入函数,scanf只能获取空格前面的字符。)
我们可以在写一个getchar输入函数(这个getchar并不执行),让它把里面的空格给获取走,那么剩下的那个就可以自由的输入了。代码如下
还有一种情况就是scanf已经获取了它所需要的字符,但是后面还有许多字符,我们是不是要写许多个getchar把输入缓冲区清空。并不是这样的。我们只需要把getchar写如while循环中。
代码如下
for语句
上图是for循环语句的执行流程。
不可在for循环体内修改循环变量,防止for循环失去控制
建议for语句的循环控制变量的取值采用“前闭后开区间”写法
for循环变种