C++编程练习--“栈”小练“我赌你的枪里没有子弹”

2023-10-27 20:10

本文主要是介绍C++编程练习--“栈”小练“我赌你的枪里没有子弹”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       电影里经常会看到这样的场景,两个人拿着左轮手枪分别朝自己开枪,假如左轮手枪中能上六发子弹,其中只有一发是实弹, 两人轮流朝自己开枪为了表明谁更有勇气,谁胆量大谁就能当大哥…… 我只能默默地说一局:难怪国外人口少。

 (图片源于网络,侵权立删)

        然而我们的重点并不在这种fc的举动上,我们要关注的是手枪或者说是它的“弹夹”。

 (图片源于网络,侵权立删)

栈遵循“先进先出”的原则,这与给手枪上弹同出一辙。圧栈的过程就是一个一个填子弹的过程,出栈(也叫弹栈)就是将子弹射出的过程,栈空则表示弹夹为空。

模拟栈的操作请看:

(5条消息) 数据结构学习笔记(C++):栈的顺序存储结构_代码骑士的博客-CSDN博客https://blog.csdn.net/qq_51701007/article/details/120586444


(5条消息) 数据结构学习笔记(C++):栈的链式存储结构_代码骑士的博客-CSDN博客https://blog.csdn.net/qq_51701007/article/details/120586969

趣味编程代码--《我赌你的枪里没有子弹》:

//作品:左轮手枪
//作者:代码骑士<1696297834@qq.com>
//编译环境:VS2022
//最后修改时间:2021-12-27
#include<iostream>
#include<stdlib.h>
#include<time.h>
#include<stack>
#include<conio.h>
using namespace std;int main()
{//定义弹夹容量const int MAX = 6;//产生0~5的且不重复的随机数(表示子弹,除了5以外的元素都是空弹)int i, m, a[MAX] = { 0 };srand((unsigned)time(NULL));for (int i = 0; i < 6; i++){while (a[m = rand() % 5 + 1]);a[m] = i;}//子弹上膛stack<int> sta;for (int i = 0; i < 6; i++)sta.push(a[i]);/*for (int i = 0; i < 6; i++)cout << a[i] << ' ';*///让子弹飞一会char banji;//定义一个扳机int bulletNum = 6;cout << "GAME_NAME:《左轮手枪》" << endl;cout << "总共有6发子弹."<<endl;cout << "其中只有一发为实弹,其余都是空弹。" << endl;cout << "按下空格键,扣动扳机。" << endl;while (true){banji = _getch();//扣动扳机if (banji == ' ')//按下空格开枪{if (sta.top() != 5){cout << "当前剩余 " << --bulletNum << "个子弹" << endl;cout << "虚惊一场,这是空弹。" << endl;sta.pop();//弹出弹壳}else{cout << "当前剩余 " << --bulletNum << "个子弹" << endl;cout << "PENG!你中弹了!" << endl;sta.pop();//弹出弹壳break;}}}return 0;
}

 程序演示结果:

(1)

(2)

 

这篇关于C++编程练习--“栈”小练“我赌你的枪里没有子弹”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/288082

相关文章

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基

C#异步编程ConfigureAwait的使用小结

《C#异步编程ConfigureAwait的使用小结》本文介绍了异步编程在GUI和服务器端应用的优势,详细的介绍了async和await的关键作用,通过实例解析了在UI线程正确使用await.Conf... 异步编程是并发的一种形式,它有两大好处:对于面向终端用户的GUI程序,提高了响应能力对于服务器端应

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

C++归并排序代码实现示例代码

《C++归并排序代码实现示例代码》归并排序将待排序数组分成两个子数组,分别对这两个子数组进行排序,然后将排序好的子数组合并,得到排序后的数组,:本文主要介绍C++归并排序代码实现的相关资料,需要的... 目录1 算法核心思想2 代码实现3 算法时间复杂度1 算法核心思想归并排序是一种高效的排序方式,需要用

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析