C语言基础练习——打字游戏

一.思路:利用随机数在黑窗口随机生成一串字符;

           键盘输入相应的字符,通过判断生成的和我们输入的字符是否相同,计算出正确率。

二.代码展示

//头文件

#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“键,继续打字按空格。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值