C语言七段显示
以下內(nèi)容轉(zhuǎn)自http://hi.baidu.com/unixfy/blog/item/878474053a28211a7bec2cf9.html 七段顯示的程序,實(shí)現(xiàn)鍵盤輸入一個(gè)數(shù),顯示出該數(shù)的七段顯示。 #include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
// 實(shí)現(xiàn)輸入一個(gè)數(shù)字,輸出這個(gè)數(shù)字的 七段顯示形式
// 每個(gè)數(shù)字用一個(gè)字節(jié)表示
//0到9的表示
char numbers[] = {0x7D, 0x28, 0x37, 0x57, 0x5A, 0x4F, 0x6F, 0x54, 0x7F, 0x5E};
????
void printN(const string& n);
????
int main()
{
string n;
while (cin >> n)
printN(n);
return 0;
}
????
bool getBit(char number, char c)//七段顯示的該段是否顯示
{
return static_cast<bool>(number & c);
}
????
void printN(const string& n)
{
vector<int> v;
for (size_t i = 0; i < n.length(); ++i)
{
v.push_back(n[i]-'0');
}
for ( i = 0; i < v.size(); ++i)
{
if (getBit(numbers[v[i]], 4))
{
cout << " _ ";
}
else
{
cout << "???? ";
}
}
cout << endl;
for ( i = 0; i < v.size(); ++i)
{
if (getBit(numbers[v[i]], 8))
{
cout << "|";
}
else
{
cout << " ";
}
if (getBit(numbers[v[i]], 2))
{
cout << "_";
}
else
{
cout << " ";
}
if (getBit(numbers[v[i]], 16))
{
cout << "|";
}
else
{
cout << " ";
}
}
cout << endl;
for ( i = 0; i < v.size(); ++i)
{
if (getBit(numbers[v[i]], 32))
{
cout << "|";
}
else
{
cout << " ";
}
if (getBit(numbers[v[i]], 1))
{
cout << "_";
}
else
{
cout << " ";
}
if (getBit(numbers[v[i]], 64))
{
cout << "|";
}
else
{
cout << " ";
}
}
cout << endl;
}
編程珠璣習(xí)題3.7.8? 編寫一個(gè)使用5個(gè)七段顯示數(shù)字來顯示16位正整數(shù)的程序。輸出為一個(gè)5個(gè)字節(jié)的數(shù)組,當(dāng)且僅當(dāng)數(shù)字j中的第1段點(diǎn)亮?xí)r,字節(jié)j中的位i置1 以下內(nèi)容轉(zhuǎn)自http://blog.csdn.net/ju136/article/details/6839297 2^16 = 65536個(gè)數(shù)。所以5個(gè)七段顯示器肯定是夠用的。 首先可以預(yù)處理一下,把 {0, 2, 3, 4, 5, 6,7,8,9}相應(yīng)的8個(gè)bit置1之后的值保存到一個(gè)數(shù)組中。 char rec[10]= {0x7D, 0x28, 0x37, 0x57, 0x5A, 0x4F, 0x6F, 0x54, 0x7F, 0x5E};
char temp[5];
char *get(int n)
{
???????? int iter = 4;
???????? memset(temp, 0, sizeof(temp));
???????? while (n)
???????? {
????????????????????temp[iter--] = rec[n % 10];
????????????????????n /= 10;
???????? }
???????? while (iter>= 0) { temp[iter] = rec[0]; iter --;}
???????? return temp;
}該代碼中數(shù)的高位對(duì)應(yīng)著數(shù)組的大的下標(biāo)
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
// 實(shí)現(xiàn)輸入一個(gè)數(shù)字,輸出這個(gè)數(shù)字的 七段顯示形式
// 每個(gè)數(shù)字用一個(gè)字節(jié)表示
//0到9的表示
char numbers[] = {0x7D, 0x28, 0x37, 0x57, 0x5A, 0x4F, 0x6F, 0x54, 0x7F, 0x5E};
????
void printN(const string& n);
????
int main()
{
string n;
while (cin >> n)
printN(n);
return 0;
}
????
bool getBit(char number, char c)//七段顯示的該段是否顯示
{
return static_cast<bool>(number & c);
}
????
void printN(const string& n)
{
vector<int> v;
for (size_t i = 0; i < n.length(); ++i)
{
v.push_back(n[i]-'0');
}
for ( i = 0; i < v.size(); ++i)
{
if (getBit(numbers[v[i]], 4))
{
cout << " _ ";
}
else
{
cout << "???? ";
}
}
cout << endl;
for ( i = 0; i < v.size(); ++i)
{
if (getBit(numbers[v[i]], 8))
{
cout << "|";
}
else
{
cout << " ";
}
if (getBit(numbers[v[i]], 2))
{
cout << "_";
}
else
{
cout << " ";
}
if (getBit(numbers[v[i]], 16))
{
cout << "|";
}
else
{
cout << " ";
}
}
cout << endl;
for ( i = 0; i < v.size(); ++i)
{
if (getBit(numbers[v[i]], 32))
{
cout << "|";
}
else
{
cout << " ";
}
if (getBit(numbers[v[i]], 1))
{
cout << "_";
}
else
{
cout << " ";
}
if (getBit(numbers[v[i]], 64))
{
cout << "|";
}
else
{
cout << " ";
}
}
cout << endl;
}
編程珠璣習(xí)題3.7.8? 編寫一個(gè)使用5個(gè)七段顯示數(shù)字來顯示16位正整數(shù)的程序。輸出為一個(gè)5個(gè)字節(jié)的數(shù)組,當(dāng)且僅當(dāng)數(shù)字j中的第1段點(diǎn)亮?xí)r,字節(jié)j中的位i置1 以下內(nèi)容轉(zhuǎn)自http://blog.csdn.net/ju136/article/details/6839297 2^16 = 65536個(gè)數(shù)。所以5個(gè)七段顯示器肯定是夠用的。 首先可以預(yù)處理一下,把 {0, 2, 3, 4, 5, 6,7,8,9}相應(yīng)的8個(gè)bit置1之后的值保存到一個(gè)數(shù)組中。 char rec[10]= {0x7D, 0x28, 0x37, 0x57, 0x5A, 0x4F, 0x6F, 0x54, 0x7F, 0x5E};
char temp[5];
char *get(int n)
{
???????? int iter = 4;
???????? memset(temp, 0, sizeof(temp));
???????? while (n)
???????? {
????????????????????temp[iter--] = rec[n % 10];
????????????????????n /= 10;
???????? }
???????? while (iter>= 0) { temp[iter] = rec[0]; iter --;}
???????? return temp;
}該代碼中數(shù)的高位對(duì)應(yīng)著數(shù)組的大的下標(biāo)
轉(zhuǎn)載于:https://blog.51cto.com/buptdtt/740804
總結(jié)