C语言编写一个能够实现循环右移的二维数组
时间: 2024-12-29 18:28:21 浏览: 23
在C语言中,二维数组(也称为矩阵)的右移操作通常需要逐行处理。这里是一个简单的示例,展示如何将一个二维整型数组向右移动一位:
```c
#include <stdio.h>
#define ROWS 4
#define COLS 5
void right_shift(int arr[ROWS][COLS], int shift_amount) {
int temp;
for (int i = 0; i < ROWS; i++) {
// 将当前行的最后一列元素存入临时变量
temp = arr[i][COLS - 1];
// 向右移动其他元素到空出的位置
for (int j = COLS - 1; j > 0; j--) {
arr[i][j] = arr[i][j - 1];
}
// 将临时变量放回第一列
arr[i][0] = temp;
}
}
// 示例数组
int main() {
int matrix[ROWS][COLS] = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20}
};
int shift = 1;
printf("Original Matrix:\n");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
right_shift(matrix, shift);
printf("\nShifted Matrix after %d shifts:\n", shift);
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
在这个例子中,`right_shift`函数接收一个二维数组和一个位移量。它通过两层循环分别处理每一行,将每一行的最后一个元素移到第一个位置,其余元素依次向右移动。
阅读全文