C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实
现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种结构的组合。
我们可以使⽤
if
、
switch
实现分⽀结构,使⽤
for
、
while
、
do while
实现循环结构。
接下来我将从分支结构与循环结构以及分支循环的嵌套来介绍。
一,分支结构
1,if语句
if语句的语法形式如下
![](https://img-blog.csdnimg.cn/bed76ec1dc764dfda7e6be48c20b3eb8.png)
在c语言中
0表示假,非0表示真,上述语句遵循:如果表达是为真(为非0)则执行,为假(为0)则不执行。
例如:
但当分支中包含多条语句时,我们就将会用到“
else”
比如上述代码我们可以这样写
值得注意的是,无论“ else ”还是“ if ”,其后面默认只跟随一条语句,建议在写代码是主动在其后面添加“ {} ”以减少错误。
在“ if else ”语句中,“ else ”可与另一个“ if ”连用,构成多重判断。如:
清晰的构成了三组判断,甚者可随作者想法构成更多组。
而当出现多个“ if ”与" else "时,“ else ”总跟最近的“ if “匹配
具体可参考如下
图示“ else ”总与最近一个也就是条件“b==2”处“ if ”相匹配。
2.switch语句
除了
if
语句外,C语言还提供了
switch
语句来实现分支结构。
switch
语句是⼀种特殊形式的
if...else
结构,用于判断条件有多个结果的情况。它把多重
的
else if
改成更易用、可读性更好的形式。
其形式为:
switch
(expression)
{
case
value1: statement
case
value2: statement
default
: statement
}
根据表达式
expression
不同的值,执行相应的
case
分支。如果找不到对应的值,
就执行
default
分支。
注:
•
switch
后的
expression
必须是整型表达式
•
case
后的值,必须是整形常量表达式
简单应用可参照以下代码
注意:
1. case 和后边的数字之间必须有空格
2. 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。
若没有加上break跳出语句则会出现后续语句继续执行的状况。如上述代码去掉break
在使⽤
switch
语句的时候,我们经常可能遇到⼀种情况,比如
switch
后的表达式中的值无法匹
配代码中的
case
语句的时候,这时候要不就不做处理,要不就得在
switch
语句中加入
default 子
句。
另外,在switch语句中并无顺序要求,并不是default只能在最后,default可以在语句中任意位置。
就⽐如前⾯做的打印星期的练习,如果
day
的输⼊不是1~7的值,如果我们要提示:输⼊错误。
这样我们便得到了一份更加优秀的代码。
二,循环结构
1.while循环
表达式如下
while
(
表达式
)
语句
;
//
如果循环体想包含更多的语句,可以加上⼤括号
其形式相像if,使用时可参考if语句
二者对比如下
实践操作如下
2.do while循环
表达式如下:
do
语句;
while表达式;
do while 循环是先直接进入循环体,执行循环语句,然后再执行 while 后的判断表达式,表
达式为真,就会进行下⼀次,表达式为假,则不再继续循环。
do while循环在循环语句当中使用较少,只有要求循环语句至少需要执行一次时才会用到。
上实例
![](https://img-blog.csdnimg.cn/1df5c8e956cb46b7bde405d1c96b053b.png)
![](https://img-blog.csdnimg.cn/a35b1915717845de987d8db47682fbf0.png)
do while循环中,程序会优先执行给定语句,在执行完语句后才会去执行表达式,表达式判断如果!=0则程序回到do处执行语句,如果==0则跳出程序不再执行。
3.for循环
表达式如下
for(表达式1;表达式2;表达式3)
语句//如果循环体想包含更多的语句可加上大括号
• 表达式1:给定初始值
• 表达式2:给定范围,用于循环结束的判断条件
• 表达式3:用于循环变量的调整
程序执行时首先执行表达式1初始化循环变量,接下来执行表达式2的判断部分,表达式2如果==0则循环结束,表达式2如果!=0则执行循环语句,循环语句执行完后再去执行表达式3,调整循环变量,再去表达式2处判断执行,表达式2的结果==0决定循环是否继续。
整个循环过程中,表达式1初始化部分只被执行一次,剩下的就是表达式2、循环语句、表达式3在循环。
好了,废话不多说,上实践
有此题可见,for循环囊括while循环的基本表达方式与内容,相较while循环更加简便,快捷。
for
和
while
在实现循环的过程中都有初始化、判断、调整这三个部分,但是
for
循环的三个部
分非常集中,便于代码的维护,而如果代码较多的时候
while
循环的三个部分就比较分散,所以从形式上 for
循环要更优一些。
4.break和continue语句
在循环执行过程中,我们往往会碰到需要提前结束循环的情况。c语言为我们提供了break与continue两个关键字。
• break的作用是跳出循环,不再往后执行循环内容,跳出循环执行后面的程序。
• continue的作用是跳过本次循环continue后边的代码,在for循环和while循环中有所差异的。
i.while循环中的break和continue
while中的break:
![](https://img-blog.csdnimg.cn/393df7baee8a4fb5a15bc68b6738ef4f.png)
while中的continue:
从上述打印结果中闪烁的输出线可以看出程序并没有打印结束,而是陷入了10的循环当中。
到这里我们就能分析出来,
continue
可以帮助我们跳过某⼀次循环
continue
后边的代码,直接
到循环的判断部分,进行下⼀次循环的判断,如果循环的调整是在
continue
后边的话,可能会造成死循环。
ii.for循环中的break和continue
for循环中的break:
for循环中的continue:
由图我们可以明显看出if语句中的continue与while语句不同之处,图示if语句中循环体跳过了打印“5”这个数字,这是因为continue只
帮助我们跳过某⼀次循环
continue
后边的代码,而for循环执行完这一次循环后又会回到表达式2,3中判断是否继续执行。图中由于i==5,i<10,从而满足条件执行i++。而while语句则是根据大括号中语句顺序进行的。
iii.do while循环中的break和continue
do while循环中的break与continue用法几乎一致
![](https://img-blog.csdnimg.cn/81719656ea794b7c92faa4cdfdc4b0bb.png)
![](https://img-blog.csdnimg.cn/d5ebd01f2e1c4f549b75bf78b130f9b0.png)
![](https://img-blog.csdnimg.cn/3527f43af4ba46d38d736777b1115418.png)
![](https://img-blog.csdnimg.cn/d24edcdb2f4e4ef88fc322eba19e9540.png)
这里由于do while循环体至少执行一次的缘故,当i=5时跳出了循环体,却依旧要往下执行i++这个语句,所以才会打印出5。
5,循环的嵌套
c语言中面对诸多复杂问题时,往往会将前面提到的三种语句组合起来使用,也就是我们所说的循环的嵌套。
例.找出100-200之间的素数(质数),并把他们打印出来。
首先我们明白了只能被1和本身整除的数叫做素数;
于是为了解决这个问题我们想到了使用循环;
1.使用循环产生100-200之间的数i
2.
使用循环产生2—(i-1)的数
3.
使用i除以2—(i-1)间所有数,判断是否为素数
于是我们敲出来这样的代码:
找出了100-200之间都有这些素数:
再解决完这个题目之后我们感觉自己已经半只脚跨入了c语言的大门槛,剩下了就是在不断的练习当中逐步改变我们的思维逻辑,明白编程不只是熟练掌握分支循环语句,掌握c语言;更是为了培养编程思维逻辑,为之后的计算机深入学习奠定基础。