#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