C语言题目:排序二维数组 题目描述:编写程序对输入的三行三列的二维矩阵进行递增排序。 输入:三行三列数据元素值 输出:递增顺序输出三行三列矩阵,
时间: 2024-12-17 12:29:01 浏览: 4
在C语言中,你可以使用嵌套循环结合冒泡排序算法来解决这个问题。由于需要按行排序,所以可以先对每一行进行排序,然后再对整个矩阵按照列进行排序。这是一个基本的解决方案:
```c
#include <stdio.h>
void sort_matrix(int matrix[3][3], int size) {
// 对每一行进行排序
for (int i = 0; i < 3; i++) {
for (int j = 0; j < size - 1; j++) { // 遍历到当前行最后一个元素
if (matrix[i][j] > matrix[i][j + 1]) {
// 交换相邻两个元素
int temp = matrix[i][j];
matrix[i][j] = matrix[i][j + 1];
matrix[i][j + 1] = temp;
}
}
}
// 再对整个矩阵按照列进行排序
for (int j = 0; j < size; j++) {
for (int i = 0; i < 3; i++) {
for (int k = i + 1; k < 3; k++) { // 遍历同一列的不同行
if (matrix[k][j] < matrix[i][j]) {
int temp = matrix[k][j];
matrix[k][j] = matrix[i][j];
matrix[i][j] = temp;
}
}
}
}
}
int main() {
int matrix[3][3] = {
{5, 2, 8},
{1, 9, 4},
{7, 6, 3}
};
printf("原始矩阵:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
sort_matrix(matrix, 3);
printf("排序后的矩阵:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
阅读全文