用C语言编程将二维数组中每一列右移。最右边一列移至最左边。(假设二维数组不超过10*10)
时间: 2024-05-09 22:18:50 浏览: 85
```
#include <stdio.h>
#define ROWS 10
#define COLS 10
void shift_right(int arr[][COLS], int rows, int cols);
int main(void) {
int arr[ROWS][COLS] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int rows = 3, cols = 3;
shift_right(arr, rows, cols);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
void shift_right(int arr[][COLS], int rows, int cols) {
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] = temp;
temp = arr[i+1][cols-1];
}
}
arr[0][0] = temp;
}
```
解释:
首先定义一个二维数组 `arr`,并初始化。然后定义两个常量 `ROWS` 和 `COLS`,分别表示二维数组的行数和列数。接着定义一个函数 `shift_right`,用来将二维数组中每一列右移。函数中使用了一个变量 `temp`,用来保存最右边一列的最后一个元素。
函数中使用两个嵌套的循环,分别遍历二维数组中的每个元素。第一个循环遍历每一行,第二个循环遍历每一列。在第二个循环中,将当前列的每个元素向右移动一位,最后一个元素的值保存在变量 `temp` 中。在第一个循环中,如果当前行不是最后一行,将变量 `temp` 中的值赋给下一行的第一个元素,并将最后一个元素的值保存在变量 `temp` 中。
最后,在 `main` 函数中调用 `shift_right` 函数,并遍历二维数组,将每个元素输出到控制台上。
阅读全文