//试题下面讨论都说,这格式很坑人。在网站上提交,答案错误。我自己试的,是对的。
小螃蟹提出装在数组里再输出,我当时就想着怎么直接输出来着。
可以直接用字符数组不用那么麻烦得。
char matrix[MAXSIZE][MAXSIZE];
#include <iostream> #include <cstdio> using namespace std; const int MAXSIZE=80; int matrix[MAXSIZE][MAXSIZE]; int main() { int n; char out; char in; while(scanf("%d %c %c",&n,&in,&out)!=EOF) { int cen=(n+1)/2; matrix[cen-1][cen-1]=0; for(int i=1; i<cen; ++i) { if(i%2==1) { for(int j=cen-i; j<=cen+i; ++j) { matrix[cen-i-1][j-1]=1; matrix[cen+i-1][j-1]=1; } for(int j=cen-i+1; j<=cen+i-1; ++j) { matrix[j-1][cen-i-1]=1; matrix[j-1][cen+i-1]=1; } } else { for(int j=cen-i; j<=cen+i; ++j) { matrix[cen-i-1][j-1]=0; matrix[cen+i-1][j-1]=0; } for(int j=cen-i+1; j<=cen+i-1; ++j) { matrix[j-1][cen-i-1]=0; matrix[j-1][cen+i-1]=0; } } } matrix[0][0]=-1; matrix[n-1][n-1]=-1; matrix[0][n-1]=-1; matrix[n-1][0]=-1; for(int i=0; i<n; ++i) { for(int j=0; j<n; ++j) { if(matrix[i][j]==0){ printf("%c",in); }else if(matrix[i][j]==1){ printf("%c",out); }else{ printf(" "); } } printf("\n"); } printf("\n"); } }