| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 772 人关注过本帖
标题:求助,想试试计算机随机数效果怎么样,但出了状况
只看楼主 加入收藏
谢晓乐
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2014-8-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
求助,想试试计算机随机数效果怎么样,但出了状况
想让a和b进行100次随机的石头剪刀布,然后输出输赢,但是我定义的数组却在运行过程中被破坏,后来又试了一种方法,就是把数组的指针传到函数中去,加上了const,代码如下,但数组还是被破坏了,不知为何,请教大神。
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void method(const int * const a, const int * const b, int *x,int *y);

int main()
{
    int a[100], b[100];        /*存储每次石头剪刀布的结果,0-石头,1-剪刀,2-布*/
    int x = 0, y = 0;        /*a、b胜利的次数*/
    int    i = 0;
    srand(time(NULL));
    for (i = 0;i < 100;i++)    /*100 times of game.*/
    {
        a[i] = rand() % 3;
        b[i] = rand() % 3;
        printf("a[%2d] = %d\tb[%2d] = %d\n", i, a[i], i, b[i]);
    }

    method(a,b,&x,&y);

    printf("%d\t%d", x, y);

    if (x > y)
    {
        printf("A wins!\n");
    }
    else if(y>x)
    {
        printf("B wins!\n");
    }
    else if (x = y)
    {
        printf("Both wins!\n");
    }
    else
    {
        printf("\aERROR!\n");
        Sleep(1000);
        exit(0);
    }

    _getch();
    return 0;
}

void method(const int * const a, const int * const b, int *x, int *y)
{
    int i = 0;
    for (i = 0;i < 100;i++)
    {
        switch (*(a+i))
        {
        case 0:
            switch (*(b+i))
            {
            case 0:break;
            case 1:(*x)++;
                break;
            case 2:(*y)++;
                break;
            default:printf("ERROR!\n");
                Sleep(1000);
                printf("\a");
                exit(0);
            }
        case 1:
            switch (*(b+i))
            {
            case 0:(*y)++;
                break;
            case 1:break;
            case 2:(*x)++;
                break;
            default:printf("ERROR!\n");
                Sleep(1000);
                printf("\a");
                exit(0);
            }
        case 2:
            switch (*(b+i))
            {
            case 0:(*x)++;
                break;
            case 1:(*y)++;
                break;
            case 2:break;
            default:printf("ERROR!\n");
                Sleep(1000);
                printf("\a");
                exit(0);
            }
        default:printf("ERROR!\n");
            Sleep(1000);
            printf("\a");
            exit(0);
        }
    }
}


图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

如图,我的数组元素全被破坏掉了;
搜索更多相关主题的帖子: 石头剪刀布 计算机 
2016-12-30 20:23
谢晓乐
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2014-8-5
收藏
得分:0 
回复 楼主 谢晓乐
By the way. 我VS2015的智能提示没有了,就消失掉了,现在好麻烦。
2016-12-30 20:31
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:20 
//这种switch嵌套容易造成混乱break~~~~

void method(const int * const a, const int * const b, int *x, int *y)
{
    int i = 0;
    for (i = 0;i < 100;i++)
    {
        switch (*(a+i))
        {
            case 0:
            switch (*(b+i))
            {
                case 0:break;
                case 1:(*x)++;break;
                case 2:(*y)++;break;
                default:printf("ERROR!\n");
                Sleep(1000);
                printf("\a");
                exit(0);
            }break;
            case 1:
            switch (*(b+i))
            {
                case 0:(*y)++;break;
                case 1:break;
                case 2:(*x)++;break;
                default:printf("ERROR!\n");
                Sleep(1000);
                printf("\a");
                exit(0);
            }break;
            case 2:
            switch (*(b+i))
            {
                case 0:(*x)++;break;
                case 1:(*y)++;break;
                case 2:break;
                default:printf("ERROR!\n");
                Sleep(1000);
                printf("\a");
                exit(0);
            }break;
            default:printf("ERROR!\n");
            Sleep(1000);
            printf("\a");
            exit(0);
        }
    }
}


[此贴子已经被作者于2016-12-30 21:02编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-30 20:51
谢晓乐
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2014-8-5
收藏
得分:0 
回复 3楼 九转星河
太好啦,确实能执行了,谢谢!
2016-12-30 20:59
快速回复:求助,想试试计算机随机数效果怎么样,但出了状况
数据加载中...
 
   



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

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