这是我的ac代码,你可以参考一下
#include
int main()
{
int n,i,j,flag=0,t,m;char c,k;
while(scanf("%d %c %c",&n,&c,&k)!=EOF)
{
if(((n-1)/2)%2==0)
{
t=c;c=k;k=t;
}
if(flag==1)printf("\n");
if(n==1)printf("%c\n",k);
else if(n==2)printf("%c\n%c\n",c,c);
else
for(j=1;j<=n;j++)
{
if(j==1||j==n)
for(i=1;i<=n;i++)
{
if(i==1)printf(" ");
else if(i==n)printf(" \n");
else printf("%c",k);
}
else if(j<=n/2)
{
m=j;
for(i=1;i<=m/2;i++)
{
printf("%c%c",k,c);
}
for(i=1;i<=n-m/2*4;i++)
{
if(m%2==0)printf("%c",c);
else printf("%c",k);
}
for(i=1;i<=m/2;i++)
{
printf("%c%c",c,k);
}
printf("\n");
}
else if(n%2!=0&&j==n/2+1)
{
for(i=1;i<=n/2;i++)
printf("%c%c",k,c);
printf("%c\n",k);
}
else if(j>=n/2+1)
{
m=j;
for(i=1;i<=n/2-(m-1)/2;i++)
{
printf("%c%c",k,c);
}
for(i=1;i<=n-(n/2-(m-1)/2)*4;i++)
{
if(m%2==0)printf("%c",c);
else printf("%c",k);
}
for(i=1;i<=n/2-(m-1)/2;i++)
{
printf("%c%c",c,k);
}
printf("\n");
}
}
flag=1;
}
return 0;
}
#include
#include
#include
using namespace std;
int x,y;
int main()
{
int n,i,j,key,count=0;
char a,b;
int max(int,int);
while(scanf("%d %c %c",&n,&a,&b)!=EOF)
{
if(count++) printf("\n");
if(n==1) {printf("%c\n",a);continue;}
key=(n+1)/2;
for(j=1;j<=n;j++)
{
for(i=1;i<=n;i++)
{
if((i==1||i==n)&&(j==1||j==n)) printf(" ");
else
{
if(max(abs(i-key),abs(j-key))%2) printf("%c",b);
else printf("%c",a);
}
}
printf("\n");
}
}
return 0;
}
int max(int x,int y)
{
if(x>y) return x;
else return y;
}
这个题掐空格比较恶心~
n = 1的时候就出错了