首页 > 编程语言 >C++版AI猜数

C++版AI猜数

时间:2025-01-05 14:04:25浏览次数:3  
标签:17 temp AI sum 用户 C++ int 猜数 数字

源码

#include <iostream>
#include <ctime>
using namespace std;
 
int a[17] = {0,1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31};
int b[17] = {0,2, 3, 6, 7, 10, 11, 14, 15, 18, 19, 22, 23, 26, 27, 30, 31};
int c[17] = {0,4, 5, 6, 7, 12, 13, 14, 15, 20, 21, 22, 23, 28, 29, 30, 31};
int d[17] = {0,8, 9, 10, 11, 12, 13, 14, 15, 24, 25, 26, 27, 28, 29, 30, 31};
int e[17] = {0,16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
short sum=0;
bool temp;
 
int main() {
    cout << "您已进入AI猜数,请想一个0~31的整数..." << endl;
    clock_t start_time = clock();
    while (clock() < start_time + CLOCKS_PER_SEC * 3) {}
    cout << "想好了吗?请看牌!" << endl;
 
    // 输出数组a 
    cout << "第一张牌" << endl;
    for (int i = 0; i < 17; i++) 
    {
        if (!(a[i] == 0))
        {
            cout << a[i] << " ";
        }
        if ((i % 4 == 0) && (i != 0))
        {
            cout << endl;
        }
    }
    cout << "这张牌里有你想的数字吗?(有答1,无答0)";
    clock_t one_time = clock();
    while (clock() < one_time + CLOCKS_PER_SEC * 1) {}
    cin >> temp;
    sum += temp * 1;
    cout << endl << endl;
    
    // 输出数组b 
    cout << "第二张牌" << endl;
    for (int i = 0; i < 17; i++) 
    {
        if (!(b[i] == 0))
        {
            cout << b[i] << " ";
        }
        if ((i % 4 == 0) && (i != 0))
        {
            cout << endl;
        }
    }
    cout << "这张牌里有你想的数字吗?(有答1,无答0)";
    clock_t two_time = clock();
    while (clock() < two_time + CLOCKS_PER_SEC * 1) {}
    cin >> temp;
    sum += temp * 2;
    cout << endl << endl;
 
    // 输出数组c 
    cout << "第三张牌" << endl;
    for (int i = 0; i < 17; i++) 
    {
        if (!(c[i] == 0))
        {
            cout << c[i] << " ";
        }
        if ((i % 4 == 0) && (i != 0))
        {
            cout << endl;
        }
    }
    cout << "这张牌里有你想的数字吗?(有答1,无答0)";
    clock_t three_time = clock();
    while (clock() < three_time + CLOCKS_PER_SEC * 1) {}
    cin >> temp;
    sum += temp * 4;
    cout << endl << endl;
 
    // 输出数组d 
    cout << "第四张牌" << endl;
    for (int i = 0; i < 17; i++) 
    {
        if (!(d[i] == 0))
        {
            cout << d[i] << " ";
        }
        if ((i % 4 == 0) && (i != 0))
        {
            cout << endl;
        }
    }
    cout << "这张牌里有你想的数字吗?(有答1,无答0)";
    clock_t four_time = clock();
    while (clock() < four_time + CLOCKS_PER_SEC * 1) {}
    cin >> temp;
    sum += temp * 8;
    cout << endl << endl;
 
    // 输出数组e 
    cout << "第五张牌" << endl;
    for (int i = 0; i < 17; i++) 
    {
        if (!(e[i] == 0))
        {
            cout << e[i] << " ";
        }
        if ((i % 4 == 0) && (i != 0))
        {
            cout << endl;
        }
    }
    cout << "这张牌里有你想的数字吗?(有答1,无答0)";
    clock_t five_time = clock();
    while (clock() < five_time + CLOCKS_PER_SEC * 1) {}
    cin >> temp;
    sum += temp * 16;
    cout << endl << endl;
    
    cout << "你想的数是..." << endl;
    clock_t end_time = clock();
    while (clock() < end_time + CLOCKS_PER_SEC * 1) {}
    cout << sum << "!";
    
    return 0;
}

解析

  1. 整体功能概述

    • 这是一个简单的猜数字游戏程序。程序要求用户想一个0 - 31之间的整数,然后通过展示五组数字(每组17个数字,其中包含0和特定组合的1 - 31之间的数字),询问用户所想的数字是否在每组数字中。根据用户的回答(是为1,否为0),通过特定的计算得出用户所想的数字并输出。

  2. 包含的头文件和命名空间

    • #include <iostream>:引入输入/输出流库,用于实现控制台的输入和输出操作。

    • #include <ctime>:引入与时间相关的库,在这个程序中主要用于控制程序流程中的等待时间。

    • using namespace std;:使用标准命名空间,这样就可以直接使用coutcinclock_t等标准库中的标识符,而不需要加上std::前缀。

  3. 全局变量定义

    • int a[17]int b[17]int c[17]int d[17]int e[17]:这五个数组分别存储了五组数字,每组数字都包含0以及特定组合的1 - 31之间的数字。这些数组用于向用户展示数字组,以确定用户所想的数字是否在其中,并且不会占用栈空间。

    • short sum = 0;:用于存储根据用户回答计算得出的结果,最终这个结果就是用户所想的数字,soort:短整型。

    • bool temp;:用于临时存储用户输入的回答(是为1,否为0)bool:布尔类型(0或1)。

  4. main函数内部逻辑

    • 程序开始时,向用户提示“您已进入AI猜数,请想一个0~31的整数...”,然后使用clock_t start_time = clock();获取当前的时钟滴答数,并通过while (clock() < start_time + CLOCKS_PER_SEC * 3) {}等待3秒钟。这里的clock()函数返回从程序启动到调用时所经过的时钟滴答数,CLOCKS_PER_SEC表示每秒的时钟滴答数。

    • 接着提示“想好了吗?请看牌!”,然后开始展示五组数字并询问用户。

      • 以展示数组a为例:

        • 首先通过for循环输出数组a中的非0数字,每4个数字换行(通过if ((i % 4 == 0)&&(i!= 0))判断)。

        • 然后询问用户“这张牌里有你想的数字吗?(有答1,无答0)”,获取当前时钟滴答数到one_time,并通过while (clock() < one_time + CLOCKS_PER_SEC * 1) {}等待1秒钟,之后使用cin >> temp;获取用户输入(1或0),并根据用户输入将sum加上temp * 1(如果用户输入1,表示所想数字在这组数字中,就将1加到sum中,否则加0)。

      • 对于数组bcde的操作与数组a类似,只是在计算sum时分别乘以2、4、8、16。

    • 最后,提示“你想的数是...”,获取当前时钟滴答数到end_time,通过while (clock() < end_time + CLOCKS_PER_SEC * 1) {}等待1秒钟,然后输出sum的值,这个值就是根据用户回答计算得出的用户所想的数字。

原理

程序中的五张卡片分别代表着二进制的五个数位。

           第五张           第四张           第三张           第二张           第一张

               16                  8                    4                    2                    1

                0                   1                     0                   1                     0

                \_____________________12_______________________/

(16*0 + 8*1 + 4*0 + 2*1 + 1*0=12)

(0个16,1个8,0个4,1个2,0个1的和)

运行图

标签:17,temp,AI,sum,用户,C++,int,猜数,数字
From: https://blog.csdn.net/2401_82814692/article/details/144944578

相关文章

  • C++中的 多维数组、锯齿数组
    多维数组定义:多维数组可以看作是数组的数组,通过在定义时指定每个维度的大小来创建。下面以三维数组为例。访问:使用多个索引来访问数组中的元素,索引从0开始。销毁:对于栈上定义的多维数组,当作用域结束时会自动销毁;对于堆上动态分配的多维数组,需要手动释放内存。#include<iost......
  • springboot569图书管理系统(论文+源码)_kaic
     摘  要随着我国经济的高速发展与人们生活水平的日益提高,人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下,人们更趋向于足不出户解决生活上的问题,图书管理系统展现了其蓬勃生命力和广阔的前景。与此同时,为解决图书管理需求,图书管理发展愈发多元化、网络......
  • C++函数的出参
    在C#中,在函数或方法的参数前添加上out或ref时,这个参数就是出参了。在C++中主要是通过指针和引用实现来类似的功能。#include<iostream>//使用指针作为出参//getValues接受两个指向整数的指针,并通过这些指针修改了调用者提供的变量的值voidgetValues(int*a,int*b)......
  • C/C++调试---堆数据结构
    堆数据结构因为C/C++语言赋予程序员通过引用和指针来操纵内存对象的最大自由,所以毫不奇怪的是这些程序中的大多数bug都与错误的内存访问有关。根据错误发生的位置是栈还是堆,内存错误可分为两种:栈错误和堆错误。栈栈是分配给给一个独立的控制流(线程)的来纳许内存区域,用......
  • C/C++调试---调试符号与调试器
    调试符号与调试器调试符号调试符号由编译器生成,与相关的机器代码、全局数据对象等一同产生。链接器会收集并组织这些符号,将他们写入可执行文件的调试部分,或存储到一个单独文件中。概览全局函数和变量源文件和行信息为了优化程序性能,编译器可能会对源代码进行位移,情......
  • 可解释性人工智能(Explainable Artificial Intelligence )综述学习笔记(2)
    ExplainableArtificialIntelligence(XAI):Concepts,taxonomies,opportunitiesandchallengestowardresponsibleAI可解释性人工智能(ExplainableArtificialIntelligence,XAI):概念,分类,机遇和挑战,迈向负责任的人工智能原文地址:ExplainableArtificialIntelligence(......
  • 【最新原创毕设】基于SpringBoot的企业综合业务审批管理系+37708(免费领源码)可做计算机
    目 录摘要1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2 企业综合业务审批管理系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3法律可行性分析2.2功能需求分析2.2.1功能性分析2.2.2非功能性......
  • DoraCloud 桌面云方案应用于 AI 教学方案
    DoraCloud桌面云方案应用于AI教学方案随着人工智能(AI)技术的快速发展,越来越多的教育机构和培训机构开始将AI教学引入课程内容。然而,AI教学需要强大的计算资源,尤其是在机器学习(ML)、深度学习(DL)、数据分析等领域。通过DoraCloud桌面云方案,可以为AI教学提供一个灵活、高效、......
  • 说说你对Tailwind CSS的理解
    TailwindCSS是一种现代前端开发中的CSS框架,它以实用性和灵活性为核心,提供了一系列简洁高效的工具类,帮助开发者快速构建页面和应用程序的UI。以下是我对TailwindCSS的详细理解:一、TailwindCSS的特点Utility-First开发模式:TailwindCSS采用了"Utility-First"的CSS开发模式,这意......
  • traefik use label data of service container in compose yaml to route
    examplehttps://doc.traefik.io/traefik/user-guides/docker-compose/basic-example/traefik通过dockerengine访问其它容器的label信息,来做路由。version:"3.3"services:traefik:image:"traefik:v3.2"container_name:"traefik"co......