當然狀況也是一樣,所以依然使用 C / C++ 來模擬作答囉。請看~
「5/15在結果圖後面,更新了利用 switch 的寫法。」
題目狀況大概如下:
利用15個按鍵在s2與s3七段顯示器上顯示1-15的數值。
利用第16個按鍵,將七段顯示氣上的數值倒數至0。
以上就是題目大概的敘述啦。
那當然居裡貓沒有那個設備跟環境,所以就利用 VS C++ 來模擬這個環境。
居裡貓利用電腦鍵盤的數字鍵1-9及a-g模擬題目的16個按鍵。
按鍵說明:
按鍵 顯示/功能
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
a 10
b 11
c 12
d 13
e 14
f 15
g 倒數按鍵
Esc 關閉視窗 「5/15更新功能」
好的,那就下面分享居裡貓的程式碼給大家囉!!!
// keypress test.cpp : 定義主控台應用程式的進入點。
//
#include "stdafx.h"
#include "stdlib.h"
#include "iostream"
#include "conio.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "模擬按鍵輸入1-15數字於七段顯示器上" << endl;
cout << "並利用按鍵將七段顯示器顯示數值倒數至0" << endl;
cout << "數字鍵1-9,顯示數值1-9" << endl;
cout << "字母鍵a-f,顯示數值10-15" << endl;
cout << "字母鍵g,倒數按鍵" << endl;
int xx=0; //此變數做為按鍵擷取的ASCII碼存放變數
//數字鍵1-9,ASCII碼分別為49-57;字母鍵a-g,ASCII碼分別為97-103
int s0=0,s1=0,s2=0,s3=0; //模擬四個七段顯示器
while(1)
{
//利用getch()函式擷取按鍵狀態。
xx=getch(); //將按下按鍵ASCII碼存入變數
//判斷現在按下的按鍵是否符合限制條件
if(xx == 49)
{
s2=0;s3=0;
s3=s3+1;
cout << s0 << s1 << s2 << s3 << endl;
}
else if(xx == 50)
{
s2=0;s3=0;
s3=s3+2;
cout << s0 << s1 << s2 << s3 << endl;
}
else if(xx == 51)
{
s2=0;s3=0;
s3=s3+3;
cout << s0 << s1 << s2 << s3 << endl;
}
else if(xx == 52)
{
s2=0;s3=0;
s3=s3+4;
cout << s0 << s1 << s2 << s3 << endl;
}
else if(xx == 53)
{
s2=0;s3=0;
s3=s3+5;
cout << s0 << s1 << s2 << s3 << endl;
}
else if(xx == 54)
{
s2=0;s3=0;
s3=s3+6;
cout << s0 << s1 << s2 << s3 << endl;
}
else if(xx == 55)
{
s2=0;s3=0;
s3=s3+7;
cout << s0 << s1 << s2 << s3 << endl;
}
else if(xx == 56)
{
s2=0;s3=0;
s3=s3+8;
cout << s0 << s1 << s2 << s3 << endl;
}
else if(xx == 57)
{
s2=0;s3=0;
s3=s3+9;
cout << s0 << s1 << s2 << s3 << endl;
}
else if(xx == 97)
{
s2=0;s3=0;
s2=s2+1;
cout << s0 << s1 << s2 << s3 << endl;
}
else if(xx == 98)
{
s2=0;s3=0;
s2=s2+1; s3=s3+1;
cout << s0 << s1 << s2 << s3 << endl;
}
else if(xx == 99)
{
s2=0;s3=0;
s2=s2+1; s3=s3+2;
cout << s0 << s1 << s2 << s3 << endl;
}
else if(xx == 100)
{
s2=0;s3=0;
s2=s2+1; s3=s3+3;
cout << s0 << s1 << s2 << s3 << endl;
}
else if(xx == 101)
{
s2=0;s3=0;
s2=s2+1; s3=s3+4;
cout << s0 << s1 << s2 << s3 << endl;
}
else if(xx == 102)
{
s2=0;s3=0;
s2=s2+1; s3=s3+5;
cout << s0 << s1 << s2 << s3 << endl;
}
else if(xx == 103) //此判斷式為按下g鍵,開始進行倒數工作
{
cout << endl << "開始倒數" << endl;
//巢狀迴圈開始倒數設定
for(s2=s2;;)
{
for(s3=s3;;)
{
cout << s0 << s1 << s2 << s3 << endl;
if(s3==0)
{//倒數關鍵,檢視s3七段顯示器狀態,是否為0,如為0可能
//數值為10,因此s2顯示器數值減1,並跳出此迴圈
s2=s2-1;
break;
}
s3=s3-1; //如s3數值並非為0,則s3減1
}
s3=9; //這裡為s2-1之後,將s3數值從0設置為9開始,回到s3迴圈開
//始減少。
if(s2<0)
{//當所有數值減完,重設四個七段顯示器初始數值
s0=0;s1=0;s2=0;s3=0;
cout << endl;
break;
}
}
}
else if(xx == 27) //按下 Esc 鍵即可關閉視窗
{
exit(0);
}
else //除限制條件以外按鍵皆為非法按鍵
{
cout << "請勿按下其他按鍵" << endl;
s0=0;s1=0;s2=0;s3=0;
}
}
system("pause");
return 0;
}
那接著來看一下結果吧!!!
這裡居裡貓就測試了兩個按鍵,1跟10。
10這裡居裡貓在做的時候發現是一個容易出錯的地方,請大家注意囉~
以上,希望大家會喜歡~!
---------5/15更新---------------------------------------------------------------------------------
// keypress test.cpp : 定義主控台應用程式的進入點。
//
#include "stdafx.h"
#include "stdlib.h"
#include "iostream"
#include "conio.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "模擬按鍵輸入1-15數字於七段顯示器上" << endl;
cout << "並利用按鍵將七段顯示器顯示數值倒數至0" << endl;
cout << "數字鍵1-9,顯示數值1-9" << endl;
cout << "字母鍵a-f,顯示數值10-15" << endl;
cout << "字母鍵g,倒數按鍵" << endl;
char xx; //此變數做為按鍵擷取的ASCII對應字元碼存放變數
//數字鍵1-9,ASCII碼分別為49-57;字母鍵a-g,ASCII碼分別為97-103
int s0=0,s1=0,s2=0,s3=0; //模擬四個七段顯示器
while(1)
{
//利用getch()函式擷取按鍵狀態。
xx=getch(); //將按下按鍵ASCII碼對應字元存入變數 請參照 www.zh.wikipedia.org/wiki/ASCII
//判斷現在按下的按鍵是否符合限制條件
switch(xx)
{
case'1':
s2=0;s3=0;
s3=s3+1;
cout << s0 << s1 << s2 << s3 << endl;
break;
case'2':
s2=0;s3=0;
s3=s3+2;
cout << s0 << s1 << s2 << s3 << endl;
break;
case'3':
s2=0;s3=0;
s3=s3+3;
cout << s0 << s1 << s2 << s3 << endl;
break;
case'4':
s2=0;s3=0;
s3=s3+4;
cout << s0 << s1 << s2 << s3 << endl;
break;
case'5':
s2=0;s3=0;
s3=s3+5;
cout << s0 << s1 << s2 << s3 << endl;
break;
case'6':
s2=0;s3=0;
s3=s3+6;
cout << s0 << s1 << s2 << s3 << endl;
break;
case'7':
s2=0;s3=0;
s3=s3+7;
cout << s0 << s1 << s2 << s3 << endl;
break;
case'8':
s2=0;s3=0;
s3=s3+8;
cout << s0 << s1 << s2 << s3 << endl;
break;
case'9':
s2=0;s3=0;
s3=s3+9;
cout << s0 << s1 << s2 << s3 << endl;
break;
case'a':
s2=0;s3=0;
s2=s2+1;
cout << s0 << s1 << s2 << s3 << endl;
break;
case'b':
s2=0;s3=0;
s2=s2+1;s3=s3+1;
cout << s0 << s1 << s2 << s3 << endl;
break;
case'c':
s2=0;s3=0;
s2=s2+1;s3=s3+2;
cout << s0 << s1 << s2 << s3 << endl;
break;
case'd':
s2=0;s3=0;
s2=s2+1;s3=s3+3;
cout << s0 << s1 << s2 << s3 << endl;
break;
case'e':
s2=0;s3=0;
s2=s2+1;s3=s3+4;
cout << s0 << s1 << s2 << s3 << endl;
break;
case'f':
s2=0;s3=0;
s2=s2+1;s3=s3+5;
cout << s0 << s1 << s2 << s3 << endl;
break;
case'g':
cout << endl << "開始倒數" << endl;
for(s2=s2;;)
{
for(s3=s3;;)
{
cout << s0 << s1 << s2 << s3 << endl;
if(s3==0)
{//倒數關鍵,檢視s3七段顯示器狀態,是否為0,如為0可能
數值為10,因此s2顯示器數值減1,並跳出此迴圈
s2=s2-1;
break;
}
s3=s3-1; //如s3數值並非為0,則s3減1
}
s3=9; //這裡為s2-1之後,將s3數值從0設置為9開始,回到s3迴圈開始減少。
if(s2<0)
{
s0=0;s1=0;s2=0;s3=0;
cout << endl;
break;
}
}
break;
case'← ': //Esc 在 getch()函式底下擷取到的字元為向左箭頭,此處編寫須注意
exit(0);
break;
default:
cout << "請勿按下其他按鍵" << endl;
s0=0;s1=0;s2=0;s3=0;
break;
}
}
system("pause");
return 0;
}
沒有留言:
張貼留言