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