仔细看题目下面给的hint
#include <iostream>
#include <memory.h>#include <cstdio>
using namespace std;
int ans[ 16][ 16];
int main()
{
int n;
int t= 0;
while(cin>>n)
{
t++;
if(t!= 1)
cout<<endl;
memset(ans, 0, sizeof(ans));
int x,y;
x=n/ 2;
y= 0;
int cnt= 0;
for( int i= 1;i<=n*n;i++)
{
ans[y][x]=i;
cnt++;
if(cnt==n)
{
y++;
cnt= 0;
}
else
{
x++;
y--;
}
if(x>=n)
x= 0;
if(y< 0)
y=n- 1;
if(y>=n)
y= 0;
}
int sum= 0;
for( int i= 1;i<=n*n;i++)
sum+=i;
sum/=n;
cout<< "n="<<n<< ", sum="<<sum<<endl;
for( int i= 0;i<n;i++)
{
for( int j= 0;j<n;j++)
{
if(n< 4)
printf( " %d ",ans[i][j]);
else if(n< 10)
printf( " %2d ",ans[i][j]);
else
printf( " %3d ",ans[i][j]);
}
cout<<endl;
}
}
}