信奥赛之c++课后练习题及解析(while +do...while)

练习题 1:while 循环打印奇数

题目

编写一个 C++ 程序,使用while循环打印从 1 到 15 之间的所有奇数。

解析

要使用while循环打印奇数,首先需要初始化一个变量,从 1 开始。在循环条件中,确保该变量不超过 15。在循环体内部,每次打印当前变量值,然后将变量增加 2,以保证每次打印的都是奇数。
示例代码如下:

#include <iostream>
using namespace std;

int main() {
   
   
    int num = 1;
    while (num <= 15) {
   
   
        cout << num << " ";
        num += 2;
    }
    return 0;
}

在这段代码中,num初始化为 1,满足num <= 15的条件,进入循环体,打印num的值 1,然后num增加 2 变为 3。再次判断条件,3 <= 15成立,继续循环,以此类推,直到num变为 17,不满足循环条件,循环结束。

练习题 2:do - while 循环计算累加和

题目

使用do - while循环编写一个程序,计算从 1 到 10 的整数累加和,并输出结果。

解析

利用do - while循环至少执行一次的特性,初始化一个累加变量sum为 0,一个计数变量i为 1。在循环体中,将i累加到sum中,然后i自增 1。循环条件为i不超过 10。
示例代码如下:

#include <iostream>
using namespace std;

int
### 关于C++ `do...while` 循环练习题 在《息学奥赛一本通》中,虽然未明确提及专门针对 `do...while` 的章节[^2],但在第四章“循环结构的程序设计”的第二节中有涉及 `while` 和 `do...while` 的相关内容。以下是基于该书籍框架以及实际编程需求整理的一些适合初学者的 `do...while` 练习题。 #### 示例目 1:累加求和 编写一个程序,让用户输入若干整数并计算它们的总和。当用户输入负数时停止接收新数据,并输出当前已有的正整数之和。 ```cpp #include <iostream> using namespace std; int main() { int num, sum = 0; do { cout << "请输入一个整数(输入负数结束): "; cin >> num; if (num >= 0) { sum += num; } } while (num >= 0); cout << "正整数的总和为:" << sum << endl; return 0; } ``` --- #### 示例目 2:猜数字游戏 随机生成一个介于 1 到 100 的整数,让玩家不断猜测直到正确为止。每次猜测后提示玩家所猜数字是偏大还是偏小。 ```cpp #include <iostream> #include <cstdlib> // rand(), srand() #include <ctime> // time() using namespace std; int main() { srand(time(0)); int secretNumber = rand() % 100 + 1; // 随机生成1到100之间的整数 int guess; cout << "我已经想好了一个1到100之间的整数。\n"; do { cout << "请你猜一下这个数字是多少?"; cin >> guess; if (guess > secretNumber) { cout << "太大了!\n"; } else if (guess < secretNumber) { cout << "太小了!\n"; } else { cout << "恭喜你,猜对了!\n"; } } while (guess != secretNumber); return 0; } ``` --- #### 示例目 3:验证密码 模拟登录系统的场景,要求用户连续三次尝试输入正确的密码才能成功进入系统。如果超过三次失败,则退出程序。 ```cpp #include <iostream> using namespace std; int main() { string password = "secret"; // 正确密码 string input; int attempts = 0; do { cout << "请输入密码:"; cin >> input; ++attempts; if (input != password && attempts < 3) { cout << "密码错误,请重试。(还剩" << 3 - attempts << "次机会)\n"; } } while (input != password && attempts < 3); if (input == password) { cout << "欢迎登录系统!\n"; } else { cout << "多次尝试失败,系统已锁定。\n"; } return 0; } ``` --- ### 总结 以上三个例子涵盖了常见的应用场景,包括累加器模式、交互式反馈机制以及有限次数内的重复操作。这些都适合作为基础训练来熟悉 `do...while` 结构的特点及其与其他控制流的区别。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山中习静观潮槿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值