c语言,小问题

[复制链接]
查看11 | 回复2 | 2009-7-8 23:59:44 | 显示全部楼层 |阅读模式
下面是段数字记忆小游戏,我初学c,详答下呵
问题一、我的回答为什么一定要加空格,可不可以取消空格。如随机生成158,我要输入1 5 8才算正确...
问题二、for(int i=1;i
#include
#include
#include
#include
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("\n祝你好运!按回车键开始\n");

scanf("%c",&another_game);



do

{

correct=true;

counter=0;

sequence_length=2;

time_taken=clock();

while(correct)

{

sequence_length+=counter++%3==0;

seed=time(NULL);

now=clock();

srand((unsigned int)seed);

for(int i=1;i<=sequence_length;i++)

printf("%d",rand()%10);

for(;clock()-now<CLOCKS_PER_SEC;);

printf("\r");

for(int i=1;i<=sequence_length;i++)

printf(" ");



if(counter==1)

printf("\n现在请你输入数字序列,请不要忘记空格\n");

else

printf("\r");



srand((unsigned int)seed);

for(int i=1;i<=sequence_length;i++)

{

scanf("%d",&number);

if(number != rand()%10)

{

correct=false;

break;

}

}

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

}

time_taken=(clock()-time_taken)/CLOCKS_PER_SEC;

printf("\n\n 你的分数是 %d",--counter*100/time_taken);



fflush(stdin);



printf("\n你还想再玩一次吗 (y/n)?");

scanf("%c",&another_game);



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

return 0;
}

回复

使用道具 举报

千问 | 2009-7-8 23:59:44 | 显示全部楼层
楼主,经我调试后,回答如下~~~~希望能给你帮助!问题一、我的回答为什么一定要加空格,可不可以取消空格。如随机生成158,我要输入1 5 8才算正确...回答:该程序中采用scanf语句来接收字符,scanf在接收到空格或者回车的时候才会认为输入结束,所以必须要加空格才算正确。要想解决该问题,需要把随机数存储起来,下一次输入的时候直接比较就可以了,而且这样也是最简单的。问题二、for(int i=1;i<=sequence_length;i++)这个代码出现了两次,但i一直未在其它地方出现过,这句有什么作用;回答:i直接在for循环里面声明,所以它的生命周期在跳出该for循环的时候就结束了,所以不会在其它地方出现,即...
回复

使用道具 举报

千问 | 2009-7-8 23:59:44 | 显示全部楼层
1.请注意代码中的这里for(int i=1;i<=sequence_length;i++){scanf("%d",&number);如果你不加空格的话,第一次循环的scanf语句就能把所有整数全都读走了,读到的会是1582.典型的循环语句啊,i就是循环变量,让循环执行sequence_length次3.clock获得的是当前...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行