bailian.openjudge 2745:显示器

http://bailian.openjudge.cn/practice/2745

描述

你的一个朋友买了一台电脑。他以前只用过计算器,因为电脑的显示器上显示的数字的样子和计算器是不一样,所以当他使用电脑的时候会比较郁闷。为了帮助他,你决定写一个程序把在电脑上的数字显示得像计算器上一样。

输入

输入包括若干行,每行表示一个要显示的数。每行有两个整数s和n (1 <= s <= 10, 0 <= n <= 99999999),这里n是要显示的数,s是要显示的数的尺寸。
如果某行输入包括两个0,表示输入结束。这行不需要处理。

输出

显示的方式是:用s个’-‘表示一个水平线段,用s个’|'表示一个垂直线段。这种情况下,每一个数字需要占用s+2列和2s+3行。另外,在两个数字之间要输出一个空白的列。在输出完每一个数之后,输出一个空白的行。注意:输出中空白的地方都要用空格来填充。

样例输入

2 12345
3 67890
0 0

样例输出

          --   --        -- 
       |    |    | |  | | 
       |    |    | |  | | 
          --   --   --   -- 
       | |       |    |    |
       | |       |    |    |
          --   --        -- 

     ---   ---   ---   ---   --- 
    |         | |   | |   | |   |
    |         | |   | |   | |   |
    |         | |   | |   | |   |
     ---         ---   --- 
    |   |     | |   |     | |   |
    |   |     | |   |     | |   |
    |   |     | |   |     | |   |
     ---         ---   ---   ---

提示

数字(digit)指的是0,或者1,或者2……或者9。数(number)由一个或者多个数字组成。

代码

#include<stdio.h>
using namespace std;

int main()
{
	int i,j,k,s;
	char num[11];
	char n1[11]={"- -- -----"};
	char n2[11]={"|   ||| ||"};
	char n3[11]={"|||||  |||"};
	char n4[11]={"  ----- --"};
	char n5[11]={"| |   | | "};
	char n6[11]={"|| |||||||"};
	char n7[11]={"- -- -- --"};
	
	while(true)
	{
		scanf("%d",&s);
		scanf("%s",num);
		
		if(s==0 && num[0]=='0')
			return 0;
/****************************************************************/ // 数字 1 的笔画输出 
		for(i=0; num[i+1]!='\0'; i++)
		{
			printf(" ");
			for(j=0; j<s; j++)
				printf("%c",n1[num[i]-'0']);
			printf("  ");
		}
		printf(" ");
		for(j=0; j<s; j++)
			printf("%c",n1[num[i]-'0']);
		printf("\n");
/****************************************************************/ // 数字 2、3 的笔画输出  
		for(j=0; j<s; j++)
		{
			for(i=0; num[i+1]!='\0'; i++)
			{
				printf("%c",n2[num[i]-'0']);
				for(k=0; k<s; k++)
					printf(" ");
				printf("%c",n3[num[i]-'0']);
				printf(" ");
			}
			printf("%c",n2[num[i]-'0']);
			for(k=0; k<s; k++)
				printf(" ");
			printf("%c",n3[num[i]-'0']);
			printf("\n");
		}
/****************************************************************/ // 数字 4 的笔画输出  
		for(i=0; num[i+1]!='\0'; i++)
		{
			printf(" ");
			for(j=0; j<s; j++)
				printf("%c",n4[num[i]-'0']); 
			printf("  ");
		}
		printf(" ");
		for(j=0; j<s; j++)
			printf("%c",n4[num[i]-'0']);
		printf("\n");
/****************************************************************/ // 数字 5、6 的笔画输出  
		for(j=0; j<s; j++)
		{
			for(i=0; num[i+1]!='\0'; i++)
			{
				printf("%c",n5[num[i]-'0']);
				for(k=0; k<s; k++)
					printf(" ");
				printf("%c",n6[num[i]-'0']);
				printf(" ");
			}
			printf("%c",n5[num[i]-'0']);
			for(k=0; k<s; k++)
				printf(" ");
			printf("%c",n6[num[i]-'0']);
			printf("\n");
		}
/****************************************************************/ // 数字 7 的笔画输出  
		for(i=0; num[i+1]!='\0'; i++)
		{
			printf(" ");
			for(j=0; j<s; j++)
				printf("%c",n7[num[i]-'0']); 
			printf("  ");
		}
		printf(" ");
		for(j=0; j<s; j++)
			printf("%c",n7[num[i]-'0']);
		printf("\n");
		printf("\n");
	}
	
	return 0;
}
上一篇:【MATLAB深度学习】采用 Deeplab v3+ 实现全景分割


下一篇:素数筛选 - bailian 4138:质数的和与积