zoukankan      html  css  js  c++  java
  • C语言复习4_while循环

    1、while循环

    循环三要素:

    1)、循环变量的初值

    2)、循环变量的判断

    3)、循环变量的更新

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int i = 0;
        while(i<=10)
        {
            printf("第%d遍
    ",i);
            i++;
        }
        return 0;
    }

    小练习1:使用循环计算1-100的累加和

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int i = 1;
        int sum = 0;
        while(i<=100)
        {
            sum += i;
            i++;
        }
        printf("%d
    ",sum);
        return 0;
    }

    小练习2:使用循环实现三次密码输入错误退出系统

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int i = 0;  //循环变量
        int password;   //密码
        while(i<3)
        {
            printf("请输入密码:");
            scanf("%d",&password);
            if(password!=123456)
            {
                printf("密码输入错误,当前输入第%d次密码!
    ",i+1);
            }
            else if(password==123456)
            {
                printf("密码输入成功!
    ");
                break;
            }
            if(i==2)
            {
                printf("密码输错三次,系统强制退出!
    ");
                exit(0);
            }
            i++;
        }
    
        return 0;
    }

    这里有几个要注意的地方:

    1)、加入了当密码输入正确就退出的判断机制;

    2)、if...else if....else if...else...这种结构,一旦里面有一个符合条件,就不会继续下面的判断了,所以在

    判断i是否到2这里,用的是if,而不是else if,因为第三次密码输入错误的时候,已经在第一个if里判断过了,就不会在下面的else if里

    继续判断了

    小练习3:某宝双十一2015年的交易额为800亿,每年递增25%,问按此速度哪年交易额达到2000亿?

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        double initSum = 800;  //2015年的交易额
        double increase = 0.25;   //递增率
        int initYear = 2015; //初始年份
        while(1)
        {
            initSum *= 1.25;
            if(initSum>=2500)
            {
                printf("第%d年交易额达到2000亿,此年交易额为%lf
    ",initYear+1,initSum);
                break;
            }
            initYear++;
        }
    
        return 0;
    }

    小练习4:使用循环模拟实现玩家对战

    双方初始HP均为100;

    每次攻击5-15;

    HP最先到零或以下的被KO

    #include <stdio.h>
    #include <stdlib.h> //标准库
    #include <time.h>   //time方法
    #include <windows.h>    //Sleep
    int main()
    {
        srand(time(NULL));
        //rand()函数的取值范围是0-32767
        printf("随机种子:%d
    ",rand());
        int hp1 = 100,hp2=100; //1p和2p的初始血量
        int att1,att2;//1p和2p每次的攻击
        int i = 0;//对战的轮数
        while(hp1>=0 && hp2>=0)//当两个玩家都活着的时候,才能进行对战
        {
            //默认1p首先攻击
            att1 = rand() % 11+5;
            att2 = rand() % 11+5;
            //玩家1攻击,玩家2掉血
            hp2 -= att1;
            //玩家2攻击,玩家1掉血
            hp1 -= att2;
            if(hp1<=0 && hp2>=0)
            {
                printf("玩家2胜利
    ");
                break;
            }
            else if(hp1>=0 && hp2<=0)
            {
                printf("玩家1胜利
    ");
                break;
            }
            printf("************************************
    ");
            printf("第%d轮:
    ",i);
            printf("玩家1攻击力:%d,玩家2剩余血量:%d
    ",att1,hp2);
            printf("玩家2攻击力:%d,玩家1剩余血量:%d
    ",att2,hp1);
            printf("************************************
    ");
            i++;
            Sleep(500);//休眠500ms
        }
        printf("游戏结束,玩家1的血量:%d	玩家2的血量:%d
    ",hp1,hp2);
        return 0;
    }
    人生苦短,何不用python
  • 相关阅读:
    【洛谷5052】[COCI2017-2018#7] Go(区间DP)
    【洛谷6564】[POI2007] 堆积木KLO(树状数组优化DP)
    【洛谷6940】[ICPC2017 WF] Visual Python++(扫描线)
    【洛谷6939】[ICPC2017 WF] Tarot Sham Boast(PGF结论题)
    【洛谷4123】[CQOI2016] 不同的最小割(最小割树)
    初学最小割树
    【洛谷6122】[NEERC2016] Mole Tunnels(模拟费用流)
    【洛谷6936】[ICPC2017 WF] Scenery(思维)
    【洛谷2805】[NOI2009] 植物大战僵尸(最大权闭合子图)
    【洛谷1393】Mivik 的标题(容斥+border性质)
  • 原文地址:https://www.cnblogs.com/yqpy/p/10454202.html
Copyright © 2011-2022 走看看