用c语言写一个32*32的点阵 要求在点阵中表示出z的形状
20多年前的老程序,从UCDOS字库文件hzk16中取点阵
#include <stdio.h>
#include <conio.h>
const unsigned char bit[8]={128,64,32,16,8,4,2,1};
unsigned char buffer[32];
unsigned long offset;
unsigned int q,w;
int x,y,qw;
void display(char *hz) {
FILE *hzk;
qw = *((int *)hz);
q = (qw&0x00FF)-0xA1;
w = ((qw>>8)&0x00FF)-0xA1;
offset = q*0x5E + w;
offset *= 32;
if ((hzk = fopen("HZK16","rb"))==NULL) {
printf("Can not open file HZK16!\n");
return;
}
fseek(hzk,offset,SEEK_SET);
fread(buffer,1,32,hzk);
fclose(hzk);
for (y=0;y<16;y++) {
for (x=0;x<16;x++) {
if (buffer[y*2+x/8] & bit[x%8]) {
printf("%s","*");
} else {
printf(" ");
}
}
printf("\n");
}
}
int main() {
display("Z");
getch();
}
hzk16 这个字库文件还能在网上下载到,搜索“ucdos HZK16下载”
代码中,26行35行中的* 和 Z都是全角字符,并且Z可以换成汉字也显示出来
#include <stdio.h>
int main()
{
int i,j;
for (i=0;i<32;i++)
{
for (j=0;j<32;j++)
{
if(i==0 || i == 31 || i+j == 31)
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}