用c语言写一个32*32的点阵

用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;
}