题目来源:http://acm.hit.edu.cn/hoj/problem/view?id=1138
模拟!
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int MAXN = 150;
int main()
{
int n, i, j;
char str[10];
char Graph[MAXN][MAXN];
while (scanf("%d %s", &n, str) && (n != 0 || str[0] != '0'))
{
int Len = strlen(str);
int iCurcol = 0;
for (i = 0; i < 2*n+3; ++i)
{
for(j = 0; j < Len*(n+3)-1; ++j)
Graph[i][j] = ' ';
Graph[i][j] = '\0';
}
for (i = 0; i < Len; ++i)
{
switch(str[i])
{
case '0':
for (j = iCurcol+1; j < iCurcol+n+1; ++j)
Graph[0][j] = Graph[2*n+2][j] = '-';
for (j = 1; j <= n; ++j)
Graph[j][iCurcol] = Graph[j][iCurcol+n+1] = Graph[j+n+1][iCurcol] = Graph[j+n+1][iCurcol+n+1] = '|';
break;
case '1':
for (j = 1; j <= n; ++j)
Graph[j][iCurcol+n+1] = Graph[j+n+1][iCurcol+n+1] = '|';
break;
case '2':
for(j = 1; j <= n; ++j)
Graph[j][iCurcol+n+1] = Graph[j+n+1][iCurcol] = '|';
for (j = iCurcol+1; j < iCurcol+n+1; ++j)
Graph[0][j] = Graph[n+1][j] = Graph[2*n+2][j] = '-';
break;
case '3':
for(j = iCurcol+1; j < iCurcol+n+1; ++j)
Graph[0][j] = Graph[n+1][j] = Graph[2*n+2][j] = '-';
for (j = 1; j <= n; ++j)
Graph[j][iCurcol+n+1] = Graph[j+n+1][iCurcol+n+1] = '|';
break;
case '4':
for(j = iCurcol+1; j < iCurcol+n+1; ++j)
Graph[n+1][j] = '-';
for(j = 1; j <= n; ++j)
Graph[j][iCurcol] = Graph[j][iCurcol+n+1] = Graph[j+n+1][iCurcol+n+1] = '|';
break;
case '5':
for(j = iCurcol+1; j < iCurcol+n+1; ++j)
Graph[0][j] = Graph[n+1][j] = Graph[2*n+2][j] = '-';
for (j = 1; j <= n; ++j)
Graph[j][iCurcol] = Graph[j+n+1][iCurcol+n+1] = '|';
break;
case '6':
for(j = iCurcol+1; j < iCurcol+n+1; ++j)
Graph[0][j] = Graph[n+1][j] = Graph[2*n+2][j] = '-';
for(j = 1; j <= n; ++j)
Graph[j][iCurcol] = Graph[j+n+1][iCurcol] = Graph[j+n+1][iCurcol+n+1] = '|';
break;
case '7':
for(j = iCurcol+1; j < iCurcol+n+1; ++j)
Graph[0][j] = '-';
for (j = 1; j <= n; ++j)
Graph[j][iCurcol+n+1] = Graph[j+n+1][iCurcol+n+1] = '|';
break;
case '8':
for(j = iCurcol+1; j < iCurcol+n+1; ++j)
Graph[0][j] = Graph[n+1][j] = Graph[2*n+2][j] = '-';
for(j = 1; j <= n; ++j)
Graph[j][iCurcol] = Graph[j+n+1][iCurcol] = Graph[j+n+1][iCurcol+n+1] = Graph[j][iCurcol+n+1] = '|';
break;
case '9':
for(j = iCurcol+1; j < iCurcol+n+1; ++j)
Graph[0][j] = Graph[n+1][j] = Graph[2*n+2][j] = '-';
for (j = 1; j <= n; ++j)
Graph[j][iCurcol] = Graph[j][iCurcol+n+1] = Graph[j+n+1][iCurcol+n+1] = '|';
break;
default:
break;
}
iCurcol += (n+3);
}
for (i = 0; i < 2*n+3; ++i)
puts(Graph[i]);
puts("");
}
return 0;
}