搜索
查看: 754|回复: 3
打印 上一主题 下一主题

无意中写了个斗地主发牌程序,无缘无故总是报错

[复制链接]
跳转到指定楼层
楼主
发表于 2015-8-28 19:47:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
char poker[20]={' ','3','4','5','6','7','8','9','T','J','Q','K','A','2','M','S'};
int v[3][20],sum[3]={27,27,27},w=NULL,x[60]={1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,15};
int i,j;
void poker_a()
{
        int p,book[54]={0};
    for(i=0;i<17;i++)
    {
                a:
                p=rand()%54;
        if(book[p]==0)
        {
                        v[0]=x[p];
            book[p]=1;
        }
        else goto a;
    }
    for(i=0;i<17;i++)
    {
                b:
                p=rand()%54;
        if(book[p]==0)
        {
                        v[1]=x[p];
            book[p]=1;
        }
        else goto b;
    }
    for(i=0;i<17;i++)
    {
                c:
                p=rand()%54;
        if(book[p]==0)
        {
                        v[2]=x[p];
            book[p]=1;
        }
        else goto c;
    }
}
void poker_b()
{
        int t;
        for(i=0;i<17;i++)
                for(j=i+1;j<17;j++)
                if(v[0]<v[0][j])
            {t=v[0];v[0]=v[0][j];v[0][j]=t;}
    for(i=0;i<17;i++)
                for(j=i+1;j<17;j++)
                if(v[1]<v[1][j])
            {t=v[1];v[1]=v[1][j];v[1][j]=t;}
    for(i=0;i<17;i++)
                for(j=i+1;j<17;j++)
                if(v[2]<v[2][j])
            {t=v[2];v[2]=v[2][j];v[2][j]=t;}
}

int main()
{
        srand((unsigned)time(0));
        puts("请按任意键开始游戏,按esc键退出");
    if(getch()==27)
                exit(0);
    system("cls");
        poker_a();
    poker_b();
        for(i=0;i<17;i++)
                printf("%c",poker[v[0]]);
    puts("");
    for(i=0;i<17;i++)
                printf("%c",poker[v[1]]);
    puts("");
    for(i=0;i<17;i++)
                printf("%c",poker[v[2]]);
    puts("");
        system("pause");
    return 0;
}


沙发
发表于 2015-8-28 20:33:03 | 只看该作者
错误信息截个
板凳
发表于 2015-8-28 21:04:37 | 只看该作者
[mw_shl_code=c,true]v[0]=x[p];[/mw_shl_code]
这里v是二维数组,v[0]就是一个一维数组,不能直接把x[p](一个整数值)赋给他,也不能直接把它当做整数来用
如果真的要取v所代表的内存空间中的第一个元素(楼主好像不是这个意思),那就要cast了
请再去看看数组怎么用
PS:这里不需要使用goto,应该避免
地板
 楼主| 发表于 2015-8-28 21:14:33 | 只看该作者
谢谢。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表