鍵盤之王——求打字峰值速率的小程式(C語言)
阿新 • • 發佈:2021-01-17
概念引入
1.為獲得毫秒時間戳引入GetTickcount函式
函式功能:GetTickCount返回(retrieve)從作業系統啟動到現在所經過(elapsed)的毫秒數,它的返回值是DWORD。
GetTickcount函式:它返回從作業系統啟動到當前所經過的毫秒數,常常用來判斷某個方法執行的時間,其函式原型是DWORD GetTickCount(void),返回值以32位的雙字型別DWORD儲存,因此可以儲存的最大值是2^32 ms約為49.71天,因此若系統執行時間超過49.71天時,這個數就會歸0
2.kibhit()函式
函式名:kbhit()(VC++6.0下為_kbhit())
用 法:int kbhit(void);
包含標頭檔案: include <conio.h>
一、程式設計思路
這是一個求打字峰值速度的小程式 思路 1.定義所需變數 DWORD型別的strat、stop、以及初始化為0的speed 1.進行第一次操作 (1).使用Kibhit()函式監視鍵盤鍵入 a.使用GetTickCount()函式獲取此時的毫秒時間戳賦值給start b.將鍵盤輸入的單個字元存入一個字元變數當中 2.設定一個死迴圈 (1).使用Kibhit()函式監視鍵盤鍵入 a.使用GetTickCount()函式獲取此時的毫秒時間戳賦值給stop b.將鍵盤輸入的單個字元存入一個字元變數當中 c.進行判斷 若速度(每分鐘) 6000 / (stop - strat) > speed 清屏輸出速度大小 並根據速度的範圍給出打字快慢能力值的提示 (2).將stop的值 賦給 start
二、程式碼例項
#include<stdio.h>
#include<windows.h>
#include<conio.h>
int main() {
DWORD start, stop , speed = 0;
if (kbhit()) {
start = GetTickCount();//獲取當前毫秒時間戳
getch();
}
for (;;) {
if (kbhit()) {
stop = GetTickCount();
getch();
if (60000 / (stop - start) > 0) {
speed = 60000 / (stop - start);
system("cls");
printf("%lu/min ", speed);
printf("\n");
if(0 <speed && speed <= 100)
printf("龜速一指禪嗎?");
else if(100 <speed && speed <= 300)
printf("還行吧~");
else if(300 < speed && speed <= 600)
printf("小夥子有點東西!");
else if(speed > 600)
printf("高!!高手!");
}
}
start = stop;
}
return 0;
}
總結
這篇文章介紹了使用c語言實現計算實時打字速度的程式,其核心是把握兩次
迴圈的銜接,以及kibhit()與GetTickcount()函式的使用,為C語言初學者深化c語言
迴圈以及控制流程提供了練習例項。