题目描述 Description
小明玩一个数字游戏,取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该n行n列正方形矩阵以及其的对角线数字之和.
输入描述 Input Description
n(即n行n列)
输出描述 Output Description
n+1行,n行为组成的矩阵,最后一行为对角线数字之和
样例输入 Sample Input
3
样例输出 Sample Output1
5 4 3
6 1 2
7 8 9
25
数据范围及提示 Data Size & Hint
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a;
int x[101][101];
scanf("%d",&a);
int sum=a*a;
int zong=1;
int Count1=a;
int Count2=0;
while(sum!=1)
{
for (int number=Count1-1;number>=Count2;number--)
{
x[Count1-1][number]=sum;
if (number==Count1-1)
zong +=sum;
if (number==Count2)
zong +=sum;
sum--;
}
for (int number=Count1-2;number>=Count2;number--)
{
x[number][Count2]=sum;
if (number==Count2)
zong +=sum;
sum--;
}
for (int number=Count2+1;number<Count1;number++)
{
x[Count2][number]=sum;
if (number==Count1-1)
zong +=sum;
sum--;
}
for (int number=Count2+1;number<Count1-1;number++)
{
x[number][Count1-1]=sum;
sum--;
}
Count1--;
Count2++;
}
x[a/2][a/2]=1;
for (int number1=0;number1<a;number1++)
{
for (int number2=0;number2<a;number2++)
{
printf("%d ",x[number1][number2]);
}
printf("\n");
}
printf("%d\n",zong);
return 0;
}
第一次贴代码,第一次建立博客。 希望得到各位大神的指点,这是我的起点,我会努力的!!!