黑马程序员-流程控制

时间:2022-08-27 11:07:44

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

C语言有三种流程结构

顺序结构:默认的流程结构。按照书写顺序执行每一条语句。

选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。

循环结构:在给定条件成立的情况下,反复执行某一段代码。

顺序结构

顺序结构是三种结构中最简单的,也是系统默认的机构:按照书写的顺序执行每一条语句。


选择结构

选择结构有两种语句if语句和switch语句

if语句:

结构:

if的第一种结构:

<span style="font-size:14px;"> if(条件)
{
语句1;
语句2;
......
}</span>

 如果条件成立,即条件为真就会执行代码块里面的代码,

如果不成立,即条件为假,那么会直接跳过代码块,执行后面的代码。

例如:

int a = 10;
if (a > 5){
printf("成功");
}
如果条件成立,就执行这条语句

2.if的第2种结构

<span style="font-size:14px;"> if(条件1)
{
语句1;
语句2;
......</span><pre name="code" class="objc"><span style="font-size:14px;">
</span>
 
如果条件成立执行if后面代码块内的语句,如条件不成立,则执行else后面代码块内的语句。

 例如

<span style="font-size:14px;">int a = 10; </span>
<span style="font-size:14px;">if(a < 2){printf("条件成立"); }  else{    printf("条件不成立") } }  else {     }</span>

 3.if的第3种结构
<span style="font-size:14px;"> if(条件1)
{
语句1;
语句2;
......
}
else if(条件2)
{

}
else if(条件3)
{

}
else if(条件4)
{

}
else
{

}</span>

从上到下依次判断条件是否符合,如果找到符合的条件则执行后面代码块内的语句,

如果没有一个条件成立,就执行else后面代码块内的语句。

4.if的第4种结构(如果条件成立,只会运行后面的一句)

<span style="font-size:14px;"> if (条件)
语句1;</span>

以上的第4四种结构,不可以在条件后面的语句中定义变量(作用域不明确)

例如一下写法就是错误的

<span style="font-size:14px;">if(a>10)
int b = 9;</span>

为保证代码的可读性,应该尽量将代码写在代码块内

int a = 9;

if (a = 0){

printf ("失败");

}

if (0 == a){

printf("成功");

}
遇到以上需要使用==时,应该尽量常量值放左边,变量放右边,以免将关系运算,写成赋值运算。


switch结构

 switch (数据)
{
case 数值1:
语句1;
break;

case 数值2:
语句2;
break;

default :
语句3;
break;
}
这里的数值也可以是字符型

在case后面定义变量也需要加上代码块,否则也会是作用域不明确。

switch结构也是从上到下依次运行,

当数据和某个数值相同时,它就会执行这个数值后面的语句,执行完毕后如果遇到break会直接退出整个switch结构

如果没有遇到break它会一直执行下去,直到遇到break才会停止,退出。

若没有数据和数值相对应,那么语句执行到最后会执行default后面的语句


循环结构:

有时候我们想输出一些连续有规律的结果,这时我们就需要使用循环结构来简化代码


while循环结构
while (条件)
 {
    循环体
 }
 
 运行原理
1)如果一开始条件不成立,永远不会执行循环体
2)如果条件成立就会执行一次讯混,执行完毕,再次判断条件是否成立 ,如此循环,直到条件不成立为止。

 
 break
 直接结束整个while循环
 
 continue
 结束当前的循环体,进入下一次循环体的执行


如果while后面没{}则,后面第一句为循环体 


使用技巧:
 1.先确定需要重复执行的操作
 2.再确定约束条件


do-while循环


do {
 循环体
} while(条件);
 do-while循环在执行时会先将代码执行一次,再判断条件是否成立,如果成立再次循环,之后判断,如此往复

就算条件一开始就不成立,代码也会运行一次


 while和do-while的区别
 1.很多情况下,while和do while可以互换
 
 2.while特点:如果一开始的条件不成立,永远不会执行循环体
 do while特点:不管一开始的条件是否成立,至少会执行一次循环体
 
 3.最好使用while


for循环结构
 for (语句1; 条件; 语句2)
 {
    循环体
 }
 
 1.for一开始就会执行一次语句1(整个for循环只会执行一次)
 2.判断条件是否成立,如果条件成立,就会执行一次循环体,然后就会执行语句2,再次判断条件是否成立

 语句1:初始化语句:一般都是定义一个在循环内使用的变量
 语句2:增量语句(执行完循环体后再执行的语句):一般都是自增1 ,为下次循环提供判断。


 如果要在循环体中定义新的变量,必须用大括号{}包住


break和continue对比:


 break:
 1.使用场合
 1> switch语句:退出整个switch语句
 2> 循环结构:退出整个循环语句
   * while
   * do while
   * for
 2.注意点

for(int i = 0; i < 10; i++)
{
for(int j = 0;j < 9; j++)
{
printf("内循环");
break;
}

print("外循环");
}

由上可知只对离它最近的循环结构有效

for(int i = 0; i < 10; i++)
{
for(int j = 0;j < 9; j++)
{
printf("内循环");
}
print("外循环");
break;
}

由上可知break只对它所在的for循环有效
 
 continue:
 1.使用场合
  循环结构:结束当前这次的循环体,进入下一次循环体
     * while
     * do while
     * for
 2.注意点
  只对最近的循环结构有效