数字游戏(继Day 10)

主体:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>#include"mygetch.h"#define MAX 51 //定义测试字母的最大长度void help()
{printf("\n****************************************");printf("\n*输入过程中无法退出,输入错误则以_表示!*");printf("\n按任意键开始测试,按下首字母时开始计时!*");printf("\n****************************************");
}
void start(char *str)
{srand((unsigned int)time(NULL));//随机种子int i = 0;for(i = 0;i < MAX-1;i++)//打印50个英文字符用于测试{*(str+i) = rand()%26+'a';}*(str+MAX-1) = '\0'; //写完字符后补上结束标志位
}
void on_game(char *str)
{
char ch;
int i = 0;
int count = 0;
time_t t_start,t_end;system("clear"); //先清屏
printf("\n%s\n",str);count = 0;
for(i = 0;i < MAX-1;i++)
{ch = mygetch();if(i == 0){t_start = time(NULL);}if(ch == *(str+i)){printf("%c",ch);count++;}else{printf("_"); //打印出错标志}
}t_end = time(NULL); //取结束时间printf("\n正确输入!\n用时 %ld s\n",t_end - t_start);printf("正确率%lf %%\n",(count*1.0/(MAX-1))*100);printf("按下Esc退出,任意键继续!\n\n");
}int main()
{char str[MAX] = {0};while(1){help(); //游戏说明菜单start(str); //产生随机字母mygetch();on_game(str); //开始游戏char ch = mygetch();if(ch == 27)//Esc的ascii为27{break;}system("clear"); //先清屏}return 0;
}

 mygetch.c

#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include "mygetch.h"int mygetch(void)
{struct termios oldt, newt;int ch;// 获取当前终端设置tcgetattr(STDIN_FILENO, &oldt);newt = oldt;// 修改终端设置 - 禁用回显和规范模式newt.c_lflag &= ~(ICANON | ECHO);// 应用新设置tcsetattr(STDIN_FILENO, TCSANOW, &newt);// 获取字符ch = getchar();// 恢复原始终端设置tcsetattr(STDIN_FILENO, TCSANOW, &oldt);return ch;
}

mygetch.h

#ifndef MYGETCH_H
#define MYGETCH_H// 声明mygetch函数
int mygetch(void);#endif


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谈谈模板方法模式,模板方法模式的应用场景是什么?

一、模式核心理解 模板方法模式是一种​​行为设计模式​​&#xff0c;通过定义算法骨架并允许子类重写特定步骤来实现代码复用。 如同建筑图纸规定房屋结构&#xff0c;具体装修由业主决定&#xff0c;该模式适用于​​固定流程中需要灵活扩展​​的场景。 // 基础请求处理…

2024 Jiangsu Collegiate Programming Contest H

记录一下为数不多的网络流 #pragma GCC optimize(3,"Ofast","inline") #include<bits/stdc.h> #include <execution> using namespace std; using i64 long long; using i128 __int128;template <typename T>struct MCFgraph{struct …

Hadoop序列化与反序列化

一、Hadoop序列化概述 &#xff08;一&#xff09;什么是序列化和反序列化 序列化&#xff1a;序列化是将对象&#xff08;如Java中的类实例&#xff09;转换为字节序列的过程。在Hadoop中&#xff0c;数据在分布式系统中传输或者存储到磁盘时&#xff0c;需要将数据对象序列…

FreeRTOS临界区

在FreeRTOS中&#xff0c;临界区通过关闭可管理的中断来保护共享资源&#xff0c;具体关闭的中断层级由configMAX_SYSCALL_INTERRUPT_PRIORITY宏定义决定。以下是关键点解析&#xff1a; 中断优先级分类&#xff1a; 高优先级中断&#xff1a;数值低于configMAX_SYSCALL_INTERR…

cdw2: TypeScript

一、javascript的问题 二、初识typescript https://mp.weixin.qq.com/s/wnL1l-ERjTDykWM76l4Ajw 三、类型 二进制&#xff1a;ob开头&#xff0c;八进制&#xff1a;0o开头&#xff0c;十六进制&#xff1a;0x开头 开发中不这样写 这样写 匿名函数的参数最好不要…

Qt中的元对象系统

Qt的元对象系统(Meta-Object System)提供了对象间通信的信号和槽机制、运行时类型信息和动态属性系统。 元对象系统基于以下三个方面&#xff1a; (1).QObject类&#xff1a;为可以利用元对象系统的对象提供了基类。 (2).Q_OBJECT宏&#xff1a;用于启用元对象功能&#xff0c;…

深入理解重排(Reflow)与重绘(Repaint),写出高性能 CSS 动画

在前端开发中&#xff0c;CSS 动画是提升用户体验的重要手段&#xff0c;但很多开发者在使用动画时并不了解浏览器背后的渲染机制&#xff0c;导致动画卡顿甚至影响整体性能。本文将带你深入理解 CSS 中的两大核心概念 —— 重排&#xff08;Reflow&#xff09; 与 重绘&#x…

<贪心算法>

前言&#xff1a;在主包还没有接触算法的时候&#xff0c;就常听人提起“贪心”&#xff0c;当时是layman&#xff0c;根本不知道说的是什么&#xff0c;以为很难呢&#xff0c;但去了解一下&#xff0c;发现也不过如此嘛&#xff08;bushi)&#xff0c;还以为是什么高级东西呢…

大模型快速 ASGI 服务器uvicorn

基础概念类 1. 什么是 Uvicorn&#xff0c;它的作用是什么&#xff1f; 答案&#xff1a;Uvicorn 是一个基于 Python 的快速 ASGI&#xff08;异步服务器网关接口&#xff09;服务器。它的主要作用是作为 Web 应用程序的服务器&#xff0c;负责接收客户端的请求&#xff0c;并…

2025高频面试算法总结篇【二叉树】

文章目录 直接刷题链接直达非递归实现求二叉树的深度非递归从左至右打印一颗二叉树中的所有路径判断平衡二叉树二叉搜索树中第K小的元素二叉树的完全性检验根据前&中序遍历结果重建二叉树二叉树的最近公共祖先二叉树的直径二叉树的遍历 直接刷题链接直达 非递归实现求二叉…

redis 和 MongoDB都可以存储键值对,并且值可以是复杂json,用完整例子分别展示说明两者在存储json键值对上的使用对比

Redis 存储 JSON 键值对示例 存储操作&#xff1a; // 存储用户信息&#xff08;键&#xff1a;user:1001&#xff0c;值&#xff1a;JSON对象&#xff09; SET user:1001 {"name":"Alice", "age":30, "address":"New York&quo…

介绍几种创意登录页(含完整源码)

今天为大家收集了几种不同风格的登录页&#xff0c;搭配动态渐变背景&#xff0c;效果绝对惊艳&#xff01; CSS3实现动态渐变玻璃拟态登录页 一、开篇语 纯CSS实现当下最火的玻璃拟态(Morphism)风格登录页&#xff0c;搭配动态渐变背景&#xff0c;效果绝对惊艳&#xff01; …

R语言之mlr依赖包缺失警告之分析

因为本地没有网络&#xff0c;所有相关的依赖包都是手动下载&#xff0c;再使用脚本一键安装的。 在使用mlr包时&#xff0c;执行下面的代码时&#xff0c;总是报各种依赖缺失&#xff0c;也不知道咋看FAIL信息。 # 建模与调参 # 查阅线性回归、随机森林、xgboost和KNN四种模…

无状态版的DHCPv6是不是SLAAC? 笔记250405

无状态版的DHCPv6是不是SLAAC? 笔记250405 无状态版 DHCPv6 不是 SLAAC&#xff0c;但二者在 IPv6 网络中可协同工作。以下是核心区别与协作关系&#xff1a; 本质区别 特性SLAAC无状态 DHCPv6主要功能生成 IPv6 地址&#xff08;基于路由器通告的前缀&#xff09;分发 DNS、…

uniapp微信小程序地图marker自定义气泡 customCallout偶尔显示不全解决办法

这个天坑问题&#xff0c;在微信开发工具上是不会显示出来的,只有在真机上才会偶尔出现随机样式偏移/裁剪/宽长偏移&#xff0c;询问社区也只是让你提交代码片段&#xff0c;并无解决办法。 一开始我怀疑是地图组件加载出现了问题&#xff0c;于是给地图加了一个v-if"reL…

LabVIEW商业软件开发注意问题

在 LabVIEW 商业软件开发进程中&#xff0c;性能优化、界面设计及兼容性与扩展性&#xff0c;对软件品质、用户体验和市场适配性起着决定性作用。下面&#xff0c;借助多个LabVIEW 编程特性的实际案例&#xff0c;深入分析这些方面的开发要点。 一、性能优化&#xff1a;提升软…

Ubuntu 安装 VLC

最近项目中需要用VLC查看NVR下子设备的RTSP流&#xff0c;特此记录&#xff0c;便于日后查阅。 1、安装snap $ sudo apt update $ sudo apt install snapd 2、安装vlc $ sudo snap install vlc 3、可能遇到的问题 snap beta install on ubuntu 22.04 failing to start Qt: Se…

LeetCode 3047 求交集区域内的最大正方形面积

探寻矩形交集中的最大正方形面积 在算法与数据结构的探索之路上&#xff0c;二维平面几何问题一直占据着独特的地位&#xff0c;它们不仅考验我们的空间思维能力&#xff0c;还要求我们能够巧妙地运用算法逻辑。今天&#xff0c;我们将深入剖析一道极具代表性的二维平面几何算…

【Kafka基础】Kafka 2.8以下版本的安装与配置指南:传统ZooKeeper依赖版详解

对于仍在使用Kafka 2.8之前版本的团队来说&#xff0c;需要特别注意其强依赖外部ZooKeeper的特性。本文将完整演示传统架构下的安装流程&#xff0c;并对比新旧版本差异。 1 版本特性差异说明 1.1 2.8 vs 2.8-核心区别 特性 2.8版本 2.8-版本 协调服务 可选内置KRaft模式 …

springboot+easyexcel实现下载excels模板下拉选择

定义下拉注解 Target(ElementType.FIELD) Retention(RetentionPolicy.RUNTIME) public interface ExcelDropDown {/*** 固定下拉选项*/String[] source() default {};/*** 动态数据源key&#xff08;从上下文中获取&#xff09;*/String sourceMethod() default "";…