#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(){
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
int n;
char flag[5]={' ','.','x','W','\0'};
while(scanf("%d",&n)!=EOF){
getchar();
int a[10];
for(int i= 0;i<n;i++){
int cd[40];
memset(cd,0,sizeof(cd));
cd[19]=1;
char prior[41];
memset(prior,' ',sizeof(prior));
prior[40] = '\0';
prior[19] = flag[1];
for(int j = 0;j<10;j++)scanf("%d",&a[j]);
getchar();
printf("%s\n",prior);
for(int j = 1;j<50;j++){
char next[41];next[40]='\0';
for(int k = 0;k<40;k++){
if(k==0){next[0] = flag[a[cd[0]+cd[1]]];continue;}
if(k==39){next[39] = flag[a[cd[38]+cd[39]]];continue;}
next[k] = flag[a[cd[k-1]+cd[k]+cd[k+1]]];
}
printf("%s",next);
printf("\n");
for(int p=0;p<40;p++){
switch(next[p]){
case ' ':cd[p] = 0;break;
case '.':cd[p] = 1;break;
case 'x':cd[p] = 2;break;
case 'W':cd[p] = 3;break;
}
}
for(int t=0;t<40;t++)
prior[t]= next[t];
}
if(i!=n-1)
printf("\n");
}
}
}
1、如果一个字符数组含有40个字符的长度,则声明为char s[40],肯定是不行的,最后没有结尾'\0'。
2、如果一个字符数组含有40个字符的长度,使用memset(s,0,sizeof(s)); 然后,printf("%s",s);肯定是什么都不会输出的,因为第一个就被设置成'\0',是字符数组的结尾了。
3、'\0'用作字符串的结束符。它的ascii数值就是0 ,‘ ’是空格字符。它的ascii数值是32。