#include<stdio.h> #include<string.h> int main() { int i,j,n,m; char a[110][110]; scanf("%d",&n); while(n--) { memset(a,0,sizeof(a)); scanf("%d",&m); for(i=1;i<=m/2;i++) { for(j=1;j<=m;j++) { if(j<=m-i+1&&j>=i) a[i][j]='*'; else a[i][j]=' '; } } for(;i<=m;i++) { for(j=1;j<=i;j++) { if(j>=m-i+1&&j<=i) a[i][j]='*'; else a[i][j]=' '; } } for(i=1;i<=m/2;i++) { for(j=1;j<=m;j++) { if(i+j>m+1) break; printf("%c",a[i][j]); } printf("\n"); } for(;i<=m;i++) { for(j=1;j<=i;j++) printf("%c",a[i][j]); printf("\n"); } } return 0; }
//这是放大的X的代码 有异曲同工之妙 故粘贴如下 #include<stdio.h> #include<string.h> int main() { int n,i,j,m; char a[82][82]; scanf("%d",&m); getchar(); while(m--) { memset(a,0,sizeof(a)); scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(i==j||j==n-i+1) a[i][j]='X'; else a[i][j]=' '; } } for(i=1;i<=n/2;i++) { for(j=1;j<=n;j++) { if(j+i>n+1) break; printf("%c",a[i][j]); } printf("\n"); } for(;i<=n;i++) { for(j=1;j<=i;j++) { printf("%c",a[i][j]); } printf("\n"); } printf("\n"); } return 0; }
#include<stdio.h> #include<string.h> int main() { int a[110][110]; int x,y,n,m; scanf("%d",&n); memset(a,0,sizeof(a)); m=a[x=0][y=n-1]=1; while(m<n*n) { while(x+1<n&&!a[x+1][y]) a[++x][y]=++m; while(y-1>=0&&!a[x][y-1]) a[x][--y]=++m; while(x-1>=0&&!a[x-1][y]) a[--x][y]=++m; while(y+1<n&&!a[x][y+1]) a[x][++y]=++m; } for(x=0;x<n;x++) { for(y=0;y<n;y++) { printf("%3d",a[x][y]); } printf("\n"); } return 0; }
原文:http://blog.csdn.net/ice_alone/article/details/38334249