众所周知,C语言是一种结构化的语言,可见结构对于C语言的重要性,同时我们使用结构也足以解决生活中常见的大多数问题.
C语言中结构可分为3类
1.顺序结构,顾名思义就是按顺序自上而下执行
2.选择结构(分支),就是根据条件来决定执行什么样的语句
3.循环结构,就是在指定的条件下重复执行一定的语句,直到满足一定的条件后跳出循环
下面我将浅浅介绍一下我对分支和循环的一些理解
分支
可分为if分支和switch分支
if类型
if 单分支
if(条件)
{语句}
说明:()里的条件只要满足是真(非0),如果为真(非0),就会执行语句,如果为假(0),就不会执行语句,条件可以是一个表达式,一个数值 ,甚至可以是函数
例如下面这两个 一个打印了i,一个没有打印
if-else双分支
if(条件)
{语句}
else
{语句}
说明:如果满足()里的条件,就执行if语句,不满足的话都执行else语句,对于if-else双分支来说是二选一(要么...要么...),也就是说如果不执行if语句,就会执行else里面的语句条件,如果执行了if语句,就不会执行else语句
if-else if-else多分支
if(条件1)
{语句1}
else if(条件2)
{语句2}
else if(条件3)
{语句3}
......
else if(条件n)
{语句n}
else
{语句n+1}
说明:满足什么条件就执行其对应的语句,如果()里的条件都不满足,那么就执行else语句,同双分支一样选一执行,一旦有哪个语句被执行了,那么其他语句就不会被执行
分支的嵌套
对于分支语句来说,其执行的语句也可以是分支语句
这个判断a,b,c三个数哪个数是最大值就用到了分支的嵌套,理论上来说,分支可以不断嵌套,但如果不断嵌套,就会对代码的可读性和可维护性造成很坏的影响,所以分支的嵌套最好不要超过3层,如果超过了三层,就要考虑其他方法了
其次需要注意的一个点就是else和if的匹配问题,在多重嵌套中,else总是和在它之前出现的、尚未匹配的且离它最近的if相匹配,一是就近,二是未匹配,为什么要强调未匹配呢?因为一个if配一个else,一旦配对,就不会再匹配了
上面的匹配规则很复杂,简化一下就是
1.无花括号,else和上面离它最近的if匹配
2.有花括号,else和花括号内上面离它最近的if语句匹配
最后就是如果是多分支,else必须在所有else if的下面
switch类型
switch相对没有那么复杂
switch(整型)
case 常量1: 语句1;break;
case 常量2: 语句2;break;
.......
case 常量n 语句n;break;
default 语句n+1;break;
说明:()里面必须是个整型,例如char类型,int类型或者是一个整型表达式,返回值是int类型的函数等
下面是case后跟一个要比较的值和一个冒号,然后是执行语句和break;
至于这个default,可以把它类比为if语句中的else
这个break是必不可少的,因为break的功能是跳出;如果遇到了break,就不会再执行switch的其他语句,相当于给了switch一个出口,不会从某个case语句进去后执行到底,为什么default后面也要加break呢?这是为了方便扩展,如果后面我想在switch语句中加些其他选项,直接在default下面补充case就好了,比较方便,这与if语句中的else不同,default可以出现在switch中的任何位置
接着就介绍循环结构
循环结构
循环结构可以分为while循环,for循环,和do...while循环三大类
下面我将介绍一下三大循环
while循环
初始化表达式
while(条件)
{循环语句}
for循环
for(初始化;条件表达式;调整)
`do...while循环
do
{
语句
}while(条件表达式);
注意这个while后面要加;
三循环各自的用处
对于这三个循环,其用处并不相同,下面我将介绍一下三个循环各自的用处
对于while循环,其适合用于不知道循环次数的时候
对于for循环,其初始化,条件表达式和调整都在一起,显得更紧凑易读,同时更适应于已知循环次数的,例如对一个范围内的数进行判断
对于do...while循环,其区别于前两者就是不需要判断,先执行了再说,然后再根据条件表达式决定是否继续循环执行语句,例如在做一些小游戏的时候我们会用到do...while循环
循环的嵌套
同分支语句一样,循环语句也可以进行嵌套
对于这个程序来说,外层循环i是控制行的,内层循环k是控制列的
同样对于循环的嵌套,最好不要超过3层
循环的3个配套关键字
break
break作用,跳出当前循环,继续执行后面的语句
注意:break一次只能跳出一层循环,如果内层循环通过break跳出后,还会继续判断执行外层循环,所以对于嵌套循环,一定要注意break所在位置和跳出的是哪层循环
当我不知道循环次数时,我就可以写一个死循环,如果满足条件,那我就break跳出循环
while(1)
{
执行语句
if(条件表达式)
break;
}
通过不断执行语句,直至满足条件表达式结束这个循环
continue
continue作用:跳出当前正在执行的循环,继续执行下一次循环
注意:continue只是跳过这次循环,而不是结束这次循环
我们可以看到*只打印了9个,这是因为i==2时跳过了循环,不会执行printf("*"),但是并没有跳出整个循环
结语
分支循环在C语言的程序设计中占据着很重要的地位,今天只是浅浅介绍了一下分支循环的基础语法和一些注意事项,更多的还要在做题中慢慢感悟,如循环嵌套,分支嵌套,循环套分支,分支套循环等等,希望我的分享能给你带来一些启发和帮助.