数字字符画
本文最后更新于41 天前,其中的信息可能已经过时,如有错误请发送邮件到suzhech@gmail.com

题目描述

请你根据以下规则,输出由 * 组成的由八位数字组成的日期图案。

每个数字的横向宽度为 k,纵向高度为 2k−1。各数字的构成如下:

  • 数字0
    • 顶部横线:第 1 行,第 1 至 k 列均为 *
    • 底部横线:第 2k−1 行,第 1 至 k 列均为 *
    • 左侧竖线:第 2 至 2k−2 行,第 1 列均为 *
    • 右侧竖线:第 2 至 2k−2 行,第 k 列均为 *
    • 中间斜线:第 2 至 k−1 列,一个垂直居中由 * 组成斜率为 1 的斜线
  • 数字1
    • 单竖线:从第 1 行到第 2k−1 行,如果 k 为奇数,则仅第 k2 列有 * ,如果 k 为偶数,则仅第 k+12 列有 * 。
  • 数字2
    • 顶部横线:第 1 行,第 1 至 k 列均为 *
    • 右侧竖线:第 2 至 k 行,第 k 列有 *
    • 中间横线:第 k 行,第 1 至 k 列均为 *
    • 左侧竖线:第 k+1 至 2k−2 行,第 1 列有 *
    • 底部横线:第 2k−1 行,第 1 至 k 列均为 *
  • 数字3
    • 顶部横线:第 1 行,第 1 至 k 列均为 *
    • 右侧竖线:第 2 至 2k−1 行,第 k 列有 *
    • 中间横线:第 k 行,第 1 至 k 列均为 *
    • 底部横线:第 2k−1 行,第 1 至 k 列均为 *
  • 数字4
    • 左侧竖线:第 1 至 k 行,第 1 列有 *
    • 中间横线:第 k 行,第 1 至 k 列均为 *
    • 右侧竖线-上段:第 1 至 k 行,第 k 列有 *
    • 右侧竖线-下段:第 k 至 2k−1 行,第 k 列有 *
  • 数字5
    • 顶部横线:第 1 行,第 1 至 k 列均为 *
    • 左侧竖线:第 2 至 k−1 行,第 1 列有 *
    • 中间横线:第 k 行,第 1 至 k 列均为 *
    • 右侧竖线:第 k+1 至 2k−2 行,第 k 列有 *
    • 底部横线:第 2k−1 行,第 1 至 k 列均为 *
  • 数字6
    • 顶部横线:第 1 行,第 1 至 k 列均为 *
    • 左侧竖线:第 2 至 2k−2 行,第 1 列有 *
    • 中间横线:第 k 行,第 1 至 k 列均为 *
    • 右侧竖线:第 k 至 2k−2 行,第 k 列有 *
    • 底部横线:第 2k−1 行,第 1 至 k 列均为 *
  • 数字7
    • 顶部横线:第 1 行,第 1 至 k 列均为 *
    • 倾斜竖线整体规则:从第 2 行到第 2k−1 行,竖线斜率为 2 ,即每向下 2 行,向左偏移 1 列
  • 数字8
    • 顶部横线:第 1 行,第 1 至 k 列均为 *
    • 底部横线:第 2k−1 行,第 1 至 k 列均为 *
    • 中间横线:第 k 行,第 1 至 k 列均为 *
    • 左侧竖线:第 2 至 2k−2 行,第 1 列有 *
    • 右侧竖线:第 2 至 2k−2 行,第 k 列有 *
  • 数字9
    • 顶部横线:第 1 行,第 1 至 k 列均为 *
    • 中间横线:第 k 行,第 1 至 k 列均为 *
    • 底部横线:第 2k−1 行,第 1 至 k 列均为 *
    • 右侧竖线:第 2 至 2k−2 行,第 k 列有 *
    • 左侧竖线:第 2 至 k 行,第 1 列有 *

输入

共两行,第一行一个八位日期,第二行一个奇数 k,k≥3,表示每个数字的横向宽度。

输出

由 * 组成的日期字符画图案。每个数字之间用两个空格分开。

题解

