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;
}
<think>好的,我现在需要回答用户关于C++while循环的用法的问题,包括语法和示例。首先,我需要回忆相关的知识点,确保信息的准确性。根据用户提供的引用资料,特别是引用[3]和引用[4],已经涵盖了基本语法和示例代码。 首先,要明确while循环的基本结构,语法格式是: while (条件表达式) { // 循环体 } 然后,考虑用户可能需要的基础示例,比如打印数字。引用[2]中的示例展示了打印0到9的数字,这是一个很好的例子。同时,引用[1]中的嵌套循环示例也能展示更复杂的用法,如do-whilewhile的嵌套。 接下来,需要组织内容结构。用户的问题包括语法和示例,所以应该分点说明。可能的结构是: 1. 基本语法:引用[3]中的内容。 2. 简单示例:如引用[2]的代码,解释每部分的作用。 3. 注意事项:比如避免死循环,引用[2]提到这一点。 4. 嵌套示例:引用[1]中的例子,展示更复杂的结构。 5. 对比while和do-while,引用[4]提到两者的选择依据。 需要确保使用正确的LaTeX格式,例如变量名用$符号包裹,如$num < 10$。同时,独立代码块要用三个反引号包裹,并标明语言类型。 检查是否有遗漏的信息,比如循环条件更新、初始值设置等。例如在引用[2]的示例中,num初始化为0,然后在循环体内自增,避免死循环。这也是需要注意的地方。 另外,用户提供的引用[1]中的代码展示了嵌套循环,外部是while,内部是do-while,这里需要解释两者的区别,比如do-while至少执行一次循环体,而while可能一次都不执行。 最后,生成相关问题需要考虑用户可能的后续疑问,比如优化循环、应用场景、错误处理等。需要确保问题与当前主题相关,并且能够引导用户进一步学习。 总结步骤: 1. 介绍基本语法,引用[3]。 2. 给出简单示例,引用[2]。 3. 强调注意事项,如避免死循环。 4. 展示嵌套循环示例,引用[1]。 5. 比较while和do-while的区别。 6. 生成相关问题,如优化、应用场景等。 现在需要将这些内容用中文清晰、有条理地表达出来,确保符合用户的要求,同时正确应用格式和引用标识。</think>### C++while循环的用法详解 #### 1. 基本语法 C++的`while`循环在条件为真时重复执行代码块,语法结构为: ```cpp while (条件表达式) { // 循环体 } ``` 当条件表达式为`true`时,循环体持续执行[^3]。 #### 2. 简单示例:打印0~9的数字 以下代码通过`while`循环输出0到9: ```cpp #include <iostream> using namespace std; int main() { int num = 0; // 初始化计数器 while (num < 10) { // 条件:num小于10时循环 cout << num << endl; num++; // 更新计数器(避免死循环的关键) } return 0; } ``` - **关键点**: - 初始化变量`num=0` - 条件`num < 10`控制循环次数 - `num++`确保循环最终结束[^2] #### 3. 注意事项:避免死循环 若忘记更新条件变量(如`num++`),会导致条件始终为真,程序陷入无限循环。例如: ```cpp while (num < 10) { cout << num << endl; // 缺少num++,导致死循环 } ``` #### 4. 嵌套示例:while与do-while结合 以下代码展示了`while`与`do-while`的嵌套使用: ```cpp #include <iostream> using namespace std; int main() { int i = 1, j = 1; while (i <= 3) { // 外层循环执行3次 cout << "外部循环,i = " << i << endl; do { cout << " 内部循环,j = " << j << endl; j++; } while (j <= 2); // 内层do-while至少执行1次 i++; j = 1; // 重置j的值 } return 0; } ``` - **输出结果**: ``` 外部循环,i = 1 内部循环,j = 1 内部循环,j = 2 外部循环,i = 2 内部循环,j = 1 内部循环,j = 2 外部循环,i = 3 内部循环,j = 1 内部循环,j = 2 ``` - **特点**: - `do-while`会先执行循环体,再判断条件[^1] - 外层`while`每轮结束后需重置`j=1`以正确执行内层循环 #### 5. while与do-while的区别 | 特性 | while循环 | do-while循环 | |---------------|-------------------------|------------------------| | **执行顺序** | 先判断条件,后执行循环体 | 先执行循环体,后判断条件 | | **最少执行次数** | 0次(条件为假时) | 1次 | ####
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值