一、前言
在c语言的学习中,循环结构非常重要,主要有while循环,do while循环,for循环,steam,让我们一起学习一下。
二、分支
1.if语句
括号中结果为真,则执行语句,括号中结果为假,则跳出。
例子:输入值,判断是否为四的倍数。
以上代码还有一些地方可以做的更好,比如若不是四的倍数,则对输入者进行提示。那么就有了else语句可供使用。
2.else语句
1 if(条件)
2 语句1
3 else(条件)
4语句2
在第一个括号中为真则执行语句1,为假,则判断第二个括号中条件,为真,则执行语句2,为假则跳出循环。
例子:(同上)
ps:(while语句是为了方便多次输入,具体后面会讲到)
if和else语句有一些用法规则,具体解释如下
3. 分⽀中包含多条语句
if和else语句后只能影响一条语句。给大家举一个例子。
例子:
那么根据上图我们明显发现了问题,当输入的数字不是四的倍数时,没有跳出循环,输出了:“不是五的倍数”。而当数字是四的倍数时,输出了两条,说明if只读取了下面的第一条信息。
为了让大家看的更清楚,请看下图调试结果。
可以看到右边,当我们的a输入值为5时,系统在if筛选后直接跳到了第43行代码,也就意味着if并不会影响43行代码。
那么如果我们想要同时输入两条代码要怎么办呢?
我们需要用大括号括起来
这样就可以同时输出两行内容。
大括号是非常重要的,建议每次写都带上大括号,一是避免发生错误和歧义,二是使看代码的人能更容易理解你的代码,自己后期调试,也好改错。
大括号也关乎到else的归属问题。
为了让大家更直观了解大括号的好处,请大家看以下代码。
例子:
如图就出现一个问题else是归第一个if还是归第二个if。
以上代码如果我希望的是如果是四的倍数,那么进入第二个if看是不是五的倍数,如果是就输出:“是四和五的倍数”。如果不是就跳出循环。如果不是四的倍数就输出:“不是四的倍数”。那么这个程序可以实现吗?
那么看一下代码运行结果
那么从图中发现出现错误了,那么我们根据结果可以推测,else属于第二个if。当不是五的倍数时,输出:“不是四的倍数”。
接下来我们调试验证一下。
我们发现,当a为16时,走过第一条if后,接下来执行了第二个if,这并不是我们的程序目的。
这个时候就体现出大括号的重要性了。
如此,达到了我们的目的,并且我们后期看,或者别人看也不会出现问题。
由此我们也得到一个结论,就是else会默认跟随最近的一个if。(我们首先要记得带大括号,保证我们自己的代码不出问题,如果看别人代码遇到一些人写错,也要知道原因。)
4.嵌套if
在 if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。
如图代码就可以可以实现数字是不是四的倍数或五的倍数。(你要是喜欢,你可以写一万个else if 去实现你的目的)
PS:最好都带上大括号,哪怕后面只执行一条语句。
三.操作符
1.关系操作符
有以下操作符
a>b⼤于运算符
a<b小于运算符
a<=b小于等于运算符
a>=b⼤于等于运算符
a==b相等运算符
a!=b不相等运算符
这些操作符比较简单,只有相等操作符需要注意。
“==”是判断是否相等。
“=”是赋值。
关系表达式通常返回 0 或 1 ,表⽰真假。
以上两张图片,印证了两个事情.
1."=“是赋值符号.
2.if的括号内0代表假,其他数字为真(括号内为bool式,不是假就是真,其他数字被识别成"1”)
当"a=3"时是把3赋值给a的意思.
2.条件操作符
条件操作符也叫三⽬操作符,需要接受三个操作数的,形式如下:
exp1 ? exp2 : exp3
条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果exp1 为假, exp3 计算,计算的结果是整个表达式的结果。
例子:
可简化为:
3.逻辑操作符
逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式,主要有下⾯三个运算符。
• ! :逻辑取反运算符(改变单个表达式的真假)。
• && :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。
• || :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)。
3.1、逻辑取反运算符 !
⽐如,我们有⼀个变量叫 flag ,如果flag为假,要做⼀个什么事情,就可以这样写代码:
如果 flag 为真, !flag 就是假,如果 flag 为假, !flag 就是真
所以上⾯的代码的意思就是 flag 为假,执⾏if语句中的代码。
4.2 、与运算符
&& 就是与运算符,也是并且的意思, && 是⼀个双⽬操作符,使⽤的⽅式是 a&&b , && 两边的表达式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假。
例子:
意思就是输入数字要同时满足是四和五的倍数。
4.3、 或运算符
|| (shift+enter键上面的键)就是或运算符,也就是或者的意思, || 也是⼀个双⽬操作符,使⽤的⽅式是 a || b , ||两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。
例子:我们说⼀年中⽉份是12⽉或者1⽉或者2⽉是冬天,那么我们怎么使⽤代码体现呢?
4.switch语句
除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。
switch 语句是⼀种特殊形式的 if…else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式。
switch (expression)
{
case value1: statement
case value2: statement
default: statement
}
上⾯代码中,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值,就执⾏ default 分⽀。
接下来我们拿switch与if进行对比。
例子:输出数字除以3后的余数。
(1)switch:
(2) if :
两者在代码长度上差距不是太大,但是面对多种情况分类,switch函数具有更清晰,更简洁的特点。
4.1、break语句
在上图switch函数中,我们看到了“break;”,那么其中break起到什么作用呢?
我们把break去掉看一下 :
我们发现当数字小时,输出还没有问题,当数字大了之后,结果出现了错误。
那我们调试找一下原因 :
我们对函数进行改造,为了计数一共走了几次case,i的值就是走过case的次数。
我们发现当输入值为40时,函数再走过一次case时(i=1),系统又读到了第69行,原因是函数在进行一次循环后没有跳出,又一次被“%3”了,才出现了这种情况,所以break函数的作用就是在执行一次之后跳出去。
4.2、default语句
有的时候我们在现实设计中,会出现其他情况,不在我们所设置的情况中,那么default就可以解决这一种情况。
就比如我们在设计小游戏时,我们希望用户输入1开始游戏,输入0结束游戏,但是现实中可能会出现输入别的数字的情况,为了增加我们程序的容错性,那么我们就可以用default解决。
例子 :
这样就可以增强容错。
####猜数字小游戏####
感兴趣的可以点卡链接看一下。
四、循环
1.while循环
我们来把if和while进行一下比较。
if (条件)
表达式
while (条件)
表达式
这样看起来好像差不多?
那我们写一个程序直观的看一下。
if :
while :
我们发现while陷入了死循环,while的括号中其实相当于bool式,当括号内为1时,也就是为真,进入循环打印“啊啊啊啊啊啊”,然后打印完了之后再次回来进行判断,发现还是1,再次进入循环。这就是while的基本原理。
这样也就能接上之前“while(scanf(“%d”.a))”可以重复输入的原因了。
只要我输入值,那么就会进入循环,只不过是死循环。这是唯一的缺点,如果想优化可以写成
whilea(scanf(“%d”,a)!=EOF)
超详解 - 如何理解C语言中while(scanf(“%d“, &num) != EOF)这一表达式?
(这是我粘别人的)
2. for循环
while循环需要我们对变量赋值,对循环进行判断,然后对循环变量进行调整。
那么有没有更简便的方法呢?
for(表达式1;表达式2;表达式3) 赋值 条件 循环
语句
表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整
for 循环就可以简便这一过程。
我们来举一个例子对比一下。
例子 : 循环打印1–10,十个数字。
while :
for :
由此可以看出for循环的优势,可以更简洁的对表达式进行处理。
接下来我们来看一个特殊的例子:
(1)
(2)
大家先看看这两个程序有什么不同,以及sum1和sum2的取值是否有不同。
*
*
*
*
*
*
*
*
*
(1)
(2)
所以想到了吗?
两给程序仅仅相差一个” ; “结果相差这么大。
那原因是什么呢?
我们来调试看一下:
我们发现带上” ; “的for表达式经过之后直接b直接变成11。
”;“其实就相当于一个句号。直接把整个语句执行完了而没有进行下面的程序,所以b直接变成了11。所以大家在写代码时一定要记得for循环不能带”;“。
3. do while循环
有的时候我们需要先进行一次循环然后再判断,那么就可以用do while循环。
- do
- 语句
- while(表达式)
这个就可以用于小游戏设计,进行菜单的打印。
这样从一开始就就有一个菜单。方便我们观看。
五、总结
本文总结性的介绍了分支和循环语句
1.分支语句主要有if,else。
2.操作符有关系操作符,条件操作符,逻辑操作符,switch语句。
3.循环有while循环,for循环,do while循环。
4.我只是一个初学小白,希望我们共同进步。
5.感谢大家支持!如果表述不当之处,欢迎各位斧正!
6.
与君共勉!!!!