一、程序源码
#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;