04 C循环结构

1、while循环

#include 

int main()
{
   /*
    * if(条件表达式){
    *    条件满足才执行的代码
    * }
    * 特点: 只有条件满足才会执行if后面{}中的内容,
    * 并且if后面{}中的内容只会被执行一次
    *
    * while(条件表达式){
    *    条件满足才执行的代码
    * }
    * 特点: 只有条件满足才会执行while后面{}中的内容,
    * 并且执行完之后会再次判断条件表达式是否为真, 如果为真会再次执行while后面{}中的内容
    * 重复上述步骤, 知道条件表达式不为真为止
    *
    * 应用场景:
    * 在企业开发中, 但凡发现某些代码是需要重复执行的就要想到循环结构, 就可以使用while
    */

//    printf("发射子弹\n");
//    printf("发射子弹\n");
//    printf("发射子弹\n");
//    printf("发射子弹\n");
//    printf("发射子弹\n");
//    printf("发射子弹\n");
//    printf("发射子弹\n");
//    printf("发射子弹\n");
//    printf("发射子弹\n");
//    printf("发射子弹\n");

    // 1.先编写循环结构的基本格式
    // 2.将需要重复执行的代码拷贝到循环体重({}里面我们就称之为循环体)
    // 3.确定循环结束的条件
    int num = 0;
    while(num < 10){
        printf("发射子弹%i\n", num);
        num++; // 控制循环结束的语句
    }

    return 0;
}
#include 

int main()
{
    /*
     * 需求: 1 .. n的和
     * 1 + 2 + 3 + 4 + 5
   0 + 1
     * 1 + 2
     *     3 + 3
     *         6 + 4
     *             10 + 5
     * 规律:
     * 1.每一次都是上一次的和加上当前的一个数
     * 2.当前加上的数是一个递增的数
     */
    // 定义一个变量保存用户输入的n
    int n = 0;
    // 提示用户如何输入
    printf("请输入一个正整数, 以回车结束\n");
    // 接收用户输入的数据
    scanf("%i", &n);
    // 1.定义一个变量保存每次相加的和
    int sum = 0;
    // 2.定义一个变量保存每次加上的数
    int num = 1;
    // 3.用上一次的和加上当前的数
    /*
    sum = sum + num; // sum = 0 + 1
    num++; // 2
    sum = sum + num; // sum = 1 + 2
    num++; // 3
    sum = sum + num; // sum = 3 + 3
    num++; // 4
    sum = sum + num; // sum = 6 + 4
    num++; // 5
    sum = sum + num; // sum = 10 + 5
    num++; // 6

//    int res = 1 + 2 + 3 + 4 + 5;
//    printf("res = %i\n", res);
    */

    // 1.编写循环的固定格式
    // 2.将重复执行的代码拷贝到循环体中
    // 这里使用了编程开发中的一种思想: 累加思想
    // 累加实现, 就是定义变量记录每次的和
    while(num <= n){
        sum = sum + num;
        num++;
    }
    printf("sum = %i\n", sum);
    return 0;
}
#include 

int main()
{
    /*
     * 需求: 要求统计1~n中有多少个数能被7整除
     */
    // 定义变量记录能被7整除的数的个数
    int count = 0;
    // 1.定义变量保存用户输入的数据
    int n = -1; // 5
    // 2.提示用户如何输入
    printf("请输入一个正整数, 以回车结束\n");
    // 3.接收用户输入的数据
    scanf("%i", &n);
    // 4.拿到1~n中的每一个数
    int num = 1;
    while(num <= n){ // 6 <= 5
//        printf("num = %i\n", num); // 1 2 3 4 5
        // 这里使用了编程开发中的一种思想: 计数器实现
        if(0 == (num % 7)){
            count++;
        }
        num++;
    }
    printf("count = %i\n", count);
    return 0;
}
#include 

int main()
{
    // 1.while循环和if一样, 可以省略大括号
    // while循环和if一样, 省略大括号时, 只能控制紧随其后的那条语句
    // while循环和if一样, 省略大括号时, 不能定义新的变量
    // while循环和if一样, 任何数值都有真假性
//    while(0)
//        printf("被控制的语句\n");
//    printf("不被控制的语句\n");

//    while(0)
//        int num = 666;
//    printf("不被控制的语句\n");

    // 2.while循环和if一样, 不用书写分号
    // while循环和if一样, 分号不能再写()和{}之间
//    while(0);{
//        printf("被控制的语句\n");
//    }

    // 3.while循环和if一样, 可以嵌套其它合法代码
//    if(1){
//        if(0){

//        }
//        switch (1) {
//        case 1:
//            break;
//        default:
//            break;
//        }
//        while(0){

//        }
//    }

    while(0){
        while(0){
            while(0){
                if(0){

                }
                switch (1) {
                case 1:
                    break;
                default:
                    break;
                }
            }
        }
    }
    return 0;
}
#include 

