`
javatgo
  • 浏览: 1204917 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

火柴题解

 
阅读更多
// huocai.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<string>
#define NUM 20
using namespace std;

void main()
{
//规则的输出
cout<<endl;
cout<<"***************************************************"<<endl;
cout<<"游戏规则:共有67根火柴,2个人依次拿取,每个人每次只"<<endl;
cout<<"能拿1跟或者2跟或者3跟火柴。拿到最后一跟火柴的人算输"<<endl;
cout<<"****************************************************"<<endl;
cout<<endl;
//变量的定义
int match_num=67; //火柴数目
int *p_match_num; //指向火柴数目的指针
int player = 0; //玩家变量,偶数代表玩家1,奇数代表玩家2
char player_first[NUM]; //玩家1的名字
char player_second[NUM]; //玩家2的名字
char judge; //判断变量,值为'y'时,表示玩家1先开局
int put_num=0; //拿走火柴的数目
char temp[NUM];
char *p_player_now;
int *p_put_num; //指向拿走火柴数目的指针
int *p_player;
//指针赋值
p_match_num=&match_num;
p_put_num=&put_num;
p_player=&player;
p_player_now=player_first;
//函数的定义

void match(int* p_player, int* p_match_num,int* p_put_num,char* p_player_now); //火柴拿走数目函数
//游戏开始
cout<<"请输入玩家1的名字:";
gets(player_first);
cout<<"请输入玩家2的名字:";
gets(player_second);
//玩家开局顺序的选择
cout<<"玩家“"<<player_first<<"”选择拿火柴顺序(“F(First)/S(Second)”)";
cin>>judge;
if(judge=='s')1
{
strcpy(temp,player_first);
strcpy(player_first,player_second);
strcpy(player_second,temp);
}
cout<<"玩家“"<<player_first<<"”先开始"<<endl;
cout<<endl;
//火柴的拿取
while(1)
{
if(player%2==0)
p_player_now=player_first;
else
p_player_now=player_second;
match(p_player,p_match_num,p_put_num,p_player_now);
match_num=match_num-put_num;
if(match_num==0)
{
cout<<"玩家“"<<p_player_now<<"”您输了!"<<endl;
break;
}
}
}

void match(int* p_player,int* p_match_num,int* p_put_num,char* p_player_now)
{
cout<<"请“"<<p_player_now<<"”输入准备拿走火柴的数目:";
cin>>*p_put_num;
while(*p_put_num!=1 && *p_put_num!=2 && *p_put_num!=3 || *p_match_num-*p_put_num<0)
{
if(*p_put_num!=1 && *p_put_num!=2 && *p_put_num!=3)
{
cout<<"您输入的数值不合法,拿走的火柴数目只能是 1 或 2 或 3,请重新输入:";
cin>>*p_put_num;
}
if(*p_match_num-*p_put_num<0)
{
cout<<"您输入的数值大于剩余火柴数目,请重新输入:";
cin>>*p_put_num;
}
}
cout<<"您拿走的火柴数目是: "<<*p_put_num<<endl;
cout<<"剩余火柴数目是: "<<*p_match_num-*p_put_num<<endl;
cout<<endl;
(*p_player)++;
}
分享到:
评论

相关推荐

    南昌网络赛题解1

    【南昌网络赛题解1】主要讨论的是一种利用线段树进行高效查询和更新的算法。线段树是一种数据结构,常用于处理区间查询和区间更新的问题。在本题中,问题涉及到找到某个节点在某种特定序列中的最优解。描述中提到的...

    2024CSP-J复赛真题题解-T3:小木棍

    一个优秀的题解,不仅需要提供正确的答案,更需要详尽的解释,帮助其他参赛者理解解题过程中可能遇到的难点和解决这些问题的方法。 由于CCF对于复赛题目及题解的保密性要求,这里不便过多透露题目的具体信息和解法...

    noip2013解题报告

    目标是通过交换操作使两列火柴之间的距离最小,即最小化所有对应位置火柴高度差的平方和。并求出达到此状态所需的最小交换次数。 **算法分析:** - **排序匹配**:首先将两列火柴按照高度排序,保证两列火柴一一...

    安徽省第六届安徽省大学生程序设计竞赛题目和解题报告

    安徽省第六届安徽省大学生程序设计竞赛是一场旨在检验大学生编程能力、逻辑思维和问题解决能力的高水平比赛。此类竞赛通常包括多项编程题目,涵盖算法设计、数据结构、计算机科学基础等多个方面。...

    算法笔记上机训练实战指南

    《算法笔记上机训练实战指南》是《算法笔记》[1] 的配套习题集,内容按照《算法笔记》的章节顺序进行编排,其中整理归类了PAT甲级、乙级共150多道题的详细题解,大部分题解均编有题意、样例解释、思路、注意点、参考...

    一元一次不等式组练习题.pdf

    - 第16题是几何应用问题,要求利用火柴棒围成长方形的不同方式,涉及到不等式组的求解。 - 第17题是实际应用题,通过对话求解饼干和牛奶的价格,需要解析对话中的信息并建立数学模型。 解决这些问题需要理解...

    数据结构和算法试题-总共1000多页带目录

    这本1000多页的PDF文档是关于数据结构和算法题解的集合,它涵盖了计算机科学与技术领域的核心内容。文档分为多个章节,每个章节专注于不同算法或数据结构的详细解析和应用实例。以下将详细介绍文档中提到的知识点。 ...

Global site tag (gtag.js) - Google Analytics