用 C語言 寫 簡易的 計時程式 (碼錶)
老師說要表現的方式是用像計算機、電子錶顯示的數字一樣,
是直線拼成的那種數字,
可能是按任意鍵,便開始計時,按任意鍵又停止,
一點頭緒也沒有,可以麻煩大大賜教一下,
供我參考,或指點一下,讓我知道個方向,3Q3Q >"<
1 則回答
最佳解答
那就先分成三個部份來解這個問題 :
1. 開始計時與停止計時
2. 將計數的值轉換成電子錶顯示的代號
3. 顯示電子錶上數字的代號
void NumberSwitch(unsigned long a);
void DisplayNum(int a , int position);
int StartFlag = 0 , StopFlag = 0 , i = 0 ;
unsigned long count =0 ;
main(){
scanf("Please press any key to start counting \n ", &StartFlag); // 從鍵盤敲一個Key開始計時 .
while(StopFlag == 0 ) // 當StopFlag = 0 時 , 一直計數並顯示
{
count++;
NumberSwitch(count);
// Get any key , StopFlag = 1 ; // StopFlag = 1 時此while loop 即會停止
}
}
void NumberSwitch(unsigned long a)
{
unsigned long S = 0 , M = 0 , H = 0 ;
S = a%60 ; // 秒
M = a/60%60 ; // 分
H = (a/3600)%60 ; // 時
DisplayNum( (S%10) , 1 ); // 1 顯示秒數
DisplayNum( ((S/10)%10) , 2 ); // 2 顯示秒數
DisplayNum( (M%10) , 3 ); // 3 顯示分數
DisplayNum( ((M/10)%10) , 4 ); // 4 顯示分數
DisplayNum( (H%10) , 5 ); // 5 顯示小時
DisplayNum( ((H/10)%10) , 6 ); // 6 顯示小時
}
void DisplayNum(int a , int position)
{
switch(a)
{
case 0 :
// 用ascii code 畫出 0 , 並依照position的位置擺放
break ;
case 1 :
// 用ascii code 畫出 1
break ;
.....
case 9 :
// 用ascii code 畫出 9
break ;
default :
break ;
}
}
以上是個人想法 , 僅供參考 , 雖然還有一些地方沒寫 , 但是基本架構都有了 , 剩下的自己找書填進去吧 !