题目
LED屏的液晶显示在工业上有着十分重要的应用,
现在W老师给你个任务,给你一个仅包含数字的字符串,输出其液晶显示效果。本题中,我们利用’-‘和’|’表示液晶数字中的笔画,可以看出每个数字对应的液晶显示格式都严格占据5行3列的空间(空格也需要输出),例如数字8:
因此,数字0-9可以表示为:
输入格式:
一行,仅包含数字的字符串(字符串长度不超过200)
输出格式:
该数字对应的液晶显示效果
输入样例:
0123456789
输出样例:
代码1展示
#include<stdio.h>
#include<string.h>
#define N 600
int main()
{
char b[N],a[5][N];
scanf("%s",&b);
int s=strlen(b);
for(int i=1;i<=s;i++)
switch(b[i-1])
{
case '0':a[0][3*i-3]=' ';a[0][3*i-2]='-';a[0][3*i-1]=' ';
a[1][3*i-3]='|';a[1][3*i-2]=' ';a[1][3*i-1]='|';
a[2][3*i-3]=' ';a[2][3*i-2]=' ';a[2][3*i-1]=' ';
a[3][3*i-3]='|';a[3][3*i-2]=' ';a[3][3*i-1]='|';
a[4][3*i-3]=' ';a[4][3*i-2]='-';a[4][3*i-1]=' ';break;
case '1':a[0][3*i-3]=' ';a[0][3*i-2]=' ';a[0][3*i-1]=' ';
a[1][3*i-3]=' ';a[1][3*i-2]=' ';a[1][3*i-1]='|';
a[2][3*i-3]=' ';a[2][3*i-2]=' ';a[2][3*i-1]=' ';
a[3][3*i-3]=' ';a[3][3*i-2]=' ';a[3][3*i-1]='|';
a[4][3*i-3]=' ';a[4][3*i-2]=' ';a[4][3*i-1]=' ';break;
case '2':a[0][3*i-3]=' ';a[0][3*i-2]='-';a[0][3*i-1]=' ';
a[1][3*i-3]=' ';a[1][3*i-2]=' ';a[1][3*i-1]='|';
a[2][3*i-3]=' ';a[2][3*i-2]='-';a[2][3*i-1]=' ';
a[3][3*i-3]='|';a[3][3*i-2]=' ';a[3][3*i-1]=' ';
a[4][3*i-3]=' ';a[4][3*i-2]='-';a[4][3*i-1]=' ';break;
case '3':a[0][3*i-3]=' ';a[0][3*i-2]='-';a[0][3*i-1]=' ';
a[1][3*i-3]=' ';a[1][3*i-2]=' ';a[1][3*i-1]='|';
a[2][3*i-3]=' ';a[2][3*i-2]='-';a[2][3*i-1]=' ';
a[3][3*i-3]=' ';a[3][3*i-2]=' ';a[3][3*i-1]='|';
a[4][3*i-3]=' ';a[4][3*i-2]='-';a[4][3*i-1]=' ';break;
case '4':a[0][3*i-3]=' ';a[0][3*i-2]=' ';a[0][3*i-1]=' ';
a[1][3*i-3]='|';a[1][3*i-2]=' ';a[1][3*i-1]='|';
a[2][3*i-3]=' ';a[2][3*i-2]='-';a[2][3*i-1]=' ';
a[3][3*i-3]=' ';a[3][3*i-2]=' ';a[3][3*i-1]='|';
a[4][3*i-3]=' ';a[4][3*i-2]=' ';a[4][3*i-1]=' ';break;
case '5':a[0][3*i-3]=' ';a[0][3*i-2]='-';a[0][3*i-1]=' ';
a[1][3*i-3]='|';a[1][3*i-2]=' ';a[1][3*i-1]=' ';
a[2][3*i-3]=' ';a[2][3*i-2]='-';a[2][3*i-1]=' ';
a[3][3*i-3]=' ';a[3][3*i-2]=' ';a[3][3*i-1]='|';
a[4][3*i-3]=' ';a[4][3*i-2]='-';a[4][3*i-1]=' ';break;
case '6':a[0][3*i-3]=' ';a[0][3*i-2]='-';a[0][3*i-1]=' ';
a[1][3*i-3]='|';a[1][3*i-2]=' ';a[1][3*i-1]=' ';
a[2][3*i-3]=' ';a[2][3*i-2]='-';a[2][3*i-1]=' ';
a[3][3*i-3]='|';a[3][3*i-2]=' ';a[3][3*i-1]='|';
a[4][3*i-3]=' ';a[4][3*i-2]='-';a[4][3*i-1]=' ';break;
case '7':a[0][3*i-3]=' ';a[0][3*i-2]='-';a[0][3*i-1]=' ';
a[1][3*i-3]=' ';a[1][3*i-2]=' ';a[1][3*i-1]='|';
a[2][3*i-3]=' ';a[2][3*i-2]=' ';a[2][3*i-1]=' ';
a[3][3*i-3]=' ';a[3][3*i-2]=' ';a[3][3*i-1]='|';
a[4][3*i-3]=' ';a[4][3*i-2]=' ';a[4][3*i-1]=' ';break;
case '8':a[0][3*i-3]=' ';a[0][3*i-2]='-';a[0][3*i-1]=' ';
a[1][3*i-3]='|';a[1][3*i-2]=' ';a[1][3*i-1]='|';
a[2][3*i-3]=' ';a[2][3*i-2]='-';a[2][3*i-1]=' ';
a[3][3*i-3]='|';a[3][3*i-2]=' ';a[3][3*i-1]='|';
a[4][3*i-3]=' ';a[4][3*i-2]='-';a[4][3*i-1]=' ';break;
case '9':a[0][3*i-3]=' ';a[0][3*i-2]='-';a[0][3*i-1]=' ';
a[1][3*i-3]='|';a[1][3*i-2]=' ';a[1][3*i-1]='|';
a[2][3*i-3]=' ';a[2][3*i-2]='-';a[2][3*i-1]=' ';
a[3][3*i-3]=' ';a[3][3*i-2]=' ';a[3][3*i-1]='|';
a[4][3*i-3]=' ';a[4][3*i-2]='-';a[4][3*i-1]=' ';break;
}
for(int i=0;i<5;i++)//行
{
for(int j=0;j<3*s;j++)
printf("%c",a[i][j]);
printf("\n");
}
return 0;
}
此代码的输出方式是直接输出,方式简单粗暴,但代码长度较长,能够通过这种较为简单的方式满足题目的要求。
代码2展示
算法上的优化,从80行缩减至17行,以此来体现简便算法的魅力。
#include<stdio.h>
#include<string.h>
char mp[5][50]={
" - - - - - - - - ",
"| | | | || || | || || |",
" - - - - - - - ",
"| | || | | || | || | |",
" - - - - - - - "};
int main()
{
char s[202];
scanf("%s",s);
for(int j=0;j<5;j++,puts(""))
for(int i=0;i<strlen(s);i++)
printf("%c%c%c",mp[j][3*(s[i]-'0')],mp[j][3*(s[i]-'0')+1],mp[j][3*(s[i]-'0')+2]);
return 0;
}