求C语言程序,N*N的螺旋矩阵。
如 17 16 15 14 13 求代码 详细解释
18 5 4 3 12 各位大神3Q啦~~
19 6 1 2 11
20 7 8 9 10
21 22 23 24 25
#include
#include
void main()
{
int i=0,j=0,n=0;
printf("请输入n:");
scanf("%d",&n);//矩阵阶数
int **p=NULL;//二维指针,存放矩阵n*n个元素
p= (int**)malloc(n*sizeof(int*));//先分配n个一维指针
if(NULL==p)
exit(1);
for (i = 0; i < n ; i )
{
p[i] = (int*)malloc(n*sizeof(int));//为n个一维指针分配n个整型大小的空间
if (NULL==p[i])
exit(1);
}
int flag=n;//剩下矩阵的阶数控制循环
int row=0,cloumn=0;//行列标记,初始计数为0
while(flag)
{
if (flag%2)//矩阵阶数为奇数,为左下侧行列赋值
{
for (i=0;ip[row flag-1][cloumn flag-1-i]=flag*flag-i;
for (j=1;jp[row flag-1-j][cloumn]=p[row flag-1][cloumn]-j;
cloumn ;//拆去一行一列,影响下次循环列下标,加1
}
else//为偶数,为右上侧行列赋值
{
for (i=0;ip[row][cloumn i]=flag*flag-i;
for (j=1;jp[row j][cloumn flag-1]=p[row][cloumn flag-1]-j;
row ;//拆去一行一列,影响下次循环行下标,加1
}
flag--;//剩下矩阵的阶数
}
printf("%d*%d阶矩阵为: ",n,n);
i=n;
while(i--)
printf("********");
printf(" ");
for(i=0;i{
for(j=0;jprintf("%d ",p[i][j]);
printf(" ");
}
for (i = 0; i < n; i )
free(p[i]);
free(p);
}。
答:用二位数组。具体实现根据矩阵算法,用循环或者嵌套实现。详情>>
问:请教哈!!请教哈!!新年好!我嘛,是软件工程的学生,现在学C++,但是其他的一些...
答:新年好!首先,你必须了解计算机的组成和结构以及操作系统的运作原理,这是基础 如果你想学习开发多线程、WINDOWS应用、动态链接库、WINDOWS组件的话,建议...详情>>