输入:n(即n行n列)
输出:n+1行,n行为组成的矩阵,最后一行为对角线数字之和
样例输入:3
样例输出:
5 4 3
6 1 2
7 8 9
25
#include <stdio.h>
int main(int argc, char *argv[])
{int a,d,j,i,n,t,r[100][100],ans=0;
scanf("%d",&n);
a=1;
j=1;
d=n;
t=n*n;
do
{
for (j=d;j>=a;j--)
{
r[d][j]=t--;
}
for (i=(d-1);i>=a;i--)
{
r[i][a]=t--;
}
for (j=a+1;j<=(n-a);j++)
{
r[a][j]=t--;
}
for (i=a;i<=d-1;i++)
{
r[i][d]=t--;
}
a=a+1;
d=d-1;
}while (a!=n-1);
if (n==3) r[2][2]=1 ;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
printf("%4d ",r[i][j]);
printf("\n");
}
for (i=1;i<=n;i++)
{
ans+=r[i][i];
ans+=r[n+1-i][i];
}
printf("%d",ans-1);
}
来源:消费电子网