流程控制 3种:

1.顺序逻辑 ,代码从main函数开始,一条挨着一条执行,直到最后。

2.分支逻辑, 代码从main函数开始,有选择性的执行,直到最后。

3.循环逻辑 代码从main函数开始,对某一段代码执行多次后,直到最后

顺序逻辑                         分支逻辑                                 循环逻辑

分支结构

1.对代码进行选择行的执行。

1 . if 简单分支

1)如果需要实现判断逻辑,就需要使用 if

2)if 后面要紧跟 表达式,使用圆括号,括起来。

3) if 可以单独使用 。else 需要和if配对使用,不能单独出现。

4) if,else 后需要被执行的语句,建议都使用大括号,括起来。即使是一句话

5) if,else 后不要加分号。

if (表达式) 
{
    代码块;
    语句块
​
}
​
​
1 ,现对表达式 ,进行求值。 如果表达式值 为真,则执行if后紧挨着的语句(使用大括号引起来,即使是一句话)。
2, if (表达式)  在这句话后面,不要加分号 。 如果加了的话,语法不会报错。 只有分号的话,是一个空语句,可能会导致逻辑不对。
​
​
二分支流程
if(表达式)
​
{
    语句块1;
    。。。。。
    。。。。
}
else      
{
    语句块2;
    。。。。。
    。。。。
}
对表达式 ,对表达式求值。 如果为真 ,就执行语句块1 部分。 如果为假 ,就执行   语句块2;
//else  不能单独出现,需要和if配对使用。会和最近的if配对。

两数交换

temp = b;
b = a;
a = temp;

2.阶梯分支

if (表达式 1) {

语句块1;

}

else if( 表达式 2)

{

语句块2;

}

else if( 表达式 3)

{

语句块3;

}

....

else

{

语句块n;

}

3.if 嵌套形式

不建议嵌套层数太多 ,  3-5  层。 多了就不要阅读。
if(表达式1)
​
{
​
    if(表达式2)
​
    {
​
        if(表达式3)  ==  if(表达式1 &&表达式2 && 表达式3 )
​
        {
​
            语句1;
​
        }
        
    }
​
​
​
}
4.switch

多分支情况

​
​
switch(整形表达式)
{
    case 整形常量表达式1: //5
    语句块1;
    break;
    case 整形常量表达式2: //6
    语句块2;
    break;
    case 整形常量表达式3: //7 
    语句块3;
    break;
    
    default:
    语句块n;
​
}
​
整形表达式 计算下来的结果 ,会和case后面的 整形常量表达式 进行等值比较。 如果值相等则该 case 对应的语句块,就会被执行 ,直到遇到break。 
​
break; 停止,断开。在switch 中,执行遇到break ,意味 switch 分支结束。
​
default ,可以选。 如果有的话,switch 在匹配的过程中,如果case 都没有匹配成功,则执行default
对应的语句。 一般放在最后。

1) switch 后面必须是一个整形表达式

2) case 后面 整形的常量 ,不能是变量,或表达式

3)switch 的整形表达式 和 case 后面 整形的常量 ,做等值比较。 如果相等执行对应的case。 直到break 停止。 如果都没有匹配中,执行default;

循环控制

代码执行的时候,有多次执行同一段代码需求。

事先执行需要运行几次 for

未知执行次数的话 while

循环三要素:

1) 循环控制变量 需要初始化

2) 需要检测循环变量 ,是否继续循环

3)循环中,需要包含控制变量 变化的语句 ++,--

while

1) while 的使用

   
   while(表达式)
   {
    循环体;
   
   }
   表达式 的值  是一个逻辑  。 1 ture  0 fasle
   循环体; 代码会执行多次
   
   1 对表达式求值 ,如果为 1(真) ,则执行循环体 。否则 ,循环结束
   2 . 执行循环体 循环的代码
   3.  执行 步骤1 
   
   循环体 中,需要包含 使用循环慢慢趋势于结束的变量(循环体控制变量,++,--)
   while(表达式);  不要假分号。

死循环

循环会一直运行  
while(1)
{
循环体;
}

for
for(表达式1;表达式2;表达式3)
{
循环体;
}
表达式1 , 变量初始化,或者循环运行起来前,需要初始化的变量
表达式2 , 决定循环是否会继续运行。如果为真,循环执行,否则循环停止
表达式3, 对循环控制变量,进行改变的地方(++,--)
​
执行的流程
1.执行表达式1  ,对控制变量初始化 。 只会走一次。
2. 对表达式2求值,如果为真,执行循环体。否则结束
3.执行循环体代码
4. 执行表达式3, 对控制变量 ++,--
5. 跳 第2步
​
​
​
死循环形式
for(;;)   分号不可以省略
{
循环体;
​
}

双层循环

int i =0;
int j = 0 ;
for(j=0;j<3;j++) // 外层
{
​
    for(i=0;i<5;i++)// 内层循环
    {
    
    
    }
}
​
外层循环 j++ 一次 ,则内层循环 执行5次
​
9 * 9 乘法表
int i = 0 ;
    int j = 0 ;
    for(j = 1 ;j <=9;j++)// row  
    {
        
        for(i=1;i<=j;i++)
        {
            printf("%d*%d=%d ",i,j,j*i);
        }
       // printf("\n");
       puts(" ");
    }
​

goto

无条件调整 。

goto 只能在 同一个函数内部 调整。 goto 相当与 汇编中的jmp 指令。

在应用层程序编程中,禁止使用。

在linux 内核编程中, 错误处理 ,用的多。

int  main()
{
​
    int i = 0 ;
    int sum = 0;
    //标号
loop:    
    sum+=i;
    i++;
    if(i<=10)
    {
        goto loop;
    }
    else  
    {
        //goto end 
    }
​
    printf("sum is %d\n",sum);
​
end:
    return 0;
}
​
do ...while()

​
do
{
循环体;
}while(表达式);
​
循环体至少执行一次。  while() 后面的分号,不可省略。否则语法报错。
​
1. 执行循环体
2. 表达式求值 ,如果真,则执行循环体。否则,循环终止。
​
​
int main()
{
​
    int i = 0 ;
    int sum = 0 ;
    do 
    {
        sum+=i;
        i++;
    }while(i<=10);
​
    printf("sum is %d\n",sum);
}
​
​

循环辅助控制

continue; //继续, 跳过本次循环

1) 跳过本次循环 2) 在循环的过程中,需要屏蔽其中某几次循环

 for(i=0;i<10;i++)
    {
    
        if(3==i || 5==i || 7==i )
        {
            continue;// 在循环过程中,i如果是3,5,7  ,直接执行下一次循环
        }
        printf("i is %d\n",i);
    }
​

break; // 跳出循环,提前结束循环

1) 跳出当前循环或switch

2)如果不希望循环继续 ,调用break

for(i=1;i<10;i++)
    {
    
        if(3==i || 5==i || 7==i )
        {
            break; //提前结束循环
        }
        printf("i is %d\n",i);
    }
    
​
    printf("end...\n");

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