水题,水水更健康。
#include<iostream>
using namespace std;
int a[101][101];
void Show(int x)
{
	int i,j,m,n;
	memset(a,0,sizeof(a));
	i=1;
	m=1;
	j=2;
	n=x;
	while(i<=n) a[1][i++]=m++;
	while(j<=n) a[j++][n]=m++;
	i=n-1;
	while(i>=1) a[n][i--]=m++;
	j=n-1;
	while(j>=2) a[j--][1]=m++;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
			if(a[i][j])
				printf("%3d",a[i][j]);
			else
				printf("   ");
		cout<<endl;
	}
}
int main()
{
	int n;
	while(cin>>n &&n)
	{
		Show(n);
	}
    return 0;
}原文地址:http://blog.csdn.net/a809146548/article/details/45293137