【小超嵌入式】C++猜数字游戏详细分析

一、程序源码

#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表示程序正常终止。

三、总结

  1. 初始化随机数生成器:

    • 使用 srand(static_cast<unsigned int>(time(0))); 初始化随机数生成器的种子。这里的 time(0) 返回从1970年1月1日午夜开始到现在的时间(以秒为单位),确保每次运行程序时都能得到不同的随机数序列。
  2. 生成随机数:

    • 通过 rand() % 100 + 1 生成一个 1 到 100 之间的随机整数作为目标数字。这里 % 100 是取余运算,确保结果不超过 99,加上 1 是为了确保最小值为 1。
  3. 用户输入和比较:

    • 程序会提示用户输入猜测的数字,并读取用户的输入。
    • 然后程序会比较用户猜测的数字与目标数字,并给出相应的提示:
      • 如果用户猜的数字大于目标数字,则输出 “您猜的数字太大了!”。
      • 如果用户猜的数字小于目标数字,则输出 “您猜的数字太小了!”。
      • 如果用户猜的数字等于目标数字,则跳出循环。
  4. 计数器:

    • attempts 变量用于记录用户猜测的次数,每猜测一次,这个计数器就增加 1。
  5. 结束游戏:

    • 当用户猜中数字时,程序会输出恭喜信息,并显示用户总共猜了多少次。

程序流程总结:

  1. 初始化:

    • 初始化随机数生成器。
    • 生成一个 1 到 100 之间的随机数作为目标数字。
  2. 主循环:

    • 循环接收用户输入并进行比较,直到用户猜中为止。
    • 每次循环中:
      • 提示用户输入猜测的数字。
      • 读取用户的输入。
      • 比较用户输入的数字与目标数字。
      • 根据比较结果给出提示。
      • 更新猜测次数。
  3. 输出结果:

    • 当用户猜中数字时,输出恭喜信息以及总的猜测次数。

这个程序非常适合初学者练习,因为它涵盖了基本的输入输出、条件判断、循环控制等 C++ 编程的基础知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小超电子笔记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值