我把第三题改了改 变成了一个小游戏 看看谁能挑战一下5秒 呵呵!~~
程序代码:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define MEMORYTIMELEN 5 // 5秒记忆时间
// 游戏过程
void Game()
{
int arrNum[100] = {0};
int t = 0; // 交换数组中两个数的临时变量
int p = 0; // 交换数组中随机生成的被交换的数组位置
int i = 0;
int j = 0;
int nInput = -1; // 用户输入的那个数
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); // 得到控制台窗口句柄,进而控制控制台的字体颜色
// 初始化随机数种子
// 如果你在程序中手动的初始化数组或者用户输入,就不用这个随机生成数组的方法了
srand((unsigned int)time(NULL));
// 初始化数组
for (i=0; i<99; i++)
arrNum[i] = i+1;
arrNum[99] = rand()%99+1;
for (i=0; i<100; i++)
{
// 随机交换一下数组,为了打乱数组,这样便于测试,也便于对后面的程序理解
p = rand()%100;
t = arrNum[i];
arrNum[i] = arrNum[p];
arrNum[p] = t;
}
// 输出被打乱的数组
system("cls");
for (i=0; i<100; i++)
printf("%d ", arrNum[i]);
printf("\n");
printf("你有时间记录这些数字:");
for (i=MEMORYTIMELEN; i>0; i--)
{
printf("\b\b%02d", i);
Sleep(1000);
}
system("cls");
// 让用户输入他记录的数字
printf("你几下的那个相同的数字是:");
scanf("%d", &nInput);
// 寻找数组中的相同的那个值
for (i=0; i<99; i++)
{
for (j=i+1; j<100; j++)
{
if (arrNum[i] == arrNum[j])
{
if (arrNum[i] == nInput)
{
SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
printf("你猜对了!你的眼里太牛了!\n"
"为了证明你的实力,我们再玩一回吧!\n");
SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
else
{
SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("那个相同的数字是:%d\n"
"很遗憾,你没有猜对那个数!你可以重新再尝试一次!\n",
arrNum[i]);
SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
return;
}
}
}
}
int main(int argc, char* argv[])
{
while (TRUE)
{
Game();
getch();
}
return 0;
}