C 流程控制

流程控制

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

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

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

 

选择结构

1. if

#include <stdio.h>

int main() {
    /*
     1> if的第一种结构
     if(条件) {
        语句1;
        语句2;
        ...
     }
     条件成立 {}里面的代码才会执行
     */
    int money = 6000;
    if(money >= 5000) {
    
        printf("大保健\n");
    }
    
    /*
     2> if的第二种结构
     if(条件) {
        语句1;
        语句2;
        ...
     }else {
        语句1;
        语句2;
        ...
     }
     不是第一个{}里面的代码被执行 就是第二个{}里面的代码被执行
     */
    if(money >= 5000) {
        
        printf("大保健\n");
    }else {
    
        printf("好好上班\n");
    }
    
    /*
     3> if的第三种结构
     if(条件1) {
        语句1;
        ...
     }else if(条件2) {
        语句1;
        ...
     }else if(条件3) {
        语句1;
        ...
     }else {
        语句1;
        ...
     }
     只有一个{}里面的代码被执行 条件判断顺序从上到下
     */
    if(money == 5000) {
        
        printf("大保健\n");
    }else if(money == 4000) {
        
        printf("好好上班\n");
    }else if(money == 3000) {
    
        printf("回家种田\n");
    }else {
     
        printf("唉!!!\n");
    }
    
    /*
     4> if的第四种结构
     if(条件)
        语句1;
        
     语句2;
     ...
     
     这种情况比较特殊 条件是否成立只会影响语句1;
     之后的语句2... 都和条件无关
     想要都影响 就用{}括起来
     这种写法要注意: 如果要在if后面的语句中定义新的变量 必须用{}包住
     */

    return 0;
}

2. switch

#include <stdio.h>

int main() {
    
    int a = 10;
    switch(a) {
        case 0:
            printf("这是一个0");
            break;
        case 5:
            printf("这是一个5");
            break;
        case 10:
            printf("这是一个10");
            break;
        default:
            printf("什么也不是");
            break;
    }

    return 0;
    
    //break: 退出switch语句
    //default: 当前面的case都不匹配的时候就会执行
    //注意: 如果case后面没有break 就会执行后面所有case中的语句 直到遇到break为止
    //注意: 如果要在case后面定义新的变量 必须用{}包住
}

3. ifswitch的对比

1> if语句能完成的功能 switch不一定能完成

2> switch语句能完成的功能 if都能完成

3> if用得比较多 比较灵活 switch只能某个单值

 

循环结构

1. while

#include <stdio.h>

int main() {
    /*
     while(条件) {
     
        循环体
     }
     */
    int count = 0;
    while(count < 30) {
        ++count;
        
        if(count%10 == 0) {
            continue;
        }
        printf("hello world! 第%d次\n", count);
        
        if(count == 28) {
            break;
        }
    }
    
    return 0;
    
    //continue: 跳出本次循环 进入下一次循环
    //break: 退出整个循环
    //特点: 只有条件成立才会执行循环体
    //注意: 死循环 while(3) { printf("死循环\n"); }
}

2. do while

#include <stdio.h>

int main() {
    /*
     do {
     
     } while(条件);
     */
    int i = 0;
    do {
        
        i++;
    } while(i < 8);
    printf("i = %d\n", i);
    
    return 0;
    
    //特点: 不管条件是否成立 一定会执行一次循环体
}

3. for

#include <stdio.h>

int main() {
    /*
     for(语句1; 条件; 语句2) {
        循环体
     }
     
     语句1: 初始化语句
     语句2: 增量语句(执行完循环体后再执行的语句)
     
     1.for一开始就会执行一次 语句1(整个for循环只会执行一次)
     2.判断条件是否成立 如果条件成立 就会执行一次循环体 然后就会执行语句2 再次判断条件是否成立...
     */
    for(int i = 0; i < 30; printf("i = %d\n", i), i++) {}
    
    for(int i = 0; i < 30; printf("i = %d\n", i), printf("哈哈\n"), i++) {}
    
    for(int i = 0; i < 30; i++) {
        printf("i = %d\n", i);
    }
    
    return 0;
    
    //注意: 不要随便在for()后面加分号
    //注意: for循环体内部变量的作用域
    //死循环 for(;;);
}

4. while循环和for循环的比较

可以互换

for循环的变量可以及时回收

 

breakcontinue

1. break 使用场合

1> switch语句: 退出整个switch语句

2> 循环结构(while|do while|for): 退出整个循环语句

3> 循环嵌套下的break: 只对最近的循环结构有效

2. continue 使用场合

1> 循环结构(while|do while|for): 跳出本次循环 进入下一次循环

2> 循环嵌套下的continue: 只对最近的循环结构有效

 

 

 

 

posted @ 2015-08-13 09:05  梦三  阅读(2471)  评论(0编辑  收藏  举报