• C语言一维数组转换为二维数组


    一维转二维代码示例:

    #include <stdio.h>
    #include <stdlib.h>
    
    #define ROW 3 
    #define COL 2
    
    int main(int argc, char *argv[])
    {
        int arr1D[]  = {1,2,3,4,5,6};
        int arr2D[ROW][COL];
        int i,j;
        //一维维整型数组转换为二维整型数组
        for(i=0;i<ROW;i++)
        {
            for(j=0;j<2;j++)
            {
             arr2D[i][j]=arr1D[i*COL+j];
            }
        }
        //二维整型数组打印显示 
            for(i=0;i<ROW;i++)
        {
            for(j=0;j<COL;j++)
            {
              printf("%d  ", arr2D[i][j]);  
            }
             printf("
    ");    
        }
        system("pause");
        return 0;
    }

    这里提供一种将二维转换为一维的思路:

    转换成二维数组以后怎么才能用更简单的方式a[m][n]去表达呢?如果用那个表达式的话就太麻烦了,我要进行大量的操作,容易出问题。 


    答:这个可以用宏来实现。举个例子说,比如你定义一个大小为100的一维数组A,然后你需要别人输入m=8,n=9(很多情况别人不可能按照你的意图来刚好用m和n整除一维数组的下表最大值,也就是说那个一维数组只需要保证足够大就可以了),然后你希望得到一个8*9的二维矩阵B[8][9]。

    引用这个二维矩阵的时候,直接使用B[3][4]来引用第三行第四列的元素?
    用宏定义(以下宏定义并没有上机调试,只是提供思路)
    #define B[(x)][(y)]  A[((x*m)+(y%n)]
    解释一下:x*m,加入你需要B[3][4],那么就是对应一维数组第3*8+4%9=28个元素。

  • 相关阅读:
    11.22
    python之字典(dict)
    Version Control
    java_实现一个类只能声明一个对象
    javase-位运算符
    javase-整数变量的交换
    URI和URL的关系与区别
    http解析
    函数式语言
    MyIASM和Innodb引擎详解
  • 原文地址:https://www.cnblogs.com/shuqingstudy/p/5219279.html
Copyright © 2020-2023  润新知