c语言,小问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 20:06:03
下面是段数字记忆小游戏,我初学c,详答下呵
问题一、我的回答为什么一定要加空格,可不可以取消空格。如随机生成158,我要输入1 5 8才算正确...
问题二、for(int i=1;i<=sequence_length;i++)这个代码出现了两次,但i一直未在其它地方出现过,这句有什么作用;
问题三、for(;clock()-now<CLOCKS_PER_SEC*2;);网上搜索说等待一秒是for(;clock()-<CLOCKS_PER_SEC*2;);即可,这里为什么要减去now;
问题四、time_taken在这里面是干啥的?

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>

int main(void)
{
char another_game='N';
bool correct=true;/* int correct=false;*/
int counter=0;
int sequence_length=0;
time_t seed=0;
int number=0;
time_t now=0;
int time_taken=0;

printf("\n现在进行个小游戏,");
printf("\n屏幕上会出现一组数字.");
printf("\n请注意看并记下来,数字只显示1秒钟!");
printf("\n然后请你记下相同的数字序列");
printf("并在后面写下它们.");
printf(&

楼主,经我调试后,回答如下~~~~希望能给你帮助!

问题一、我的回答为什么一定要加空格,可不可以取消空格。如随机生成158,我要输入1 5 8才算正确...

回答:该程序中采用scanf语句来接收字符,scanf在接收到空格或者回车的时候才会认为输入结束,所以必须要加空格才算正确。
要想解决该问题,需要把随机数存储起来,下一次输入的时候直接比较就可以了,而且这样也是最简单的。

问题二、for(int i=1;i<=sequence_length;i++)这个代码出现了两次,但i一直未在其它地方出现过,这句有什么作用;

回答:i直接在for循环里面声明,所以它的生命周期在跳出该for循环的时候就结束了,所以不会在其它地方出现,即使出现也是错误的。

问题三、for(;clock()-now<CLOCKS_PER_SEC*2;);网上搜索说等待一秒是for(;clock()-<CLOCKS_PER_SEC*2;);即可,这里为什么要减去now;

回答:clock获得的是当前时间,now是在循环前获得的初始时间,两个相减所得的就是过了多少时间,CLOCKS_PER_SEC是1s,这样这个差值跟CLOCKS_PER_SEC相比才是对的。 楼主,那个“*2”应该是误写的吧,不然就错了,呵呵~~

问题四、time_taken在这里面是干啥的?

回答:time_taken在这里是计算从一局开始到输入错误后总共所花费的时间,然后用 “猜对个数/花费的时间time_taken”这个公式来计算你的 “分数”

1.请注意代码中的这里
for(int i=1;i<=sequence_length;i++)
{
scanf("%d",&number);
如果你不加空格的话,第一次循环的scanf语句就能把所有整数全都读走了,读到的会是158

2.典型的循环语句啊,i就是循环变量,让循环执行sequence_length次

3.clock获得的是当前时间,now是在循环