爱问知识人 爱问教育 医院库

求C语言程序,N*N的螺旋矩阵。

首页

求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

提交回答

全部答案

    2018-04-25 14:41:16
  •   #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);
    }。
      

    樱***

    2018-04-25 14:41:16

类似问题

换一换
  • C/C++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 171-190
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):