现在的位置: 首页 > 综合 > 正文

火柴题解

2013年04月15日 ⁄ 综合 ⁄ 共 2271字 ⁄ 字号 评论关闭
// 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)++;
    }

抱歉!评论已关闭.