如何在C中的2D数组中的列中向下打印值?

问题描述 投票:0回答:3

我有以下2D数组:

int censusData[4][3] = {{87290, 77787, 55632},
                    {83020, 78373, 62314},
                    {95588, 87934, 705421},
                    {112456, 97657, 809767}};

我想按列打印值,因为在循环运行3次之后,它将打印:

87290 83020 95588 112456

77787 78373 87934 97657

55632 62314 705421 809767

注意它是每个子数组中的第一个元素,然后是第二个,然后是第三个..etc

使用此行进行逐行处理时,我可以轻松访问每个子数组:]

int* averageCityIncome(int size, int size_2, int arr[][size_2]){
    int* t_arr = malloc(4 * sizeof(int));
    for (int i = 0; i < size; i++){
        int avg = 0;
        for (int j = 0; j < size_2; j++){
            avg += arr[i][j];
        }
        avg /= size_2;
        t_arr[i] = avg;
    }

    return t_arr;
}

但是现在我正在尝试按上述方式逐列阅读,到目前为止,我已经有了这个:

int* averageIncome(int size, int size_2, int arr[][size_2]){
    int* t_arr = malloc(4 * sizeof(int));
    for (int i = 0; i < size_2; i++){
        for (int j = 0; j < size; j++){
            printf("%d\n", arr[i][j]);
        }
        printf("-----\n");
    }

    return t_arr;
}

但是它似乎没有用。我对C还是很陌生,并且仍然很难将我的思想围绕在2D数组上。任何帮助将不胜感激。

我有以下2D数组:int censusData [4] [3] = {{87290,77787,55632},{83020,78373,62314},{95588,87934,705421},{112456,97657,.。 。

c arrays multidimensional-array
3个回答
0
投票
#include <stdio.h>

int censusData[4][3] = {{87290, 77787, 55632},
                    {83020, 78373, 62314},
                    {95588, 87934, 705421},
                    {112456, 97657, 809767}};

int main() {

    int* t_arr = malloc(3 * sizeof(int));
    for(int i=0;i<3;i++){
        int avg = 0;
        for(int j=0;j<4;j++){
            //Keep the I fixed here now J is varying and its position of column
            //So you are reading all column values for ith row.
            avg+=censusData[j][i];
        }
        avg/=4;
        t_arr[i] = avg;
    }


    for(int i=0;i<3;i++){
        printf("%d,",t_arr[i]);
    }
    return 0;
}

0
投票

您可以先在列上循环,然后打印每行的相应元素:


0
投票

当在调用方中寻址数组的某个元素时,只需将ij换为尺寸。

© www.soinside.com 2019 - 2024. All rights reserved.