这题其实也是暴力枚举,但是不能一个数字一个数字输出,要一行一行输出,这就要对每种情况进行遍历
建议还是自己写吧,一行一行输出就彳亍了,也不算难题,给代码太长了也不一定能理解。
点击查看代码
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int a[10];
int n,i,s,j,t,k;
while(scanf("%d%d",&s,&n)!=EOF)
{
if(s==0 && n==0) break;
t=0;
if(n==0)
{
t=1;
a[t]=0;
}
else
{
while(n!=0)
{
t++;
a[t]=n%10;
n=n/10;
}
}
for(j=t;j>=1;j--)
{
if(a[j]==1 || a[j]==4)
{
for(i=1;i<=s+2;i++)
{
printf(" ");
}
}
else
{
printf(" ");
for(i=2;i<=s+1;i++)
{
printf("-");
}
printf(" ");
}
printf(" ");
}
printf("\n");
k=s;
while(k--)
{
for(j=t;j>=1;j--)
{
if(a[j]==5 || a[j]==6)
{
printf("|");
for(i=2;i<=s+2;i++)
{
printf(" ");
}
}
else if(a[j]==1 || a[j]==2 || a[j]==3 || a[j]==7)
{
for(i=2;i<=s+2;i++)
{
printf(" ");
}
printf("|");
}
else
{
printf("|");
for(i=2;i<=s+1;i++)
{
printf(" ");
}
printf("|");
}
printf(" ");
}
printf("\n");
}
for(j=t;j>=1;j--)
{
if(a[j]==1 || a[j]==7 || a[j]==0)
{
for(i=1;i<=s+2;i++)
{
printf(" ");
}
}
else
{
printf(" ");
for(i=2;i<=s+1;i++)
{
printf("-");
}
printf(" ");
}
printf(" ");
}
printf("\n");
k=s;
while(k--)
{
for(j=t;j>=1;j--)
{
if(a[j]==2)
{
printf("|");
for(i=2;i<=s+2;i++)
{
printf(" ");
}
}
else if(a[j]==1 || a[j]==4 || a[j]==3 || a[j]==7 || a[j]==5 || a[j]==9)
{
for(i=2;i<=s+2;i++)
{
printf(" ");
}
printf("|");
}
else
{
printf("|");
for(i=2;i<=s+1;i++)
{
printf(" ");
}
printf("|");
}
printf(" ");
}
printf("\n");
}
for(j=t;j>=1;j--)
{
if(a[j]==1 || a[j]==4 || a[j]==7)
{
for(i=1;i<=s+2;i++)
{
printf(" ");
}
}
else
{
printf(" ");
for(i=2;i<=s+1;i++)
{
printf("-");
}
printf(" ");
}
printf(" ");
}
printf("\n");
printf("\n");
}
return 0;
}