真正意義上的“水題”
#include<stdio.h>
int in[15][15];
char out[50][50];
int main(){
int num,m;
int rpo,cpo,iuh;
int i,j;
num=1;
while(scanf("%d",&m) && m !=0){
memset(out,0,sizeof(out));
if(num>1)printf("\n");
printf("Case %d:\n\n",num++);
for(i=0;i<m;i++)
for(j=0;j<m;j++)
scanf("%d",&in[i][j]);
rpo=0;
for(i=0;i<m;i++){
cpo=0;
for(j=0;j<m;j++){
if(in[i][j]==0){
if(cpo==0 || out[rpo][cpo-2] != 'H'){
if(rpo==0 || out[rpo-2][cpo+2] =='H') iuh=1;
else iuh= -1;
memcpy(out[rpo ]+cpo,"H-O ",sizeof(char)*4);
memcpy(out[rpo+iuh ]+cpo," | ",sizeof(char)*4);
memcpy(out[rpo+iuh*2]+cpo," H ",sizeof(char)*4);
}
else{
if(rpo==0 || out[rpo-2][cpo] =='H') iuh=1;
else iuh= -1;
memcpy(out[rpo ]+cpo,"O-H ",sizeof(char)*4);
memcpy(out[rpo+iuh ]+cpo,"| ",sizeof(char)*4);
memcpy(out[rpo+iuh*2]+cpo,"H ",sizeof(char)*4);
}
cpo+=4;
}
else if(in[i][j]==1){
memcpy(out[rpo ]+cpo,"H-O-H ",sizeof(char)*6);
cpo+=6;
}
else if(in[i][j]==-1){
memcpy(out[rpo-2 ]+cpo,"H ",sizeof(char)*2);
memcpy(out[rpo-1 ]+cpo,"| ",sizeof(char)*2);
memcpy(out[rpo ]+cpo,"O ",sizeof(char)*2);
memcpy(out[rpo+1 ]+cpo,"| ",sizeof(char)*2);
memcpy(out[rpo+2 ]+cpo,"H ",sizeof(char)*2);
cpo+=2;
}
}
rpo+=4;
}
for(i=0;i<4*m+3;i++)
printf("*");
printf("\n");
for(i=0;i<4*m-3;i++){
printf("*");
for(j=0;j<4*m+1;j++){
if(out[i][j] != '\0')printf("%c",out[i][j]);
else printf(" ");
}
printf("*\n");
}
for(i=0;i<4*m+3;i++)
printf("*");
printf("\n");
}
return 0;
}