C语言第三章:C语言流程控制

第一节:流程控制的分类

 流程控制的定义流程控制就是代码执行的顺序,在代码的执行过程中,我们可能出现各种情况,对应不同情况,我们的代码会执行不同的分支结构,这个时候就是采用流程控制语句来控制代码的执行顺序。

流程控制简单的分为以下三类:

  1. 顺序结构
  2. 选择结构
  3. 循环结构

顺序结构就是按照顺序依次往下执行,这里不做任何赘述。

选择结构是出现分支选择的执行结构,例如,这个周末是取爬山还是去学习,就会出现分支

循环结构是当我们要解决多个执行逻辑代码的时候,如果一行一行的重复输入这些代码,将会极大的降低我们的工作效率,因此出现了循环结构,会重复的执行一些需要执行的逻辑代码

 

第二节:选择结构

(1)分类

  • C语言中的选择结构有if语句switch语句,两种选择结构语句。

(2)if三种语句使用

  • if语句
    # include<stdio.h>
     
    int main(void)
    {
      int i = 1;
    
      if(i == 1){
        printf("今天去爬山");
      }
      if(i == 2){
        printf("今天去学习");
      }
    
      return 0;  
    }
  • if...else...语句
    # include<stdio.h>
     
    int main(void)
    {
      int i = 1;
     
      if(i == 1){
        printf("今天去爬山");
      }else{
        printf("今天去学习");
      }
     
      return 0;  
    }
  • if...else if...else if...else语句
    # include<stdio.h>
     
    int main(void)
    {
        int i = 1;
     
        if(i == 1){
            printf("今天去爬山");
        }else if(i == 2){
            printf("今天去学习");
        }else if(i == 3){
            printf("今天去玩游戏");
        }else{
            printf("今天睡觉,哪里都不去");
        }
    
        return 0;  
    }  

   注意:if语句在做条件判断的时候,如果是常量判断,通常把常量放在左边,变量放在右边以避免错误,例如:if(0 == a)避免写成if(0 = a),而且写成这样也不会报错

(3)switch语句

     switch语句这里简单的举一个电梯的例子。

  • 电梯的例子
    # include<stdio.h>
    
    int main(void)
    {
        int floor;
    
        printf("请输入要上的电梯层数:\n");
        scanf("%d",&floor);
        
        switch(floor){
            case 1:
                printf("1楼到了...\n");
                break;
            case 2:
                printf("2楼到了...\n");
                break;
            default:    
                printf("该楼层正在建设中...\n");
                break;
        }
    }

   switch语句和if语句的区别:

  • if语句能够实现的switch语句不一定能够实现,例如:if(a>100)
  • if语句有时候是能够互换的
  • switch语句可以完成的功能,if语句都可以完成

 注意:

  • switch语句的case里面的break如果省略了,则不会跳出switch语句,而是继续往下执行,直到没有符合条件的才会跳出。
  • 例如:我们可以用来判断月份是那个季节,就可以使用省略break的贯穿方式来灵活的编写代码。

 

第三节:循环结构

(1)分类

   C语言中的循环语句分为for循环while循环do...while循环

(2)for循环

格式:

// for循环基本形式
for(初始化语句;判断语句;步长语句){
     业务代码语句;
}
// 例如1:多个变量初始化和步长递增
for(int i = 0,int j=0; i<10; i++,j++ ){
    printf("i = %d , j = %d", i , j);                                  
}
// 例如2:求1+1/2+1/3...1/100的和
float sum = 0;
for(int i = 0;i < 101; i++){
  sum += 1.0/i;
}

for循环的执行过程:

  1. 执行初始化语句
  2. 执行判断语句
    1. 如果判断结果为true,则进入循环。
    2. 执行完业务代码
    3. 执行步长语句
    4. 执行判断语句(返回到上面的第二步)
  3. 如果判断结果为false,则结束循环

多个for循环嵌套:

// 输出九九乘法表
# include<stdio.h>

int main(void)
{
    for(int i = 1; i <= 9; i++){
        for(int j = 1; j<= i; j++){
            printf("%d * %d = %d ",j , i , j*i);
        }
        printf("\n");
    }

    return 0;
}

for循环注意事项:

  • for循环的死循环:for( ; ; );
  • for循环注意其执行流程

(3)while循环

格式:

// while循环基本格式
初始化语句;
while(判断语句){
   业务语句;
   步长语句;
}

// 例如:计算1+2+3+...+n的值
int sum = 0;
int i = 1;
while( i <101 ){
    sum += i;
    i++;
} 

while循环执行过程

  1. 执行初始化语句执行判断语句
  2. 如果判断语句结果为true,则进入循环
    1. 执行业务语句
    2. 执行步长语句
    3. 执行判断语句(返回上述第二步)
  3. 如果判断语句结果为false,则跳出循环

while循环的注意事项

  • while循环的死循环:while(1)
  • for循环和while是完全等价的,但是for循环逻辑更强,推荐使用for

(4)do...while循环

格式:

// 基本格式
初始化语句;
do{
    业务逻辑代码;
    步长代码;
}while(判断语句);

特点:

  • do...while语句至少执行一次***
  • do...while语句和while,for语句不等价

 

第四节:break和continue的用法

(1)break用法

  • break可以用于for循环,while循环,do...while循环和switch语句。用于终止当前循环或者跳出switch语句
  • break可以用于if语句,但是该if语句必须包含在循环语句中或者switch语句中,前者作为循环内部的一个子句。当符合if条件的时候终止循环语句,后者作为switch语句中的case情况,当满足if条件的时候,提前跳出switch语句(自己可以测试)
  • break语句在多层循环中,只能跳出离break最近的循环体
  • break只可以用于以上使用情况,break的作用就是强制跳出循环结构,终止本次循环或者跳出switch语句

(2)continue用法

  • continue用于循环结构,例如:for,while,do...while语句
  • continue用于结束本次单次循环(continue后面的语句不再执行,跳出本次循环),强制程序进入下一轮循环

 

posted @ 2016-10-28 01:34  MetalSteel  阅读(404)  评论(0编辑  收藏  举报