编写一个“banner”函数,该函数的输入为大写字母,输出为一个字符数组,该数组以图形化的方式表示该字母。

思路

每个字母是如何表示的?
以’I‘为例:
在这里插入图片描述
每次画图都感觉心累,关键是画出来效果还不是很好。(不信你看上边那个图,有些线粗有些线细)有什么好的画图办法快救救孩子吧。
I可以表示为:1910 6401 6110 1910具体含义如下:

千位百位十位个位
19101表示1行9表示9列1表示1行9列用1填充0表示同行没有其它填充

具体表示结果:
在这里插入图片描述

千位百位十位个位
64016表示1行4表示4列0表示6行4列用0填充1表示同行后面有其它填充
61106表示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] / 1000; i++)//打印的行(千位)
			{
				for (j = 0; j < data[k] / 100 % 10; j++)//打印的列(百位)
				{
					printf("%c", '*');
				}
				if (data[k] % 10 == 1)//个位,判断是否在同行打印。若为1在同行打印
				{
					for (j = 0; j < data[k + 1] / 100 % 10; j++)
					{
						if (data[k + 1] / 10 % 10 == 1)
							printf("%c", '*');
						else
							printf("%c", ' ');
					}

					if (data[k+1] % 10 == 1)
						//for (j = 0; j < data[k + 2] / 100 % 10; j++)
						{
							if (data[k + 2] / 10 % 10 == 1)
							{
								for (int t= 0; t< data[k + 2] / 100 % 10; t++)
									printf("%c", '*');
								if (data[k + 2] % 10 == 1)
									for (int r= 0; r< data[k + 3] / 100 % 10; r++)
									{
										if (data[k + 3] / 10 % 10 == 1)
											printf("%c", '*');
										else
											printf("%c", ' ');
									}
							}
							else
							{
								for (int t = 0; t< data[k + 2] / 100 % 10; t++)
									printf("%c", ' ');
								if (data[k + 2] % 10 == 1)
									for (int r= 0; r < data[k + 3] / 100 % 10; r++)
									{
										if (data[k + 3] / 10 % 10 == 1)
											printf("%c", '*');
										else
											printf("%c", ' ');
									}
							}
						}
				}
				printf("\n");
			}
			if (data[k] % 10 == 1)
				k++;
			if (data[k] % 10 == 1)
				k++;
			if (data[k] % 10 == 1)
				k++;
		}
		//打印空格
		if (data[k] / 10 % 10 == 0)//十位为0,打印空格
		{

			for (i = 0; i < data[k] / 1000; i++)//打印的行(千位)
			{
				for (j = 0; j < data[k] / 100 % 10; j++)//打印的列(百位)
					printf("%c", ' ');
				if (data[k] % 10 == 1)//个位,判断是否在同行打印。若为1在同行打印
				{
					for (j = 0; j < data[k + 1] / 100 % 10; j++)
					{
						if (data[k + 1] / 10 % 10 == 1)
							printf("%c", '*');
						else
							printf("%c", ' ');
					}

					if (data[k + 1] % 10 == 1)
						{
							if (data[k + 2] / 10 % 10 == 1)
							{
								for (int t = 0; t< data[k + 2] / 100 % 10; t++)
									printf("%c", '*');
								if (data[k + 2] % 10 == 1)
									for (int r = 0; r < data[k + 3] / 100 % 10; r++)
									{
										if (data[k + 3] / 10 % 10 == 1)
											printf("%c", '*');
										else
											printf("%c", ' ');
									}
							}
							else
							{
								for (int t = 0; t < data[k + 2] / 100 % 10; t++)
									printf("%c", ' ');
								if (data[k + 2] % 10 == 1)
									for (int r = 0; r < data[k + 3] / 100 % 10; r++)
									{
										if (data[k + 3] / 10 % 10 == 1)
											printf("%c", '*');
										else
											printf("%c", ' ');
									}
							}

						}

				}
				printf("\n");
			}
			if (data[k] % 10 == 1)
				k++;
			if (data[k] % 10 == 1)
				k++;
			if (data[k] % 10 == 1)
				k++;
		}

	}
}
void main()
{
	char ch;
		printf("请输入一个大写字母:");
		scanf("%c", &ch);
		if (ch >= 65 && ch <= 90)
		{
			printf("%d", ch);
			printf("该字母对应的字符数组为:\n");
			print(ch - 65);
		}
		else
			printf("请输入大写字母!");
}

运行结果
在这里插入图片描述

部分字母表示表示:
15 1401 1110 1301 1111 1101 1110 1201 1510 1101 1111 1501 1110 1111 1701 1110 (A)
9 1410 2111 2201 2110 1410 2111 2201 2110 1410 (B)
8 1510 1301 1110 1201 1110 1101 1110 1510 (Z)
6 4111 4201 4110 1410 1301 1110(U)
6 1510 2110 1510 2401 2110 1510(S)

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以,以下是一个简单的网站源码,可以用于创建“学斩神”为主题的Minecraft教程网站: ```html <!DOCTYPE html> <html> <head> <title>学斩神</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> </head> <body> <header> <h1>学斩神</h1> <nav> <ul> <li><a href="#">首页</a></li> <li><a href="#">教程</a></li> <li><a href="#">资源</a></li> <li><a href="#">社区</a></li> <li><a href="#">关于</a></li> </ul> </nav> </header> <main> <section class="banner"> <h2>欢迎来到学斩神!</h2> <p>我们提供最好的Minecraft教程和资源,帮助你成为一名真正的斩神者。</p> <a href="#" class="button">开始学习</a> </section> <section class="features"> <h2>我们的特色</h2> <ul> <li> <img src="images/tutorial.png" alt="教程"> <h3>全面的教程</h3> <p>从基础到进阶,我们提供全面的Minecraft教程,帮助你成为一名斩神者。</p> </li> <li> <img src="images/resources.png" alt="资源"> <h3>丰富的资源</h3> <p>我们提供各种各样的Minecraft资源,让你的游戏更加丰富多彩。</p> </li> <li> <img src="images/community.png" alt="社区"> <h3>活跃的社区</h3> <p>加入我们的社区,和其他斩神者一起分享游戏心得,结交新的朋友。</p> </li> </ul> </section> <section class="tutorial"> <h2>最新教程</h2> <ul> <li> <img src="images/tutorial1.png" alt="教程1"> <h3>如何建立自己的Minecraft服务器</h3> <p>学习如何建立自己的Minecraft服务器,让你和好友一起玩耍。</p> <a href="#" class="button">查看教程</a> </li> <li> <img src="images/tutorial2.png" alt="教程2"> <h3>如何制作自己的红石装置</h3> <p>学习如何制作各种各样的红石装置,让你的游戏更加有趣。</p> <a href="#" class="button">查看教程</a> </li> <li> <img src="images/tutorial3.png" alt="教程3"> <h3>如何打造自己的城堡</h3> <p>学习如何打造自己的城堡,让你的Minecraft世界更加壮观。</p> <a href="#" class="button">查看教程</a> </li> </ul> </section> </main> <footer> <p>版权所有 © 学斩神 2021</p> </footer> </body> </html> ``` 您可以根据需要修改此代码,并添加更多功能和内容来创建您自己的Minecraft教程网站。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值