int main()
{
    /*
     * while(条件表达式){
     *   被控制的语句;
     * }
     * 特点: 会先判断条件是否满足, 满足就执行{}中的代码
     *
     * do{
     *  被控制的语句;
     * }while(条件表达式);
     * 特点: 不会像判断条件是否满足, 会先执行一次{}中的代码, 然后再判断条件
     */

    // while和dowhile的区别:
    // while会先判断条件再执行循环体
    // dowhile会先执行循环体再判断条件
//    while(0){
//        printf("被控制的语句\n");
//    }

//    do{
//        printf("被控制的语句\n");
//    }while (0);

    // 在大部分的情况下while和dowhile是可以互换的
    // 在企业开发中如果能够互换, 一般我们会使用while
//    int num = 1;
//    while(num <=5){
//        printf("num = %i\n", num);
//        num++;
//    }

//    int num = 1;
//    do{
//        printf("num = %i\n", num);
//        num++;
//    }while(num <=5);

    // dowhile的应用场景
    // 验证

    // 1.定义变量保存用户输入的数据
    int num = -1;
    // 4.排除非法数据
//    if(num < 1 || num > 3){
//        printf("非法数字\n");
//    }else{
//        printf("输入的数据是%i\n", num);
//    }

    // 1.编写循环的固定格式
    // 2.将需要重复执行的代码放到{}中
    // 3.确定循环结束条件
//    while(num < 1 || num > 3){
//        // 2.提示用户如何输入
//        printf("请输入一个1~3的整数, 以回车结束\n");
//        // 3.接收用户输入的判断
//        scanf("%i", &num);
//    }

    do{
        // 2.提示用户如何输入
        printf("请输入一个1~3的整数, 以回车结束\n");
        // 3.接收用户输入的判断
        scanf("%i", &num);
    }while(num < 1 || num > 3);
    printf("输入的数据是%i\n", num);
    return 0;
}

1.1、 whlie小练习

#include 

int main()
{
    /*
     * : 用while循环实现如下功能
     *
     * 1. 输出
     * ****
     * ****
     * ****
     *
     * 2.输出
     * ****
     * ***
     * **
     * *
     *
     * 3.输出
     * *
     * **
     * ***
     * ****
     *
     * 4.输出
     * ---*
     * --**
     * -***
     *
     * 5.输出99乘法表
     */
    return 0;
}

2、for循环

#include 

int main()
{
    /*
     * while(条件表达式){
     *      被控制的语句;
     * }
     *
     * for(初始化表达式;条件表达式;循环后增量表达式){
     *      被控制的语句;
     * }
     * 初始化表达式的作用:
     * 循环执行的过程中, 初始化表达式会有且只会被执行一次
     * 条件表达式的作用:
     * 要想执行循环体, 那么条件表达式必须为真
     * 每次执行完循环体, 都会再次判断条件表达式是否为真
     * 循环后增量表达式的作用:
     * 第一次执行循环体的时候不会执行循环后增量表达式
     * 只有循环体执行完之后才会执行循环后增量表达式
     *
     * for循环的执行流程
     * 1.执行一次初始化表达式
     * 2.判断条件表达式是否为真
     * 3.如果条件表达式为真, 执行循环体
     * 4.执行完循环体, 执行循环后增量表达式
     * 5.重复2~4步
     */

//    int num = 0;
//    while(num < 10){
//        printf("发射子弹%i\n", num);
//        num++;
//    }

    // 1.编写循环的固定格式
    // 2.将需要重复执行的代码放到{}中
    // 3.控制循环如何结束
//    int num = 0;
    for(int num = 0;num < 10; num++){
        printf("发射子弹%i\n", num);
//        num++;
    }
    return 0;
}


#include 

int main()
{

    // 如果利用while循环实现发射子弹, 我们讲控制循环结束的变量, 定义在了while循环的外面
    // 特点: 用于控制循环的变量, 在循环内部和循环外部都可以使用
//    int num = 0;
//    while(num < 10){
//        printf("发射子弹%i\n", num);
//        num++;
//    }
//    printf("num = %i\n", num);

    // 如果利用for循环实现发射子弹, 我们将控制循环结束的变量, 定义在了for循环里面
    // 特点: 用于控制循环的变量, 只能在循环里面使用, 不能在循环外面使用
    for(int num = 0;num < 10; num++){
        printf("发射子弹%i\n", num);
    }
//    printf("num = %i\n", num);
    // 总结: 如果用于控制循环的变量, 在循环结束之后还需使用, 那么就使用while循环
    //      如果用于控制循环的变量, 在循环结束之后不需要使用, 那么就使用for循环
    // 规则: 在企业开发中, 一般情况下, 能用for就用for
    return 0;
}


#include 

int main()
{
    /*
    // 1.for循环和while循环一样, 可以省略大括号
    // 如果for循环省略了大括号, 和while循环一样, 只能控制紧随其后的那条语句
    // 如果for循环省略了大括号, 和while循环一样, 不能定义行的变量
    // 和while循环一样, 任何数值都有真假性
//    for(;0;)
//        printf("被控制的语句\n");
//    printf("不被控制的语句\n");

//    for(;0;)
//        int num = 666;

    // 2.还是和while一样, for循环可以不写分号
    // 如果写了分号, 一定不能写在()和{}之间
//    for(;0;);{
//        printf("被控制的语句\n");
//    }
    */

    // 3.for作用中变量的作用域问题
    /*
    int num = 666;
    {
        int num = 888;
        printf("num = %i\n", num); // 888
    }
    printf("num = %i\n", num); // 666
    */

    // 结论: 在循环体中定义和初始化表达式同名的变量不会报错
//    for(int num = 0; num < 3; num++)
//    {
//        int num = 666;
//        printf("num = %i\n", num); // 666
//    }

    // 结论: 在for的()中不能范围循环体中定义的变量
    for(int num = 0; num < 3; count++)
    {
        int count = 666;
        printf("num = %i\n", num); // 666
    }
    return 0;
}

你可能感兴趣的:(04 C循环结构)