思路
每个字母是如何表示的?
以’I‘为例:
每次画图都感觉心累,关键是画出来效果还不是很好。(不信你看上边那个图,有些线粗有些线细)有什么好的画图办法快救救孩子吧。
I可以表示为:1910 6401 6110 1910具体含义如下:
千位 | 百位 | 十位 | 个位 | |
---|---|---|---|---|
1910 | 1表示1行 | 9表示9列 | 1表示1行9列用1填充 | 0表示同行没有其它填充 |
具体表示结果:
千位 | 百位 | 十位 | 个位 | |
---|---|---|---|---|
6401 | 6表示1行 | 4表示4列 | 0表示6行4列用0填充 | 1表示同行后面有其它填充 |
6110 | 6表示1行 | 1表示1列 | 1表示6行1列用0填充 | 0表示同行没有其它填充 |
具体表示结果:
最后一个1910和第一个1910表示的一样。
字母在文件中的存放
文件中每行代表一个字母,要显示某一个字母只需读取固定的行
代码
//编写一个“banner”函数,该函数的输入为大写字母,输出为一个字符数组,该数组以图形化的方式表示该字母。
//四位数分别表示:千:行 百:列 十:输出空格还是* 个位:后面是否有连续的输出
#include<stdio.h>
void print(int l)
{
int WhichLine = l;//指定要读取哪一行
int CurrentIndex = 0;//当前读取的行
int k, num;
int data[100];
FILE* fw = fopen("存放字母文件", "r");//根据自己的存放路径,进行修改。
//读取固定的某一行
while (!feof(fw))
{
if (CurrentIndex == WhichLine)
{
fscanf(fw, "%d", &num);
for (k = 0; k < num; k++)
fscanf(fw, "%d", &data[k]);
break;
}
fscanf(fw, "%d", &num);
for (k = 0; k < num; k++)
fscanf(fw, "%d", &data[k]);
CurrentIndex++;
}
fclose(fw);
//数据读取完毕,进行打印
int i, j;
for (k = 0; k < num; k++)
{
//打印*
if (data[k] / 10 % 10 == 1)//十位为1,打印*
{
for (i = 0; i < data[k