1.输入n,,输出可大可小的数字正方形矩阵,最外层是第一层数字为1,要求同一层的数字相同,最内层为输入的n,详见样例
易知矩阵长度为2*n-1。
从1开始覆盖矩阵,后面的数会覆盖前面的,每次长度减2就行了。
11111 11111 11111
11111—> 12221 —> 12221
11111 12221 12321
11111 12221 12221
11111 11111 11111
#include<stdio.h>
int a[1000][1000];
void main()
{
int i,j,k=1,n;
printf("请输出n的值 :");
scanf("%d",&n);
while(k<=n)
{
for(i=k;i<=2*n-k;i++)//最外层覆盖赋值
{
for(j=k;j<=2*n-k;j++) //逐列往下赋值且值相同
a[i][j]=k;
}
k=k+1;//将值改为覆盖所需的值,并且把数组地址改变为向内一层
}
for(i=1;i<=2*n-1;i++)//输出正方形矩阵
{
for(j=1;j<=2*n-1;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}