在c中将4*4 int数组转换为2*2 int数组

标签 c arrays

我有一个 4*4 数组-

int arr[4][4] = {{1,2,3,4},
                 {5,6,7,8},
                 {9,10,11,12},
                 {13,14,15,16}};

想要将其转换为 2*2 数组 -

int final[2][2];

应该有

final[0][0] = (arr[0][0]+arr[0][1]+arr[1][0]+arr[1][1])/4;
final[0][1] = (arr[0][2]+arr[0][3]+arr[1][2]+arr[1][3])/4;

是否可以使用查找表从数组中提取值。

提前致谢

最佳答案

正如已经很好地评论的那样,您基本上已经有了这个,但只是为了完整性:

for ( i=0; i<2; i++ )
  for ( j=0; j<2; j++ )
    final[i][j] = (arr[i*2][j*2]+arr[i*2][j*2+1]+arr[i*2+1][j*2]+arr[i*2+1][j*2+1])/4;

关于在c中将4*4 int数组转换为2*2 int数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21286856/

相关文章:

c++ - 将 vector 转换为数组

char 在 c 中没有按预期工作

python - Cython - 替换 def __init__() 方法,因为 Cython 的 Python 函数和方法无法处理值为 0 的无符号字符数组

c - 在 C 中动态调整数组大小时 Valgrind 错误

C编程: How to create a parent directory and insert files manually?

php - 如何优化这个数组循环

c - 在 C 中仅初始化二维数组的一行?

c - "kill -15"触发 sigaction 代码但不终止我的 C 程序

copy_from_user 给出空指针

c - 打印分配给函数指针的函数名称