老师要我们做一个猜数字的游戏,想必大家也都知道这是一个什么东西了。我也做出来了,但是老师要求计算机给的四个随机数是不相同的,我弄不出,每次都是会有重复的数字出现,郁闷啊
哪位高手教教我
下面是我的程序
#include "stdio.h" #include "stdlib.h" #include "time.h" #include "string.h"
main() { int a[4], b[4], flaga[4], flagb[4], i, j, x, y, num; //a数组记录四个随机数,b数组记录用户输入的四个数,flaga表示四个随机数中哪些已被猜出,flagb表示用户四个输入哪些对了 char error; printf("现在开始猜数游戏,请按提示依次输入四个0~9的整数.您共有10次机会.\n"); srand((unsigned)time(NULL));//利用系统当前时间秒数做随机种子 for (i = 0; i < 4; i++) { a[i] = (int)( rand() / 32767.0 * 10); if (a[i+1]==a[i]) a[i+1]=(int)( rand() / 32767.0 * 10);//计算机生成四个随机数 printf("%d ",a[i]); } for ( num = 0; num < 10; num ++) { x = 0; y = 0;//结果统计清零 for (i = 0; i < 4; i++) { flaga[i] = 0;//表示该随机数尚未被猜出 flagb[i] = 0;//表示该用户输入不对 b[i] = -1; while( b[i] == -1 ) { printf("请输入您猜测的第%d个数:", i+1); scanf("%d", &b[i]); if (b[i] == -1) { printf("您输入的不是自然数,请重新输入.\n"); scanf("%s", &error); } } if (a[i]==b[i]) { x++;//数字对且位置对的个数x flaga[i] = 1;//当前随机数被猜出 flagb[i] = 1;//当前用户的输入是正确的 } } for (i = 0; i < 4; i++) { if (flaga[i] == 1) continue;//如果当前随机数已经被猜出,就比较下一个随机数 for (j = 0; j < 4; j++) { if ( (flagb[j] == 0) && (a[i] == b[j]) ) { y++;//数字对但位置不对的个数y加1 flagb[j] = 1;//表示当前输入是对的. break; } } } if (x == 4) { printf("恭喜你,猜对了!"); break; } else { printf("抱歉,您完全猜对的有%d个数,数字对而位置不对的有%d个数\n", x, y); if (num == 9) printf("对不起,您失败了."); else printf("您还有%d次机会.\n", 9-num); } } }