c语言 3x4x5的三维数组旋转成3x5x4,使用指针偏移实现,输入指针和输出指针
时间: 2023-11-02 12:00:32 浏览: 53
以下是实现代码:
```c
#include <stdio.h>
void rotate(int *input, int *output) {
for(int i=0; i<3; i++) {
for(int j=0; j<4; j++) {
for(int k=0; k<5; k++) {
*(output + k*3*4 + j*3 + i) = *(input + i*4*5 + j*5 + k);
}
}
}
}
int main() {
int input[3][4][5] = {
{{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}},
{{21,22,23,24,25},{26,27,28,29,30},{31,32,33,34,35},{36,37,38,39,40}},
{{41,42,43,44,45},{46,47,48,49,50},{51,52,53,54,55},{56,57,58,59,60}}
};
int output[3][5][4];
rotate(&input[0][0][0], &output[0][0][0]);
for(int i=0; i<3; i++) {
printf("第%d层:\n", i+1);
for(int j=0; j<5; j++) {
for(int k=0; k<4; k++) {
printf("%d ", output[i][j][k]);
}
printf("\n");
}
}
return 0;
}
```
解释:
1. 输入指针为 `int *input`,即三维数组的首地址。
2. 输出指针为 `int *output`,即转换后三维数组的首地址。
3. `rotate` 函数中使用三重循环,将输入数组中的元素逐个复制到输出数组中。
4. 在 `main()` 函数中,定义了输入数组和输出数组,并将它们的首地址传递给 `rotate` 函数。
5. 最后输出转换后的数组。
阅读全文