我有以下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,.。 。
#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;
}
您可以先在列上循环,然后打印每行的相应元素:
当在调用方中寻址数组的某个元素时,只需将i
和j
换为尺寸。