问题描述:
分析下面的代码和结果回答下面的问题。在C++中,do while无限循环的定义是什么呢?do while无限循环的语法结构是什么?do while循环和while循环的功能有什么相同和不同之处呢?do while和while功能有相同也有不同。do whilei和while都是基于条件判断的循环结构 while是:判断->执行->判断->执行…的流程。do while是:执行->判断->执行->判断->执行的流程。do while适用于需要对循环体先执行的场景。因此do while使用的条件是至少循环体要执行一次的场景,比如猜数字的游戏,猜对至少需要猜测一次。do while用的并不是很多,多数使用while使用更多如何使用while无限循环开发一个猜数字的游戏?
代码:
// Created by 黑马程序员.
#include "iostream"
#include "random"
using namespace std;
int get_random_num(int min, int max)
{
// 创建一个随机数生成器
random_device rd;
mt19937 gen(rd());
// 定义一个均匀分布的整数范围
uniform_int_distribution<> dis(min, max);
// 生成一个随机数并输出
int random_number = dis(gen);
return random_number;
}
int main()
{
/**
* 需求:提供一个1-100的随机数字,让用户猜测。
* 1. 提供无限次猜测机会
* 2. 猜错了提示大了或者小了,猜对了程序结束
*/
// 1. 先得到一个1-100的随机数字
int num = get_random_num(1, 100);
cout << num << endl;
int guess_num;
// 2. 让用户猜测
do {
cout << "请输入一个猜测的数字:" << endl;
cin >> guess_num;
if (guess_num > num) {
cout << "你猜的大了" << endl;
}else if (guess_num < num) {
cout << "你猜的小了" << endl;
} else {
// 猜对了
cout << "恭喜你,猜对了!";
}
} while (guess_num != num);
return 0;
}
结果:
结果
D:\CLion_code\cmake-build-debug\CLion_code.exe
29
请输入一个猜测的数字:
29
恭喜你,猜对了!
Process finished with exit code 0
问题解答:
1. 在C++中,do-while无限循环的定义是什么?
在C++中,do-while无限循环是一种循环结构,它至少执行一次循环体代码,然后根据条件表达式判断是否继续执行循环。如果条件始终为真(true),循环将无限次执行,这种情况就是“无限循环”。
2. do-while无限循环的语法结构是什么?
do-while循环的语法结构如下所示:
do {
// 循环体的代码
} while (条件表达式);
在do-while循环中,循环体的代码会在每次判断条件之前先执行一次,然后根据条件表达式的结果决定是否继续执行循环。如果条件为真,循环继续;如果条件为假,循环结束。
3. do-while循环和while循环的功能有什么相同和不同之处?
-
相同点:
- 基于条件判断:do-while和while循环都依赖于条件表达式来决定是否继续执行循环。
- 可以实现相同的功能:两者都可以用于实现任何循环需求,尽管它们的执行顺序不同。
-
不同点:
-
执行顺序:
while
循环是“判断->执行”的结构:即在进入循环之前,先检查条件表达式是否为真,如果为真则执行循环体,如果为假则直接跳过循环体。do-while
循环是“执行->判断”的结构:即先执行一次循环体,然后再检查条件表达式。这意味着do-while循环的循环体至少会执行一次,即使条件一开始就为假。
-
适用场景:
while
循环更适用于循环体的执行依赖于某个先前的条件时。do-while
循环适用于需要至少执行一次循环体的场景,如用户输入的验证或需要首次执行某个初始化步骤的情况。
-
4. 如何使用do-while无限循环开发一个猜数字的游戏?
在这段代码中,do-while循环用于开发一个简单的猜数字游戏。其步骤如下:
- 生成一个随机数:生成一个1到100之间的随机数。
- 用户输入猜测:用户输入一个数字作为猜测。
- 循环判断:通过do-while循环,不断检查用户的猜测是否正确。如果用户猜错了,程序会提示他们数字太大还是太小,并要求重新猜测。这会持续到用户猜对为止。
5. 代码解析
int main() {
int num = get_random_num(1, 100); // 生成一个1到100之间的随机数
cout << num << endl; // 输出随机数(调试用,可删除)
int guess_num;
do {
cout << "请输入一个猜测的数字:" << endl;
cin >> guess_num; // 用户输入猜测的数字
if (guess_num > num) {
cout << "你猜的大了" << endl;
} else if (guess_num < num) {
cout << "你猜的小了" << endl;
} else {
cout << "恭喜你,猜对了!"; // 猜对了,循环结束
}
} while (guess_num != num); // 判断条件,如果猜错了,继续循环
return 0;
}
6. 结果解释
输出如下所示:
D:\CLion_code\cmake-build-debug\CLion_code.exe
29
请输入一个猜测的数字:
29
恭喜你,猜对了!
Process finished with exit code 0
这个结果显示程序首先生成了随机数29。当用户第一次猜测的数字为29时,程序立即输出“恭喜你,猜对了!”,然后结束程序。由于do-while循环的特性,无论用户猜测是否正确,循环体都会至少执行一次,这在用户必须进行至少一次输入的场景下非常有用。