//试题下面讨论都说,这格式很坑人。在网站上提交,答案错误。我自己试的,是对的。
小螃蟹提出装在数组里再输出,我当时就想着怎么直接输出来着。
可以直接用字符数组不用那么麻烦得。
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");
}
}
京公网安备 11010502036488号