| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 247 人关注过本帖
标题:有没有大佬帮我看看,为什么程序不能编译呀??
只看楼主 加入收藏
ManInBlack8
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-10-12
结帖率:0
  已结贴   问题点数:10  回复次数:4   
有没有大佬帮我看看,为什么程序不能编译呀??
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <math.h>
int PlayerMoney=1000;
int DealerMoney=1000;
int bet;
int BetMoney;
int a,b,c;
void ShowToScreen();
int GetBet();
int GetAmount();
void Throw();
int Judge(int a,int b,int c);
void MoneyCalc();
int check(int pm,int dm);
int main()
{
    char ch;
    int CheckMoney;
    ShowToScreen();
    while(1)    //游戏死循环
    {
        if(PlayerMoney<10)
        {
            printf("您没有10个积分,不能继续游戏\n");
            break;
        }
        if(DealerMoney<10)
        {printf("对手不足10积分,没有资格参与游戏\n");
            break;
        }
    bet         = GetBet();   //bet保存选择方式
repeat:BetMoney = GetAmount();
    if(BetMoney>PlayerMoney)
    {
        printf("您没有这么多的积分,请重新输入\n");
        goto repeat;
    }
    if(BetMoney>DealerMoney)
    {
        printf("对手没有这么多积分,他要求您重新下注\n");
        goto repeat;
    }
    Throw();         //掷出骰子
    MoneyCalc();     //计算输赢积分
    getch();       //抛弃Kbhit函数在缓冲区的按键
    //检查是否有足够的积分进行游戏,CheckMoney保存返回值
    CheckMoney=check(PlayerMoney,DealerMoney);
    //假如返回值等于0,表示没有足够的积分来继续游戏
    if(CheckMoney==0)
        break;
        printf("继续玩吗?(退出请按q键,继续请按其它按键)\n\n");
    if((ch==getchar())=='q')
    {
        break;
    }
    }
    return 0;
}

//显示游戏规则
void ShowToScreen()
{
    printf("                            欢迎体验博弈机1.0\n");
    printf("*************************************************************************\n");
    printf("  玩家和对手各有1000积分作为游戏的起始资金\n");
    printf("  在博弈机1.0中,由玩家选择一定积分来游戏\n");
    printf("  玩家可以选择方式,以及每轮游戏支出的积分数(10-100),方式有三种:\n\n");
    printf("        一、选大。    二、选小。      三、选豹子。\n\n");
    printf("  下面逐一介绍这三种方式的不同:\n\n");
    printf("  假如玩家选大,那么玩家所掷出的三粒骰子的点数加起来必须大于11。如玩家掷出:5,3,6");
    printf("  三粒骰子相加:5+3+6=14,大于11,那么玩家赢,假如小于11,那么玩家输。输赢的积分为支出积分的2倍");
    printf("  也就是说,赢得一方将获得2倍支出积分。");
    printf("  假如等于11,那么打成和局。\n");
    printf("  假如玩家选小,那么玩家所掷出的三粒骰子的点数加起来必须小于11。获得的积分与选大相同\n");
    printf("  假如玩家选豹子,那么玩家所掷出的三粒骰子的点数必须是一样的。如8,8,8\n");
    printf("  玩家成功的掷出豹子后,玩家将获得10倍积分奖励。如玩家支出了20积分,那么将获得200积分\n");
    printf("  假如玩家选了豹子缺没有掷出豹子,那么玩家将损失2倍积分。如玩家支出20积分,那么玩家损失40积分\n");
    printf("  玩家可以按q键随时终止游戏,假如不终止游戏,那么游戏会一直进行下去,直到玩家或对手有一方积分不足。\n");
    printf("  规则说明完毕,祝您玩的愉快!\n");
    printf("*************************************************************************\n");
}


//获取选择方式
int GetBet()
{
    int BetType;   //选择方式
    printf("\n请选择方式");
    printf("1.选大 2.选小 3.选豹子\n");
    printf("请选择:");
    scanf("%d",&BetType);   //输入方式

    //判断是否输入1-3数字,假如不是,那么取默认值,默认值为1
    if(BetType==1||BetType==2||BetType==3)
    {
        return BetType;
    }
    else
    {
        return 1;
    }
}


//获取玩家积分
int GetAmount()
{
    int BetMoney;
    /*输入支出的积分*/
    printf("您要支出多少积分(最少10个,最多100个):");
    scanf("%d",&BetMoney);

    //假如支出超过输入范围,那么修改它
    if(BetMoney<10)
    {
        BetMoney=10;
    }
    if(BetMoney>100)
    {
        BetMoney=100;
    }
    return BetMoney;
}


//掷骰子并根据点数计算输赢积分
void Throw()
{
    printf("欢迎您体验博弈机,请按键盘任意键掷出骰子");
    getch();   //等待用户按下任意键
    srand(time(0));  //将系统时钟作为种子
    while(!kbhit())  //当按下任意键时,循环结束
    {
        a = rand()%6;  //得到一个在0-5的随机数
        b = rand()%6;  //得到一个在0-5的随机数
        c = rand()%6;  //得到一个在0-5的随机数
        a++;   //自加后,得到一个在1-6的随机数
        b++;   //自加后,得到一个在1-6的随机数
        c++;   //自加后,得到一个在1-6的随机数
        system("cls");  //清空屏幕
        printf("骰子在转动:……………………按键盘上任意键停止转动!\n");
        //输出3个随机数
        printf("第一粒骰子:%d\n第二粒骰子:%d\n第三粒骰子:%d\n",a,b,c);
    }
}


