将输入的3×3数组从小到大排序后行列互换C语言
时间: 2024-12-17 22:29:26 浏览: 2
[例]输入一个*的数组将其行和列互换。-全国二级c语音
在C语言中,你可以通过两步操作来完成这个任务:首先对3x3矩阵按行进行升序排列,然后交换行与列。这里是一个简单的示例:
```c
#include <stdio.h>
// 辅助函数用于比较3x3矩阵中的元素
int compare(const void *a, const void *b) {
int row1[3], row2[3];
memcpy(row1, a, sizeof(row1)); // 复制行数据
memcpy(row2, b, sizeof(row2)); // 复制行数据
for (int i = 0; i < 3; ++i) {
if (row1[i] > row2[i]) return 1; // 如果当前行的元素大于另一个,则返回1
if (row1[i] < row2[i]) return -1; // 如果小于则返回-1
}
return 0; // 同等大小则无需交换,直接返回0
}
// 比较并交换3x3矩阵的行和列
void swap_and_sort(int matrix[3][3]) {
qsort(matrix, 3, sizeof(matrix[0]), compare); // 排序行
for (int i = 0; i < 3; ++i) { // 交换行和列
for (int j = 0; j < 3; ++j) {
matrix[j][i] = matrix[i][j]; // 存储原来行的数据到临时变量
}
for (int j = 0; j < 3; ++j) {
matrix[i][j] = matrix[j][i]; // 将临时变量赋值给列
}
}
}
// 打印矩阵
void print_matrix(int matrix[3][3]) {
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
int main() {
int matrix[3][3] = {{9, 4, 6},
{8, 1, 5},
{7, 3, 2}};
printf("原始矩阵:\n");
print_matrix(matrix);
swap_and_sort(matrix);
printf("排序并交换后的矩阵:\n");
print_matrix(matrix);
return 0;
}
```
当你运行这个程序,它会打印出原始矩阵以及排序并交换后的矩阵。
阅读全文