C语言记忆测试判断,随机数怎么不能判读记忆输入是否一致呢

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

随机数怎么不能判读记忆输入是否一致呢

#include

#include

#include

#include

#include

int main(void)

{

char ag='Y';                //重新开始游戏

bool correct=false;

int score=0;               //记录正确的次数

int length=0;

time_t seed=0;

int n=0;                    //存储输入的数字

int i,j,p;

time_t now=0;

int time_taken=0;

do

{

system("cls");

printf("下面为一个简单的记忆游戏,\n\n");

printf("屏幕中会随机出现几个数字,\n\n");

printf("请仔细看并记住,数字仅显示1秒钟.\n\n");

printf("之后数字会消失,然后需要你输入记住的数字,\n\n");

printf("输入数字时候,切记数字之间的空格也需要输入,\n\n");

printf("祝你好运,Enter开始游戏!\n\n");

getch();

correct=true;

score=0;

length=2;                       //控制初始随机数字的个数

while(correct)

{

length+=score++%3==0;     //连续正确3次,数字长度增加

//    seed=time(NULL);         //1

//    srand((unsigned int)seed);//2

//    srand((unsigned)time(NULL)); //用当前时间,设置种子 //3

srand((unsigned) time(&seed)); //4 //用seed的地址做种子?

now=clock();

for(i=1;i<=length;i++)

{

printf("%d ",rand()%10);    //打印随机数字序列

}

for(;clock()-now

printf("\r");                        //回到开头

for(p=1;p<=length;p++)

{

printf("  ");               //打印2个空格覆盖数字

}

if(score==1)

{

printf("现在你输入记住的数字,别忘记空格\n");

}

else

{

printf("\r");

}

srand((unsigned int)seed);        //重置随机序列

for(j=1;j<=length;j++)

{

scanf("%d",&n);

if(n!=rand()%10)

{

correct=false;

break;

}

}

printf("%s\n\n",correct?"正确!":"错误!");

}

time_taken=(clock()-time_taken)/CLOCKS_PER_SEC;   //花费的时间

printf("最后得分:%d",score*100/time_taken);

fflush(stdin);

printf("你想再次游戏吗,Y/N\n\n");

scanf("%c",&ag);

} while(toupper(ag)=='Y');

return 0;

}

上面是我参考C经典的一个例子做的,运行没有问题了。但是有点地方不太明白,恳请哪位可以指导分析一下。我初学,好些东西不太明白。

问题:在上面//连续三行注释的地方,就是随机数生成的那个地方;我标记了1.2.3.4的地方。

问题一:用注释3的语句,产生的数字随机了,但是后面输入的记忆数字无论正确与否,都提示错误,这个是为什么呢?

二、单独用4.和3的区别是参数不同,一个是NULL,一个是&seed,实际运行结果是数字随机了,也可判断输入记忆数字是否正确了。我用了4,但是不是很理解。我自己百度查的,然后自己尝试的语句,但不是很理解原因。所以求分析帮忙。谢谢

[本帖最后由 wanglianyi1 于 2015-7-1 13:22 编辑]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值