【C++】while语句例题专题

while语句例题专题


一、语法

while 循环适合"循环次数不提前固定"的场景。

基本语法:

cpp 复制代码
while (条件) {
    循环体;
}

示例:输出 1 到 5

cpp 复制代码
int i = 1;
while (i <= 5) {
    cout << i << " ";
    i++;
}

二、例题详解

例题1:小鱼会有危险吗

题目描述

小鱼从 A 点向右游,第一秒游 7 米,之后每秒游程变为上一秒的 98%

探测器中心在 s 米处,左右 x 米为探测范围。

若小鱼进入探测范围后,下一秒不能游出范围则危险,输出 y;否则输出 n

输入格式

一行两个实数 sx

输出格式

输出 yn

输入输出样例

输入:

text 复制代码
14 1

输出:

text 复制代码
n

思路讲解

while 模拟每一秒游动:

  1. n 记录已经游过的总距离,y 记录当前这一秒能游的距离;
  2. n < s - x 时,说明还没进入探测范围左边界,继续模拟;
  3. 到达边界后,判断"下一秒结束时"是否还能留在范围内;
  4. 依据判断输出 yn

参考代码

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int main() {
  float s, x, n, y;
  cin >> s >> x;
  n = 0;
  y = 7;
  while (n < s - x) {
    n += y;
    y = y * 0.98;
  }
  if (n + y > s + x) {
    cout << 'n';
  } else {
    cout << 'y';
  }
  return 0;
}

例题2:级数求和

题目描述

S_n = 1 + 1/2 + 1/3 + ... + 1/n

输入整数 k,求最小的 n,使得 S_n > k

输入格式

一个正整数 k

输出格式

一个正整数 n

输入输出样例

输入:

text 复制代码
1

输出:

text 复制代码
2

思路讲解

这是 while 的经典"循环到满足条件为止"模型:

  1. sum 初始为 0,i 从 1 开始;
  2. 每轮把 1.0 / i 加到 sum
  3. sum > k 时停止,并输出当前 i

参考代码

cpp 复制代码
#include <iostream>
using namespace std;

int main(){
    int k;
    cin >> k;
    double sum = 0.0;
    int i = 1;
    while(1){
        sum += (1.0/i) ;
        if(sum > k){
            cout << i << endl;
            break;
        }
        i++;
    }
    return 0;
}

例题3:一尺之棰

题目描述

第一天木棍长度为 a,从第二天起每天长度变为前一天的一半(向下取整)。

问第几天长度会变为 1

输入格式

一个正整数 a

输出格式

一个正整数,表示第几天变为 1

输入输出样例

输入:

text 复制代码
100

输出:

text 复制代码
7

思路讲解

每天都做同一件事:a /= 2,直到 a == 1

因此用 while (a > 1) 循环最直观,循环次数就是多经历的天数。

参考代码

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int main() {
  int a;
  cin >> a;
  int d = 1;
  while (a > 1) {
    d++;
    a /= 2;
  }
  cout << d;
  return 0;
}
相关推荐
珠海西格电力1 小时前
云边端协同架构:零碳园区管理系统的技术底座
大数据·运维·人工智能·算法·架构·能源
山登绝顶我为峰 3(^v^)33 小时前
C/C++ 交叉编译方法
java·c语言·c++
还有多久拿退休金3 小时前
让飞书知识库跟着 commit 自己长:一套自动化知识库的真实实现
前端·算法·架构
KaMeidebaby5 小时前
卡梅德生物技术快报|小 RNA 适配体合成 + 多方法亲和力表征全流程标准化操作手册
前端·网络·数据库·人工智能·算法
是Dream呀5 小时前
基于深度学习的人类行为识别算法研究
人工智能·深度学习·算法
happyprince5 小时前
03_NVIDIA_ModelOpt-量化算法深入
人工智能·深度学习·算法
大鱼>6 小时前
AI+货物追踪:智能快递柜追踪系统
人工智能·深度学习·算法·机器学习
researcher-Jiang6 小时前
算法训练:堆 & 可并堆
算法
郝学胜-神的一滴6 小时前
中级OpenGL教程 013:渲染器类架构设计与逐帧渲染流程详解
开发语言·c++·unity·游戏引擎·图形渲染·opengl·unreal
在书中成长6 小时前
HarmonyOS 小游戏《对战五子棋》开发第18篇 - 棋盘设计
算法·harmonyos