您的位置:首页 > 编程语言 > C语言/C++

用c++二维数组玩点阵数字显示

2013-12-13 10:01 369 查看
下面的二维数组定义了10个数字的字模(要是采用别的字体,这个数组中的数字变一下即可):

char a[10][8]=
{
{0x00,0x18,0x24,0x24,0x24,0x24,0x24,0x18}, //0
{0x00,0x18,0x1c,0x18,0x18,0x18,0x18,0x18}, //1
{0x00,0x1e,0x30,0x30,0x1c,0x06,0x06,0x3e}, //2
{0x00,0x1e,0x30,0x30,0x1c,0x30,0x30,0x1e}, //3
{0x00,0x30,0x38,0x34,0x32,0x3e,0x30,0x30}, //4
{0x00,0x1e,0x02,0x1e,0x30,0x30,0x30,0x1e}, //5
{0x00,0x1c,0x06,0x1e,0x36,0x36,0x36,0x1c}, //6
{0x00,0x3f,0x30,0x18,0x18,0x0c,0x0c,0x0c}, //7
{0x00,0x1c,0x36,0x36,0x1c,0x36,0x36,0x1c}, //8
{0x00,0x1c,0x36,0x36,0x36,0x3c,0x30,0x1c}, //9
};这个数组,表示的是数字的字模?这,这,从何说起?

  以数字3对应的数据a[3]({0x00,0x1e,0x30,0x30,0x1c,0x30,0x30,0x1e}, //3)为例,包括有8个十六进制的数,每行一个十六进制数,并且换成二进制的表示,会是什么样的呢?

  是这样的:

00000000  //0x00
00011110  //0x1e
00110000  //0x30
00110000  //0x30
00011100  //0x1c
00110000  //0x30
00110000  //0x30
00011110  //0x1e

  请看1出现的地方,可以借着鼠标按1出现的轨迹跟着划一划,不就是数字3字型的轮廓吗?只不过,耳朵状的3是反着的(这自有道理,看完程序1自会明白)。
#include<iostream>
using std::cout;
using std::endl;
using std::cin;
char a[10][8]=
{
{0x00,0x18,0x24,0x24,0x24,0x24,0x24,0x18}, //0
{0x00,0x18,0x1c,0x18,0x18,0x18,0x18,0x18}, //1
{0x00,0x1e,0x30,0x30,0x1c,0x06,0x06,0x3e}, //2
{0x00,0x1e,0x30,0x30,0x1c,0x30,0x30,0x1e}, //3
{0x00,0x30,0x38,0x34,0x32,0x3e,0x30,0x30}, //4
{0x00,0x1e,0x02,0x1e,0x30,0x30,0x30,0x1e}, //5
{0x00,0x1c,0x06,0x1e,0x36,0x36,0x36,0x1c}, //6
{0x00,0x3f,0x30,0x18,0x18,0x0c,0x0c,0x0c}, //7
{0x00,0x1c,0x36,0x36,0x1c,0x36,0x36,0x1c}, //8
{0x00,0x1c,0x36,0x36,0x36,0x3c,0x30,0x1c}, //9
};
int main()
{
int b[8];
int c[10];
int x;
int n;
int num=0;
cout<<"输入要显示的数字:";
cin>>n;
while(n!=0)
//选择whie与for循环的关键一点是:结束循环的条件的确定
//如果用for循环如何确定这个结束条件呢?
//这么写
// for(k=0; n&&k<8; k++) //c数组将分离出n中的各位数,不过是倒着的,例n=123,c中保存3 2 1
// {
// c[k]=n%10;
// n/=10;
// }
{
c[num]=n%10;
n=n/10;
num++;
}
for(int i=0;i<8;i++)
// for循环的次序能够影响输出的格式,
// i与q的调换就是 横着与竖着输出,这里犯错误了,
// 基本弄明白了。需要再熟练理解。
{
for(int q=num-1;q>=0;q--)
{
x=a[c[q]][i];
for(int j=0;j<8;j++)
{
b[j]=x%2;
x=x/2;
if(b[j]%2)cout<<"p";
else cout<<" ";
}
}
cout<<endl;
}
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: