一.思路:利用随机数在黑窗口随机生成一串字符;
键盘输入相应的字符,通过判断生成的和我们输入的字符是否相同,计算出正确率。
二.代码展示
//头文件
#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<stdlib.h>
//构造函数
void help(void)
{
printf("\n***************************************");
printf("\n*输入过程中无法退出;");
printf("\n*请按所给字母敲击键盘;");
printf("\n*按任意键开始测试,按下首字母计时开始;");
printf("\n*输入出错则以_表示;");
printf("\n***************************************\n\n");
}
int main()
{
char ch;
char str[51];
int i;
int count = 0;
//声明开始时间和结束时间
time_t start_time, end_time;
//一直循环下去
while (true)
{
//每循环一次清屏一次
system("cls");
//调用函数打印帮助信息
help();
//键盘随意输入字符,开始下面的程序
ch = _getch();
//随机数的种子
srand((unsigned int)time(NULL));
//随机生成50个从a~z的字符
for (i = 0; i < 50; i++)
{
str[i] = rand() % 26 + 'a';
}
str[50] = '\0';
//再黑窗口打印出这50个字符
printf("%s\n", str);
count = 0;
for (i = 0; i < 50; i++)
{
//从键盘输入一个字符
ch = _getch();
if (i == 0)
{
//开始计时
start_time = time(NULL);
}
if (ch = str[i])
{
count++;
printf("%c", ch);
}
//如果输入的字符与生成的字符不同,则用 ”_“ 代替
if(ch!==str[i])
{
printf("_");
}
//结束计时
end_time = time(NULL);
}
printf("\n正确率: %d %c\n", count * 100 / 50, '%');
printf("用时: %lld 秒\n ", (long int)end_time - start_time);
printf("按Esc键退出\n 按空格键继续\n");
while (true)
{
ch = _getch();
//如果输入空格,则重新开始
if (ch == ' ')
{
break;
}
if (ch == 27)
{
//退出程序
return 0;
}
}
}
return 0;
}
三.黑窗口展示
这是运行之后的窗口
按下任意键后生成50个从a~z的随机字符
从键盘输入50个字符后,本次循环结束,显示本次正确率和时间
退出按”ESC“键,继续打字按空格。