c语言编程将二维数组每一列右移。最右边一列移至最左边
时间: 2023-09-08 14:14:55 浏览: 145
好的,可以使用以下代码实现:
```c
#include <stdio.h>
#define ROWS 3
#define COLS 4
void rightShift(int arr[][COLS], int rows) {
int temp = arr[0][COLS - 1];
for (int i = 0; i < rows; i++) {
for (int j = COLS - 1; j > 0; j--) {
arr[i][j] = arr[i][j - 1];
}
if (i < rows - 1) {
arr[i + 1][0] = arr[i][COLS - 1];
}
}
arr[0][0] = temp;
}
int main() {
int arr[ROWS][COLS] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}};
printf("Original array:\n");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
rightShift(arr, ROWS);
printf("\nArray after right shift:\n");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
```
这里使用了一个 `rightShift` 函数来实现右移,具体的实现过程如下:
1. 首先保存最右边一列的最后一个元素 `temp`。
2. 从最右边一列开始,将每一列的元素右移一位。
3. 对于第一列到倒数第二列,将上一行的最后一个元素赋给下一行的第一个元素。
4. 将最右边一列的最后一个元素赋值给第一列的第一个元素。
最后在 `main` 函数中调用 `rightShift` 函数即可。
阅读全文