1. 程式人生 > 其它 >鍵盤之王——求打字峰值速率的小程式(C語言)

鍵盤之王——求打字峰值速率的小程式(C語言)

技術標籤:c語言程式語言windowsmacos

概念引入

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())

功 能及返回值: 檢查當前是否有鍵盤輸入,若有則返回一個非0值,否則返回0
用 法: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語言
迴圈以及控制流程提供了練習例項。