编写一个3×4矩阵,找出每行中最小元素并与第一列元素交换,具体要求如下,使用二维数组存放开3×4矩阵,定义并初始化该二维数组,输出原矩阵和变换后的矩阵进行比较,有必要的提示信息
时间: 2023-08-11 18:04:34 浏览: 69
好的,以下是代码实现:
```c
#include <stdio.h>
int main()
{
int arr[3][4] = {{5, 8, 4, 2}, {9, 3, 7, 1}, {6, 0, 2, 3}}; //定义并初始化二维数组
int min, col;
printf("原矩阵:\n");
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 4; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
for(int i = 0; i < 3; i++) //遍历每一行
{
min = arr[i][0]; //假设第一个元素为最小值
col = 0; //记录最小值所在的列
for(int j = 1; j < 4; j++)
{
if(arr[i][j] < min)
{
min = arr[i][j];
col = j;
}
}
if(min != arr[i][0]) //如果最小值不在第一列
{
int temp = arr[i][0];
arr[i][0] = arr[i][col];
arr[i][col] = temp;
}
}
printf("\n变换后的矩阵:\n");
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 4; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
```
运行结果如下:
```
原矩阵:
5 8 4 2
9 3 7 1
6 0 2 3
变换后的矩阵:
2 8 4 5
1 3 7 9
3 0 2 6
```
解释一下代码思路:
首先定义并初始化一个3×4的二维数组,接着输出原矩阵。然后遍历每一行,找出该行中的最小值以及最小值所在的列,如果最小值不在第一列,则将最小值与第一个元素进行交换。最后输出变换后的矩阵。
阅读全文