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++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function

豆包 MarsCode 不允许你还没有女朋友

在这个喧嚣的世界里,爱意需要被温柔地唤醒。为心爱的她制作每日一句小工具,就像是一场永不落幕的浪漫仪式,每天都在她的心田播撒爱的种子,让她的每一天都充满甜蜜与期待。 背景 在这个瞬息万变的时代,我们都在寻找那些能让我们慢下来,感受生活美好的瞬间。为了让这份浪漫持久而深刻,我们决定为女朋友定制一个每日一句小工具。这个工具会在她意想不到的时刻,为她呈现一句充满爱意的话语,让她的每一天都充满惊喜和感动

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

C++包装器

包装器 在 C++ 中,“包装器”通常指的是一种设计模式或编程技巧,用于封装其他代码或对象,使其更易于使用、管理或扩展。包装器的概念在编程中非常普遍,可以用于函数、类、库等多个方面。下面是几个常见的 “包装器” 类型: 1. 函数包装器 函数包装器用于封装一个或多个函数,使其接口更统一或更便于调用。例如,std::function 是一个通用的函数包装器,它可以存储任意可调用对象(函数、函数