一、程序源码
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
srand(static_cast<unsigned int>(time(0))); // 随机数种子
int targetNumber = rand() % 100 + 1; // 生成 1 到 100 之间的随机数
int guess;
int attempts = 0;
cout << "欢迎来到猜数字游戏!请猜测一个 1 到 100 之间的数字。" << endl;
do {
cout << "请输入您的猜测: ";
cin >> guess;
attempts++;
if (guess > targetNumber) {
cout << "您猜的数字太大了!" << endl;
} else if (guess < targetNumber) {
cout << "您猜的数字太小了!" << endl;
}
} while (guess!= targetNumber);
cout << "恭喜您猜对了!您一共猜了 " << attempts << " 次。" << endl;
return 0;
}
二、程序详细分析
#include <iostream>
#include <cstdlib>
#include <ctime>
- 这三行包含了程序需要使用的标准C++库:
<iostream>
提供了输入输出流的功能,例如cin
和cout
。<cstdlib>
包含了通用的函数,如exit
和rand
,其中rand
用于生成随机数。<ctime>
提供了与时间相关的函数,例如time
,它被用来作为随机数生成器的种子。
using namespace std;
- 这行告诉编译器使用
std
命名空间,这样就可以直接使用如cout
和cin
而不需要每次都写std::cout
或std::cin
。
int main() {
- 这是主函数的开始,每个C++程序都必须有一个
main
函数。
srand(static_cast<unsigned int>(time(0))); // 随机数种子
srand
函数设置随机数生成器的种子,time(0)
返回从纪元开始(通常是1970年1月1日)到现在的秒数。static_cast
是为了确保类型匹配(将time(0)
返回的time_t
类型(通常是一个长整型)转换成无符号整型unsigned int
)。
int targetNumber = rand() % 100 + 1; // 生成 1 到 100 之间的随机数
- 这行创建了一个整型变量
targetNumber
,并将其初始化为一个介于1和100之间的随机数。rand()
返回一个大范围内的随机数,取模% 100
可以得到0至99的随机数,再加上1则可以得到1至100的随机数。
int guess;
int attempts = 0;
- 这里声明了两个整型变量:
guess
用于存储玩家的猜测,attempts
用于记录玩家尝试的次数。
cout << "欢迎来到猜数字游戏!请猜测一个 1 到 100 之间的数字。" << endl;
- 输出欢迎信息并提示玩家猜测数字。
do {
cout << "请输入您的猜测: ";
cin >> guess;
attempts++;
}
- 开始一个
do...while
循环,这个循环至少执行一次,玩家在此输入他们的猜测,并且每次猜测后attempts
自增1。
if (guess > targetNumber) {
cout << "您猜的数字太大了!" << endl;
} else if (guess < targetNumber) {
cout << "您猜的数字太小了!" << endl;
}
- 这段条件语句检查玩家的猜测是否大于或小于目标数字,并给出相应的反馈。
while (guess != targetNumber);
- 如果玩家的猜测不等于目标数字,循环将继续。
cout << "恭喜您猜对了!您一共猜了 " << attempts << " 次。" << endl;
- 当玩家猜中数字时,显示恭喜信息并告知玩家他们总共尝试了多少次。
return 0;
- 主函数结束,返回值0表示程序正常终止。
三、总结
-
初始化随机数生成器:
- 使用
srand(static_cast<unsigned int>(time(0)));
初始化随机数生成器的种子。这里的time(0)
返回从1970年1月1日午夜开始到现在的时间(以秒为单位),确保每次运行程序时都能得到不同的随机数序列。
- 使用
-
生成随机数:
- 通过
rand() % 100 + 1
生成一个 1 到 100 之间的随机整数作为目标数字。这里% 100
是取余运算,确保结果不超过 99,加上 1 是为了确保最小值为 1。
- 通过
-
用户输入和比较:
- 程序会提示用户输入猜测的数字,并读取用户的输入。
- 然后程序会比较用户猜测的数字与目标数字,并给出相应的提示:
- 如果用户猜的数字大于目标数字,则输出 “您猜的数字太大了!”。
- 如果用户猜的数字小于目标数字,则输出 “您猜的数字太小了!”。
- 如果用户猜的数字等于目标数字,则跳出循环。
-
计数器:
attempts
变量用于记录用户猜测的次数,每猜测一次,这个计数器就增加 1。
-
结束游戏:
- 当用户猜中数字时,程序会输出恭喜信息,并显示用户总共猜了多少次。
程序流程总结:
-
初始化:
- 初始化随机数生成器。
- 生成一个 1 到 100 之间的随机数作为目标数字。
-
主循环:
- 循环接收用户输入并进行比较,直到用户猜中为止。
- 每次循环中:
- 提示用户输入猜测的数字。
- 读取用户的输入。
- 比较用户输入的数字与目标数字。
- 根据比较结果给出提示。
- 更新猜测次数。
-
输出结果:
- 当用户猜中数字时,输出恭喜信息以及总的猜测次数。
这个程序非常适合初学者练习,因为它涵盖了基本的输入输出、条件判断、循环控制等 C++ 编程的基础知识。