//判断点数,是大,是小,是豹子
int Judge(int a,int b,int c)
{
    if(a==b&&a==c)   //假如是豹子   
        return 3;   //返回3   
    if(a+b+c>11)   //假如是大
        return 2;  //返回2
    else if(a+b+c<11)   //假如是小
        return 1;  //返回1
    else           //其他则是平手
        return 0;  //返回0
   

}
//  计算输赢积分
void Moneycalc()
{
    if(Judge(a,b,c)==3)    //假如Judge函数返回3,那么点数为豹子
    {
        if(bet==3)
        {
            BetMoney*=10;               //玩家支出的积分乘以10
            DealerMoney-=BetMoney;      //对手减少10倍积分
            PlayerMoney+=BetMoney;      //玩家增加10倍积分
            //  输出玩家获得的积分,以及玩家和对手现在的积分
            printf("豹子,10倍积分!您获得%d积分,您现在共有%d积分,对手还剩下%d积分\n\n",BetMoney,DealerMoney,PlayerMoney);
        }
        else              //假如玩家没有选豹子
        {
            BetMoney*=2;                //玩家支出的积分乘以2
            DealerMoney+=BetMoney;      //对手增加2倍积分
            PlayerMoney-=BetMoney;      //玩家减少2倍积分
            //  输出玩家损失的积分,以及玩家和对手现在的积分
            printf("豹子,10倍积分!您输了%d积分,您现在共有%d积分,对手还剩下%d积分\n\n",BetMoney,DealerMoney,PlayerMoney);
        }
    }
    else if(Judge(a,b,c)==2)
    {
        BetMoney*=2;     //玩家支出的积分乘以2
        if(bet==1)
        {
            DealerMoney-=BetMoney;      //对手减少10倍积分
            PlayerMoney+=BetMoney;      //玩家增加10倍积分
            //  输出玩家获得的积分,以及玩家和对手现在的积分
            printf("大,2倍赔率!您赢得了%d积分!您现在共有%d积分,对手还剩下%d积分\n\n",BetMoney,DealerMoney,PlayerMoney);
        }
        else       //假如玩家没有选大
        {
            DealerMoney+=BetMoney;      //对手增加2倍积分
            PlayerMoney-=BetMoney;      //玩家减少2倍积分
            //  输出玩家损失的积分,以及玩家和对手现在的积分
            printf("大,2倍赔率!您输了%d积分!您现在共有%d积分,对手还剩下%d积分\n\n",BetMoney,DealerMoney,PlayerMoney);

        }
    }
    else if(Judge(a,b,c)==1)
    {
        BetMoney*=2;     //玩家支出的积分乘以2
        if(bet==2)      
        {
            DealerMoney-=BetMoney;      //对手减少10倍积分
            PlayerMoney+=BetMoney;      //玩家增加10倍积分
            //  输出玩家获得的积分,以及玩家和对手现在的积分
            printf("小,2倍赔率!您赢得了%d积分!您现在共有%d积分,对手还剩下%d积分\n\n",BetMoney,DealerMoney,PlayerMoney);
        }
        else      //假如玩家没有选小
        {
            DealerMoney+=BetMoney;      //对手增加2倍积分
            PlayerMoney-=BetMoney;      //玩家减少2倍积分
            //  输出玩家损失的积分,以及玩家和对手现在的积分
            printf("小,2倍赔率!您输了%d积分!您现在共有%d积分,对手还剩下%d积分\n\n",BetMoney,DealerMoney,PlayerMoney);
        }
    }
    else  //否则,Judge函数返回的一定0,那么点数为中
    {
        //  输出玩家和对手打平的信息
        printf("中,您和对手打成平手!您现在共有%d积分,对手还剩下%d积分\n\n",BetMoney,DealerMoney,PlayerMoney);
    }
}

//  检查玩家和对手是否有足够的积分来游戏
int check(int pm,int dm)
{
    if(pm<=0)    //  假如玩家的积分小于等于0
    {
        if(pm==0)   //  假如玩家的积分等于0
            printf("您没有积分了,请参与别的活动赚取积分!!!\n");
        else        //  否则,就是输得过多,导致欠账了
            printf("现在您欠对手%d积分,请三日内参与活动赚取积分,否则账号将会被冻结!!!\n");
        return 0;   //  玩家没有足够的积分来游戏,则返回0
    }
    if(dm<=0)    //  假如对手的积分小于等于0
    {
        if(dm==0)   //  假如对手的积分等于0
            printf("对手没有积分了,他不想再和您玩了!!!\n");
        else        //  否则,就是输得过多,导致欠账了
            printf("现在对手欠对手%d积分,如果他不能在三日内还清欠款,那么他的账号就归您了!!!\n");
        return 0;   //  对手没有足够的积分来游戏,则返回0
    }
    return 1;   //  玩家和对手都有足够的积分来游戏,则返回1
}
2019-03-14 23:51
ManInBlack8
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-10-12
  得分:0 
附件: 您没有浏览附件的权限,请 登录注册
2019-03-15 00:12
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:188
帖 子:6510
专家分:28754
注 册:2014-5-20
  得分:4 
写了那么多才发现不能编译?从main开始逐个模块调试编译看看

[此贴子已经被作者于2019-3-15 05:02编辑过]

2019-03-15 05:01
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:300
帖 子:6297
专家分:36591
注 册:2011-1-18
  得分:4 
为什么不按照编译器给出的错误提示改?
你不肯这么改,别人也没法帮你呀!
2019-03-15 08:31
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:385
帖 子:13234
专家分:50960
注 册:2012-10-18
  得分:4 
暂时忽略警告信息,那么你只有一个错误  就是关于void MoneyCalc(); 这个函数的  那么你看看你的声明和实现是否一致 ,因为是自定义函数,所以一定是声明与实现不一致,才导致链接失败

DO IT YOURSELF !
2019-03-15 08:42







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.196088 second(s), 9 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved