數字游戲(繼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.pswp.cn/news/900575.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900575.shtml
英文地址,請注明出處:http://en.pswp.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 "";…