69,373
社区成员
发帖
与我相关
我的任务
分享
fflush(stdin);//这句放在scanf调用之前,紧跟scanf。
scanf_s("%u",&number);
我给你改过的代码如下,用VS2010测试通过。我之前回复的测试通过代码也是可以实现你的预期的。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ceng 1000
//记忆游戏,在屏幕上将一串数字显示很短的时间。玩家必须在数字消失之前记住他们,然后输入这串数字。每次过关后,计算机显示更长数字,最后打分
void kai_tou(void) //游戏开始介绍
{
printf("记忆游戏\n");
printf("游戏开始后,会出现一串数字,请记住数字,数字会在2秒后删除,然后请输出你记忆的数字,答对得分,答错不得分。\n每一关一共4次机会,答对3次晋级,答错2次及以上失败,结束。\n按0结束游戏\n");
printf("游戏开始!\n");
}
//短暂延迟后,消除一行数字
void remove_digit(void)
{
time_t start_time = 0;
start_time = clock();
for (; clock() - start_time < CLOCKS_PER_SEC * 2;);
printf("\r \n");
}
int main(void)
{
int i = 100;
unsigned int number = 0;
unsigned long long shu = 0ll; //用来打印出来随机数字,
int count = 6; //显示在第几级游戏
int cishu = 0;
bool correct = true;
time_t time_zhongzi = 0;
//开始介绍提示,先生成随机数字,打印出来,然后在消除,然后输入数字,判断对错,记录分数,继续循环,结束,给出得分
//1.开始介绍,提示
kai_tou();
do
{
//2.生成随机数字.这个是个循环开始
time_zhongzi = time(NULL);
srand(time_zhongzi);
for (int i = 0; i < count; i++)
{
printf("%d", rand() % 10);
}
//3.短暂延迟后,消除数字
remove_digit();
//4.输入数字,判断对错
srand(time_zhongzi); //输入的种子是一样的,srand。rand之后得到的随机数一样
for (int i = 0; i < count; i++)
{
int v = rand() % 10;
printf("\n输入前rand() % 10=%u\n",v);
fflush(stdin);//在这里是关键关键,说上3遍
scanf_s("%u",&number);
if (number != v)
{
correct = false;
break;
}
else cishu++;
}
printf("%s\n", correct ? "correct!" : "wrong!");
} while (2);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
//#include <stdbool.h>
#define ceng 1000
//记忆游戏,在屏幕上将一串数字显示很短的时间。玩家必须在数字消失之前记住他们,然后输入这串数字。每次过关后,计算机显示更长数字,最后打分
void kai_tou(void) //游戏开始介绍
{
printf("记忆游戏\n");
printf("游戏开始后,会出现一串数字,请记住数字,数字会在2秒后删除,然后请输出你记忆的数字,答对得分,答错不得分。\n每一关一共4次机会,答对3次晋级,答错2次及以上失败,结束。\n按0结束游戏\n");
printf("游戏开始!\n");
}
//短暂延迟后,消除一行数字
void remove_digit(void)
{
time_t start_time = 0;
start_time = clock();
for (; clock() - start_time < CLOCKS_PER_SEC * 2;);
printf("\r \n");
}
int main(void)
{
int i = 100;
unsigned int number = 0;
unsigned long long shu = 0ll; //用来打印出来随机数字,
int count = 6; //显示在第几级游戏
int cishu = 0;
bool correct = true;
time_t time_zhongzi = 0;
//开始介绍提示,先生成随机数字,打印出来,然后在消除,然后输入数字,判断对错,记录分数,继续循环,结束,给出得分
//1.开始介绍,提示
kai_tou();
do
{
//2.生成随机数字.这个是个循环开始
time_zhongzi = time(NULL);
srand(time_zhongzi);
char cTmp[5];
char* strRecord = new char[count+1];
int Temp;
for (int i = 0; i < count; i++)
{
Temp = rand() % 10;
printf("%d", Temp);
sprintf(cTmp,"%d",Temp);
if(i == 0)
{
strcpy(strRecord,cTmp);
}
else
{
strcat(strRecord,cTmp);
}
}
printf("\n");
//3.短暂延迟后,消除数字
//remove_digit();
//4.输入数字,判断对错
srand(time_zhongzi); //输入的种子是一样的,srand。rand之后得到的随机数一样
fflush(stdin);
for (int i = 0; i < count; i++)
{
scanf_s("%u",&number);
if (number != ((int)strRecord[i])-48)
{
correct = false;
break;
}
else cishu++;
}
printf("%s\n", correct ? "correct!" : "wrong!");
delete [] strRecord;
} while (2);
return 0;
}
scanf_s("%u\n",&number);