zoukankan      html  css  js  c++  java
  • 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个元素。

  • 相关阅读:
    模板实参演绎
    模板实例化
    模板中的名称
    友元函数在类中的声明在外围是不可见的
    C++ 宽字符(wchar_t)与窄字符(char)的转换
    ImageButton如何让图片按比例缩放不被拉伸
    C++模板实例化(1)
    android开发之GenyMotion与intelliJ的配置
    jacoco报告表头注释
    Spring源码工具类之StringUtils
  • 原文地址:https://www.cnblogs.com/shuqingstudy/p/5219279.html
Copyright © 2011-2022 走看看