打印特殊矩阵
打印特殊矩阵,具体要求如下:打印9*9阶的方阵,要求最外圈的均是1,次外圈的均是2,照此规律方阵,要求从键盘输入任意一个数,输出题中要求的特殊方阵
如果是5,则特殊方阵的形式为:1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 1
1 2 3 3 3 3 3 2 1
1 2 3 4 4 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 4 4 3 2 1
1 2 3 3 3 3 3 2 1
1 2 2 2 2 2 2 2 1
1 1 1 1 1 1 1 1 1
#include<stdio.h>
int main(void)
{
int n,**a,i,j;
printf("please input a integer number(n>0):");
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=i;j<=2*n-i;j++)
{
*(*(a+i)+j)=i;//a[i][j]=i;
*(*(a+2*n-i)+j)=i;//a[2*n-i][j]=i;
*(*(a+j)+i)=i;//a[j][i]=i;
*(*(a+2*n-j)+i)=i;//a[2*n-j][i]=i;
}
for(i=1;i<=2*n-1;i++)
{
for(j=1;j<=2*n-1;j++)
printf("%d ",*(*(a+i)+j));
putchar('\n');
}
}
:\Users\Administrator\Desktop\8.c(11) : warning C4700: local variable 'a' used without having been initialized
输出结果不对,不知道哪里出错,请各位不吝赐教
#include<stdio.h>
int main(void)
{
int n,a[2*n-1][2*n-1],i,j;
printf("please input a integer number(n>0):");
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=i;j<=2*n-i;j++)
{
a[i][j]=i;
a[2*n-i][j]=i;
a[j][i]=i;
a[2*n-j][i]=i;
}
for(i=1;i<=2*n-1;i++)
{
for(j=1;j<=2*n-1;j++)
printf("%d ",a[i][j]);
putchar('\n');
}
}
则会出现a数组大小未知的错误,那么到底该如何写才能使a数组的大小已知且输入任意的数n呢