解题心得:
- 排版问题如果规律太难,可以先将其预存在数组里,最后再一起打印
- 给字符复制空格的时候,写成“ ”的形式,其实赋的值是$符号
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n,first=1;
char s1,s2,buf[82][82];
while(scanf("%d %c %c",&n,&s1,&s2)!=EOF){
int i,j,k,x,y;
if(first==1){
first=0;
}
else{
printf("\n");
}
for(i=1,j=1;i<=n;i+=2,j+=1){
x=n/2+1;
y=x;
x-=j-1;
y-=j-1;
char c=j%2?s1:s2;
for(k=1;k<=i;k++){
buf[x][y+k-1]=c;
buf[x+k-1][y]=c;
buf[x+i-1][y+k-1]=c;
buf[x+k-1][y+i-1]=c;
}
}
if(n!=1){
buf[1][1]=' ';
buf[1][n]=' ';
buf[n][1]=' ';
buf[n][n]=' ';
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
printf("%c ",buf[i][j]);
}
printf("\n");
}
}
return 0;
}
网友评论