#include<stdio.h>
void print(int n, int k, int l)
{
	switch (n)
	{
	case 0:
		if (l == 1 || l == 2 * k - 1)
		{
			for (int i = 1; i <= k; i++)
			{
				printf("*");
			}
		}
		else if (l >= 2 && l <= 2 * k - 2)
		{
			printf("*");
			for (int i = 2; i <= k - 1; i++)
			{
				if (-i + (3 * k + 1) / 2 == l)
				{
					printf("*");
				}
				else
				{
					printf(" ");
				}
			}
			printf("*");
		}
		break;
	case 1:
		for (int i = 1; i <= k; i++)
		{
			if (i == (k + 1) / 2)
			{
				printf("*");
			}
			else
			{
				printf(" ");
			}
		}
		break;
	case 2:
		if (l == 1 || l == 2 * k - 1 || l == k)
		{
			for (int i = 1; i <= k; i++)
			{
				printf("*");
			}
		}
		else if (l >= 2 && l <= k)
		{
			for (int i = 1; i < k; i++)
			{
				printf(" ");
			}
			printf("*");
		}
		else if (l >= k + 1 && l <= 2 * k - 1)
		{
			printf("*");
			for (int i = 2; i <= k; i++)
			{
				printf(" ");
			}
		}
		break;
	case 3:
		if (l == 1 || l == 2 * k - 1 || l == k)
		{
			for (int i = 1; i <= k; i++)
			{
				printf("*");
			}
		}
		else
		{
			for (int i = 1; i < k; i++)
			{
				printf(" ");
			}
			printf("*");
		}
		break;
	case 4:
		if (l == k)
		{
			for (int i = 1; i <= k; i++)
			{
				printf("*");
			}
		}
		else if (l >= k + 1 && l <= 2 * k - 1)
		{
			for (int i = 2; i <= k; i++)
			{
				printf(" ");
			}
			printf("*");
		}
		else
		{
			printf("*");
			for (int i = 2; i < k; i++)
			{
				printf(" ");
			}
			printf("*");
		}
		break;
	case 5:
		if (l == 1 || l == 2 * k - 1 || l == k)
		{
			for (int i = 1; i <= k; i++)
			{
				printf("*");
			}
		}
		else if (l >= 2 && l <= k)
		{
			printf("*");
			for (int i = 2; i <= k; i++)
			{
				printf(" ");
			}
		}
		else if (l >= k + 1 && l <= 2 * k - 1)
		{
			for (int i = 1; i < k; i++)
			{
				printf(" ");
			}
			printf("*");
		}
		break;
	case 6:
		if (l == 1 || l == 2 * k - 1 || l == k)
		{
			for (int i = 1; i <= k; i++)
			{
				printf("*");
			}
		}
		else if (l >= 2 && l <= k)
		{
			printf("*");
			for (int i = 2; i <= k; i++)
			{
				printf(" ");
			}
		}
		else if (l >= k + 1 && l <= 2 * k - 1)
		{
			printf("*");
			for (int i = 2; i < k; i++)
			{
				printf(" ");
			}
			printf("*");
		}
		break;
	case 7:
		if (l == 1)
		{
			for (int i = 1; i <= k; i++)
			{
				printf("*");
			}
		}
		else
		{
			for (int i = 1; i <= k; i++)
			{
				if (l / 2 == k - i + 1)
				{
					printf("*");
				}
				else
				{
					printf(" ");
				}
			}
		}
		break;
	case 8:
		if (l == 1 || l == 2 * k - 1 || l == k)
		{
			for (int i = 1; i <= k; i++)
			{
				printf("*");
			}
		}
		else
		{
			printf("*");
			for (int i = 2; i < k; i++)
			{
				printf(" ");
			}
			printf("*");
		}
		break;
	case 9:
		if (l == 1 || l == 2 * k - 1 || l == k)
		{
			for (int i = 1; i <= k; i++)
			{
				printf("*");
			}
		}
		else if (l >= 2 && l <= k)
		{
			printf("*");
			for (int i = 2; i < k; i++)
			{
				printf(" ");
			}
			printf("*");
		}
		else if (l >= k + 1 && l <= 2 * k - 1)
		{
			for (int i = 1; i < k; i++)
			{
				printf(" ");
			}
			printf("*");
		}
	}

}
int main()
{
	
	int d[8];
	for (int i = 0; i < 8; i++)
	{
		scanf("%1d", &d[i]);
	}
	int k;
	scanf("%d", &k);
	for (int l = 1; l <= 2 * k - 1; l++)
	{
		for (int i = 0; i < 8; i++)
		{
			print(d[i], k, l);
			if (i != 7)
			{
				printf("  ");
			}
		}
		printf("\n");
	}
return 0;
}
数字字符画 by 如中
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