求助,想试试计算机随机数效果怎么样,但出了状况
想让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);
}
}
}如图,我的数组元素全被破坏掉了;









