标题:[求助]一个小问题
取消只看楼主
雪依然飘
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-6-1
 问题点数:0 回复次数:1 
[求助]一个小问题

老师要我们做一个猜数字的游戏,想必大家也都知道这是一个什么东西了。我也做出来了,但是老师要求计算机给的四个随机数是不相同的,我弄不出,每次都是会有重复的数字出现,郁闷啊

哪位高手教教我

下面是我的程序

#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); } } }

搜索更多相关主题的帖子: include 用户 
2004-06-01 23:16
雪依然飘
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-6-1
得分:0 

谢谢了哦 我知道的 就是再比较一次 感觉c好难哦

以后肯定还会有很多问题打扰的 嘿嘿

2004-06-02 22:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-1909-1-1.html




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

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