• c语言-while 循环结构


    while 循环

    • 格式: while(条件表达式){

      ​ 代码块}

    • 应用场景:需要反复执行某一段代码的时候.

    • while结构的执行顺序:条件表达式成立,执行代码块的代码,然后再回到条件表达式成立再次执行代码块(循环体),直到条件表达式不满足就不执行了

    • 方法:

      • 1,找到需要重复执行的代码,将此代码放到循环体中
      • 2,确定结束条件
    • 死循环:

          // 死循环,因为条件表达式是为真的,非 0 既真,所以会一直执行发射子弹的语句
      //    while (1) {
      //        printf("发射子弹");
      //    }
      
    • 确定好条件

          // 那我现在只发射 100 发子弹
          int num = 100;
          while (num > 0) {
              printf("发射第%i 发子弹
      ",num);
              --num;
          }
      
      //    while (num > 0) {
      //        printf("发射第%i 发子弹
      ",num);
      //        --num;
      //    }
      
    • 练习题

      • 累加思想
      // 练习
          // 提示用户输入一个正整数数,计算1+2+3+n 的和
          // 1,先分析需求,分析完再开始写代码
          // 2,一般情况下企业开发,不会直接实现复杂的代码,而是x实现一个简单的功能
          
          // 用户输入的是 5,
          // 1    +2  +3  +4  +5
          // 0+1
          //      1+1
          //          2+1
          //
          /*
          printf("请您输入一个正整数,以回车结束
      ");
          int inputNum = 0;
          scanf("%i",&inputNum);
          int sum = 0;
          while (inputNum > 0 ) {
              sum = sum + inputNum;
              inputNum--;
          }
          printf("计算后的结果:%i",sum);
          */
          
          
          printf("请您输入一个正整数,以回车结束
      ");
          // 顶一个变量接收用户输入的值
          int number;
          scanf("%i",&number);
          // 定义一个变量保存累加的值
          int sum = 0;
          // 定义一个变量保存每次相加的值,每次相加值不是固定的
          int count = 1;
          // 计算第一次相加的值
      //    sum = sum + count;
      //    count++;
      //    // 计算第二次相加的值
      //    sum = sum + count;
      //    count++;
          // 所以确定重复的代码就是这两行
          while (count <= number) {
              printf("sum = %i + %i
      ",sum,count);
              sum = sum + count;
              count++; // 每次相加的值都会加 1 的
          }
          printf("sum 的值是%i",sum);
          
          // 注意不能把定义变量写在 while 循环中,写在了 while 循环中变量的作用域遇到大括号就结束了,然后每次执行循环体的内容又会重新定义变量
      
      • 练习 1-1 增加安全验证
          
          // 增加安全校验(错误示范)
          
          /*
          printf("请您输入一个正整数,以回车结束
      ");
          // 顶一个变量接收用户输入的值
          int number;
          scanf("%i",&number);
          if (number < 0){
              // return 0; // 这个时候写了 return,那么如果条件成立,后面的代码就不会执行了
              // break; // break 语句是在 switch 语句和循环语句中使用,离开这两个都没有任何效果
          }
          // 定义一个变量保存累加的值
          int sum = 0;
          // 定义一个变量保存每次相加的值,每次相加值不是固定的
          int count = 1;
          while (count <= number) {
              printf("sum = %i + %i
      ",sum,count);
              sum = sum + count;
              count++; // 每次相加的值都会加 1 的
          }
          printf("sum 的值是%i",sum);
          */
          
          // 将 whiley 循环放进 if 语句中
          /*
          printf("请您输入一个正整数,以回车结束
      ");
          // 顶一个变量接收用户输入的值
          int number;
          scanf("%i",&number);
          if (number > 0){ // 如果用户输入的是一个大于 0 的数,将 while 循环放进 if 语句中
              // 定义一个变量保存累加的值
              int sum = 0;
              // 定义一个变量保存每次相加的值,每次相加值不是固定的
              int count = 1;
              while (count <= number) {
                  printf("sum = %i + %i
      ",sum,count);
                  sum = sum + count;
                  count++; // 每次相加的值都会加 1 的
              }
              printf("sum 的值是%i",sum);
          }
           */
          int sum = 0;
          int count = 1;
          int number = -1;
          while (number < 0) { // 此时 number 小于0,执行此循环体,
              printf("请输入一个正整数,以回车结束");
              scanf("%i",&number); // 输入的 number 值再次判断是否小于 0,如果小于零那就行执行u循环体
          }
          
          while (count<= number) {
              sum = sum + count;
              count++;
          }
          printf("sum = %i
      ",sum);
      
      • 计数器思想
          // 获取 1-100之间,7 的倍数个数,并统计有多少个
          // 定义一个变量,保存出现了多少个 7 的倍数
          int count = 0;
          // 定义一个变量保存 1-100 之间数,用这个变量每次除以 7,取余数
          int number = 1;
          // 条件表达式是,1-100 之间的小于总值 100
          while (number <= 100 ) {
              // 如果 number 的值模以 7 是 0 的话代表是可以整除的,此时将 count 加 1
              if (number % 7 == 0){
                  count++;
                  printf("第%i个 7 的倍数是:%i
      ",count,number);
              }
              number++; // 每次循环都要将 number 的值加一,再次y循环
          }
      
    • 修改相同变量的变量名

      • command+control+e,此时相同的变量就会被选中,然后直接修改值就可以了
        // 帅哥下向美女要陌陌号,
        // 美女要求男生t猜她的年龄,给这个男生三次机会
        // 分析:男生猜的年龄,女生的年龄(随机数),三次机会  --->三个变量
        int girlAge;
        int age;
        int count = 0;
        girlAge = arc4random_uniform(20); // 随机一个 0-20 的数,不包含 20
        printf("这是随机的女孩的年龄:%i
    ",girlAge); // 打印一下随机的女孩年龄
        while (count < 3) {
            printf("请输入你猜的年龄,以回车结束
    ");
            scanf("%i",&age); // 接收用户输入猜的女孩年龄
            if (age == girlAge){ // 如果两个值相等
                printf("恭喜你猜对了
    ");
                break; // 猜对了就跳出循环
            }else
            {
                printf("猜错了,你还剩下%i个机会
    ",2-count);
            }
            
            count++;
        }
        
    
    • while 循环注意点
      • 1,任何数值都有真假性
      • 2,while 和 if 语句一样,也可以省略大括号,只管后面的第一条语句
      • 3,分号也是一条语句,是一个空语句
      • 4,while 循环语句中不要定义变量
      • 5,注意条件表达式,避免死循环

    break 语句

    • break 语句用于跳出循环
        // break 语句
        // 我有一百发子弹,打十发子弹我就开始休息了
        int num = 100;
        while (num >0 ) {
            if(num  == 90){
                printf("不打了
    ");
                break; // 跳出循环
            }
            printf("num = %i
    ",num);
            num--;
        }
    

    countinue关键字

    • 死循环例子
        int num = 100;
        while (num > 0) {
            if (num % 10 == 0){   // 此时如果if 写在前面的话会造成死循环,第一次 100,进来满足 if 条件,然后执行休息一下,然后 continue 跳过本次循环进入了下次循环,但是后面的 num--是不是没执行啊,还是 100,所以每次的 num 值都是 100 每次都满足条件就会是死循环
                printf("休息一下
    ");
                continue;
            }
            printf("num = %i
    ",num);
            num--;
        }
        
    
    • 调换位置后
        int num = 100;
        while (num>0) {
            num--;
            if (num % 10 == 0){
                printf("休息一下
    ");
                continue;// 如果没有加 continue 还会打印出 90,80,这些数字,
            }
            printf("num = %i
    ",num);
        }
    
    • 不使用 continue
        /*
        int num = 100;
        
        while (num>0) {
            if (num % 10 == 0){
                printf("休息一下
    ");
            }else{
                printf("num = %i
    ",num);
            }
            num--;
        }
        */
    
    • continue 练习
        // 把 100-200之间,不能被 3 整除的数字打印出来
        int num = 100; // 100-200之间的数字不能确定,定义一个变量
        int chushu = 3;
        while (num <= 200) {
            num++; // 自增要写到开头,不然 continue 会跳过自增语句导致死循环
            if(num % chushu == 0){
                printf("这是能被 3 整除的
    ");
                continue;
            }
            printf("不能被三整除的数:%i
    ",num);
            
        }
    

    do while循环结构

    • 条件成立时
        // do while 循环
        /*
         while (条件表达式){
            代码块
         }
         
         do {
            代码块
         }while(条件表达式);
        从格式上看,先执行了代码块的代码 ,然后再去判断是否满足条件,条件满足再次执行代码块的代码,条件不满足跳出循环,同样可以使用 break 和 continue 关键字
         
         1,如果条件表达式不满足,也会x执行一次代码块的代码
         */
        
        int num = 0;
        while (num < 3) {
            printf("num = %i
    ",num);
            num++;
        }
    
        printf("----------
    ");
        
        int value = 0;
        do{
            printf("value = %i
    ",value);
            value++;
        }while (value < 3);
    
    • 条件不满足时
        // while 和 do while循环结构条件不满足的时候
        int num = 0;
        while (num < 0) {
            printf("num = %i
    ",num);
            num++;
        }
        // 此时 while 循环是不执行代码块中的代码的
    
        printf("----------
    ");
        
        int value = 0;
        do{
            printf("value = %i
    ",value);
            value++;
        }while (value < 0);
        // 此时 do whilex 循环是回执行一次代码块中的代码的
    
    • 什么时候用 while 和 do while 呢?

      • 一般情况下能用 while 的就用 while
      • 需要先执行一次代码块中的代码的时候就用 do while 好一些
          // 输入一个正整数n,计算 1+2+3+n的值是多少
          // 用户输入的正整数变量 1,累加的和变量 2
          int num = 0;//定义一个用户输入的正整数变量
          int sum = 0;//定义一个累加和的变量
          do {
              printf("请您输入一个正整数,以回车结束
      ");
              scanf("%i",&num);
          } while (num < 0); // 用户输入的值小于零时,让用户继续输入
          
          while (num > 0) {
              sum = sum + num;
              num--;
          }
          printf("sum = %i",sum);
      
  • 相关阅读:
    c# 使用 Read 读取数据块
    C# TCP/IP通信,Socket通信例子
    c# virtual 关键字 虚方法
    统计图
    oauth2.0 判断接口是否允许跨域
    OI常用模板合集
    CSP2021游记
    8.16 树上问题模拟赛总结
    8.15 图论模拟赛垫底记
    8.14 字符串模拟赛总结
  • 原文地址:https://www.cnblogs.com/shanshan-test/p/12920223.html
Copyright © 2020-2023  润新知