分支循环语句【if、switch、while】

本文介绍了C++中的分支结构if、switch及其子句default,和循环结构while,通过实例详细讲解了每个结构的用法、特点及常见问题,如if的语句匹配规则,switch中的break作用,以及如何处理输入缓冲区的换行符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c语言是一种【结构化】的程序设计语言,大致可分为三种结构:

  1. 顺序结构

  1. 选择结构【if switch】

  1. 循环结构【while for do..while】

现在将对这几种语言做一一的介绍。

if语句

语法结构:

if(表达式)

语句;

else if(表达式)

语句;

else

语句;

举一个简单的例子:

这便是一个最简单的if语句。如果if表达式中判断表达式为真,则执行该条语句。当然,我们也可以在其中加上一些其他的else if语句,使得整个程序变得更加饱满。

现在我们来看接下来的一个程序代码

按照正常的流程,我们可能会认为结果打印的是haha,但是让我们来看一下运行结果:

结果却是空白,这是为什么呢?

原因是if else的语句匹配。

请大家切记:else只与最离它最近的if匹配!

正常的程序代码应该是:

如果我们这样看的话,是否就能一眼明了到底谁跟谁匹配了呢。

所以说代码风格对于一个程序员来说是非常重要的。

switch语句

switch语句作为一个分支语句,与if语句的判断比较相似

语法结构:

switch(整形表达式)

{

case:语句;

}

现在我们来看一个例子:

录入一个1-7的数字,我们可以根据switch语句准确地判断该走哪条循环

但是我们要注意break的使用,我们来看一个没有合理使用break的例子。如果我们把case567语句后面的break去掉,结果就会变得不一样。

这是因为我们在去掉break后,从case5出来的语句不会跳出分支循环,而是会直接进入下一个case分支,一直到最后一个分支结束。

当然,我们可以对代码做一些简化,例如输入67的时候输出统一为休息日。只需要将上面代码稍作修改:

结果如下:

default语句

如果以上的case语句都没有合适的判断语句,我们可以使用default语句在判断条件,default语句和case语句是一样的结构,并且没有特别的位置要求,只要语法结构是对的即可。

while语句

语法结构:

while(表达式)

循环语句;

举一个简单的例子:打印1-10的整数。

while后面括号中的是判断条件,若在其中加上一条continue语句会怎么样呢?

continue语句在此次循环中会跳出此次循环,进入下一次循环的判断语句,因为判断条件一直成立,所以光标会卡在4之后不动了。

由此我们可得continue的作用是跳过本次循环,直接进入下一次循环。

getchar字符

我们在写代码时容易遇到一些问题,现在我们来看一个例子:

在我们输入密码之后,本来应该确的y与n还没打出来就直接跳转到确认成功与失败了,这是为什么呢?

这是因为,scanf与getchar并不是直接从键盘输入得到字符的。

键盘在输入一个字符后,字符会先送到缓冲区,scanf和getchar从缓冲区中取字符再送入变量中。

例如我们输入了123456作为密码,按下回车后,缓冲区中一共有123456\n这几个字符,但是scanf在接受到缓冲区数字后,只把123456拿走了,留下了一个\n,这就使得getchar在来到缓冲区后,发现缓冲区中的\n(回车键),便直接把\n带走了,从而导致我们还没输入确认密码就直接跳转了。

此时我们需要一条语句来处理这条空格

这样即可成功去掉多余的\n。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值