题意
中文不解释
思路
是一道模拟题
可以使用七段数码管的原理,将每个数字在每一段是否要显示标识出来,形成一个10×7的数组。
题目较简单,就是有很多小细节
(1)输出的数字没有说不能以零开头
(2)输出的数字可以是0
(3)是数字与数字间才用空类隔开,也就是说最后一个数字后面不能有空列
(3)是每个数后面有一个空行,因此最后一个数有空行
(4)注意数字的表示,如‘9’最下面还有一横的要注意。数字表示如下:
- - - - - - - -
| | | | | | | | | | | | | |
- - - - - - -
| | | | | | | | | | | | |
- - - - - - -
总结
无
代码
I 使用int数组
(1)C
#include "stdio.h"
//#include "stdlib.h"
#include "string.h"
char a[10][7] =
{
'-','|','|',' ','|','|','-',//0
' ',' ','|',' ',' ','|',' ',//1
'-',' ','|','-','|',' ','-',//2
'-',' ','|','-',' ','|','-',//3
' ','|','|','-',' ','|',' ',//4
'-','|',' ','-',' ','|','-',//5
'-','|',' ','-','|','|','-',//6
'-',' ','|',' ',' ','|',' ',//7
'-','|','|','-','|','|','-',//8
'-','|','|','-',' ','|','-' //9
};
int main()
{
char n[9];
int i,j,k,s,len;
//int flag = 0;
scanf("%d %s",&s,n);
while(!(s==0 && strlen(n)==1 && n[0]=='0') )
{
//if(flag==1){putchar('\n');}//空白行
len = strlen(n);
//printf("len=%d\n",len);
for(i=0;i<len;i++)
{
putchar(' ');
for(j=0;j<s;j++) putchar(a[n[i]-'0'][0]);
putchar(' ');
if(i<len-1){putchar(' ');}//空白列
}
putchar('\n');
for(j=0;j<s;j++)
{
for(i=0;i<len;i++)
{
putchar(a[n[i]-'0'][1]);
for(k=0;k<s;k++) putchar(' ');
putchar(a[n[i]-'0'][2]);
if(i<len-1){putchar(' ');}//空白列
}
putchar('\n');
}
for(i=0;i<len;i++)
{
putchar(' ');
for(j=0;j<s;j++) putchar(a[n[i]-'0'][3]);
putchar(' ');
if(i<len-1){putchar(' ');}//空白列
}
putchar('\n');
for(j=0;j<s;j++)
{
for(i=0;i<len;i++)
{
putchar(a[n[i]-'0'][4]);
for(k=0;k<s;k++) putchar(' ');
putchar(a[n[i]-'0'][5]);
if(i<len-1){putchar(' ');}//空白列
}
putchar('\n');
}
for(i=0;i<len;i++)
{
putchar(' ');
for(j=0;j<s;j++) putchar(a[n[i]-'0'][6]);
putchar(' ');
if(i<len-1){putchar(' ');}//空白列
}
putchar('\n');
putchar('\n');//空白行
scanf("%d %s",&s,n);
//flag = 1;
}
//system("pause");
return 0;
}