• 循环


    在线C环境:https://clin.icourse163.org/

     

    1. while循环

    • 如果我们把while翻译作“当”,那么⼀个 while循环的意思就是:当条件满⾜时,不 断地重复循环体内的语句。
    • 循环执⾏之前判断是否继续循环,所以有 可能循环⼀次也没有被执⾏;
    • 条件成⽴是循环继续的条件。

    看程序运⾏结果

    ⼈脑模拟计算机的运⾏,在纸上列出所有 的变量,随着程序的进展不断重新计算变 量的值。当程序运⾏结束时,留在表格最 下⾯的就是程序的最终结果

    验证

    测试程序常使⽤边界数据,如有效范围两 端的数据、特殊的倍数等

    个位数;

    10;

    0;

    负数。

    调试

    在程序适当的地⽅插⼊printf 来输出变量的内容

    #include <stdio.h>
    
    int main() {
        
        int x;
        int n = 0;
        
        scanf("%d",&x);
        
        n++;
        
        x /= 10;
        
        while(x > 0){
            printf("x=%d,n=%d\n",x,n);
            n++;
            x /= 10;
        }
        
        printf("%d\n",n);
        
        return 0;
    }

    2. do-while循环

    • 在进⼊循环的时候不做检查,⽽是在执⾏ 完⼀轮循环体的代码之后,再来检查循环 的条件是否满⾜,如果满⾜则继续下⼀轮 循环,不满⾜则结束循环

    3. 两种循环

    do-while循环和while循环很像,区别是在 循环体执⾏结束的时候才来判断条件。也 就是说,⽆论如何,循环都会执⾏⾄少⼀ 遍,然后再来判断条件。与while循环相同 的是,条件满⾜时执⾏循环,条件不满⾜ 时结束循环。

    #include <stdio.h>
    
    int main() {
        
       int x;
       
       scanf("%d",&x);
       
       int n=0;
       
       do{
           x/=10;
           n++;
       }while(x>0);
        //while();后面的分号要有
        
        printf("%d",n);
        return 0;
    }

    4. 循环的应用

    log^2X

    #include <stdio.h>
    
    int main() {
        
      int x;
      int ret = 0;
      
      scanf("%d",&x);
      int t = x;
      
      while(x > 1){
          x /= 2;
          ret++;
      }
      
      printf("log2 of %d is %d",t,ret);
      
        return 0;
    }

    5. 计数循环

    #include <stdio.h>
    
    int main() {
        
       int count = 100;
       while( count > 0){
           count--;
           printf("%d\n",count);
       }
       
       printf("发射!\n");
       
        return 0;
    }

    6.  猜数游戏

    • 让计算机来想⼀个数,然后让⽤户来猜, ⽤户每输⼊⼀个数,就告诉它是⼤了还是 ⼩了,直到⽤户猜中为⽌,最后还要告诉 ⽤户它猜了多少次。
    • 因为需要不断重复让⽤户猜,所以需要⽤ 到循环
    • 在实际写出程序之前,我们可以先⽤⽂字 描述程序的思路
    • 核⼼重点是循环的条件
    1. ⼈们往往会考虑循环终⽌的条件
    1. 计算机随机想⼀个数,记在变量number⾥;
    2. ⼀个负责计次数的变量count初始化为0;
    3. 让⽤户输⼊⼀个数字a;
    4. count递增(加⼀);
    5. 判断a和number的⼤⼩关系,如果a⼤,就输出 “⼤”;如果a⼩就输出“⼩”;
    6. 如果a和number是不相等的(⽆论⼤还是⼩),程 序转回到第3步;
    7. 否则,程序输出“猜中”和次数,然后结束。
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    
    int main() {
        
      srand(time(0));
      int number = rand()%100+1;
      int count = 0;
      int a = 0;
      
      printf("我已经想好了一个1到100之间的数。");
      
      do{
          printf("请猜这个1到100之间数:");
          scanf("%d",&a);
          count++;
          if(a>number){
              printf("你猜的数大了");
          }else if(a<number){
              printf("你猜的数小了.");
          }
      }while(a!=number);
      
      printf("太好了,你用了%d次就猜到了答案\n",count);
       
        return 0;
    }

    7. 算平均数

    •  让⽤户输⼊⼀系列的正整数,最后输⼊-1 表⽰输⼊结束,然后程序计算出这些数字 的平均数,输出输⼊的数字的个数和平均 数
    • 变量->算法->流程图->程序

    变量

    • ⼀个记录读到的整数的变量
    • 平均数要怎么算?
    1. 只需要每读到⼀个数,就把它加到⼀个 累加的变量⾥,到全部数据读完,再拿 它去除读到的数的个数就可以了
    • ⼀个变量记录累加的结果,⼀个变量记录 读到的数的个数

    算法

    • 初始化变量sum和count为0;
    • 读⼊number;
    • 如果number不是-1,则将number 加⼊sum,并将count加1,回到 2;
    • 如果number是-1,则计算和打印 出sum / count(注意换成浮点来 计算)。

    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    
    int main() {
       int sum = 0;
       int count = 0;
       int number = 0;
       while(count != 5){
           scanf("%d",&number);
            sum += number;
           count ++;
            printf("%d\n",sum);
       }
       printf("%f",sum/count);
        return 0;
    }
  • 相关阅读:
    BZOJ3566: [SHOI2014]概率充电器
    BZOJ5018: [Snoi2017]英雄联盟
    BZOJ4627: [BeiJing2016]回转寿司
    BZOJ4719: [Noip2016]天天爱跑步
    BZOJ1511: [POI2006]OKR-Periods of Words
    BZOJ4721: [Noip2016]蚯蚓
    BZOJ1922: [Sdoi2010]大陆争霸
    BZOJ2525: [Poi2011]Dynamite
    单选按钮 / 复选框 样式自定义
    HDU 产生冠军 2094
  • 原文地址:https://www.cnblogs.com/hechunfeng/p/15647672.html
Copyright © 2020-2023  润新知