c++while循环

本文详细介绍了C++中的while循环,包括基本语法、循环3要素,并通过3个实例展示了while循环在计数、求和及密码验证场景的应用。同时,分析了两个习题,解释了循环变量的递增与循环条件的关系,以及如何避免死循环。最后,提供了一个模拟拳皇对战的游戏循环实现,展示了随机数在循环中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.while循环

  • 格式:
while(循环条件){
循环体;
}

在这里插入图片描述

  • 循环中,我们通过控制变量来控制循环次数。
    循环3要素:
    循环变量的初值
    循环变量的判断
    循环变量的更新

eg1:

#include <iostream>
using namespace std;
int main()
{
    int i = 1;
    while(i <= 10)
    {
        cout <<"小人本住在苏州的城边..\t第"<<i<<"遍\n";
        i++;
    }
    return 0;
}

输出:

小人本住在苏州的城边..1遍
小人本住在苏州的城边..2遍
小人本住在苏州的城边..3遍
小人本住在苏州的城边..4遍
小人本住在苏州的城边..5遍
小人本住在苏州的城边..6遍
小人本住在苏州的城边..7遍
小人本住在苏州的城边..8遍
小人本住在苏州的城边..9遍
小人本住在苏州的城边..10

eg2:

#include <iostream>
using namespace std;
int main()
{
    //目的:使用循环计算1-100的和
    int num=1;//循环变量的初值
    int sum=0;
    while(num<=100) //循环变量的判断
    {
        sum+=num;
        num++;//循环变量的更新
    }
    cout<<sum<<endl;

    return 0;
}

eg3

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
    //目的:输入密码,3次都输入错误退出登录
    int i=1;
    string password;

    while(i<=3)
    {
        cout<<"请输入密码:"<<endl;
        cin>>password;
        if(password!="123456"&&i==3)
        {

            cout<<"3次密码输入错误,系统强制退出"<<endl;
            exit(0);//0是错误码

        }
        else if(password=="123456")
        {
            break;
        }
        i++;
    }

    cout<<"登陆成功!"<<endl;
    return 0;
}

习题:
1.

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
    int k=2;
    int i=0;
    while(k=1)
    {
    k=k-1;
    cout<<"第"<<++i<<"次循环"<<endl;
    }
    return 0;
}

这是个死循环,因为 k=1是赋值运算,返回值是1,就会执行 while(1),是个死循环。

2.判断一下语句输出是:

    int n=0;
    while(n++<=2);
    cout<<n;

答案是4.
分析:n++<=2,所以n最后一次进入的时候n=2,之后再执行n++,即n=3;
别忘了最后跳出循环的时候还要进行一次判断,再执行一次n++<=2语句,此时n=3,不满足条件,但是还是要执行++语句,即n=n+1=4。

例子:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
    //使用循环模拟拳皇对战
    int hp1=100;
    int hp2=100;

    int attack1=0;
    int attack2=0;

    int randNum;

    srand(time(NULL));//更新随机种子

    while(hp1>=0&&hp2>=0)
    {

        //玩家出招,可以采用随机数是奇数还是偶数决定谁先攻击
        randNum=rand();
        if(randNum % 2==1)
        {
            //随机产生5到15的随机数
            attack1=(int)(5 + 10 *rand()/(RAND_MAX+1));
            attack2=(int)(5 + 10 *rand()/(RAND_MAX+1));

            hp2-=attack1;
            hp1-=attack2;

        }
        else
        {
            attack2=(int)(5 + 10 *rand()/(RAND_MAX+1));
            attack1=(int)(5 + 10 *rand()/(RAND_MAX+1));

            hp1-=attack2;
            hp2-=attack1;
        }

    }

    cout<<"玩家1:"<<hp1<<endl;
    cout<<"玩家2:"<<hp2<<endl;


    return 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值