找出5×5整数矩阵每行绝对值最大的元素,并与同行对角线元素交换。

试题详情:

找出5×5整数矩阵每行绝对值最大的元素,并与同行对角线元素交换。
输入提示:

输入为一个5*5的方阵:每一行5个整数,以空格间隔。
输出提示:

输出为一个5*5的方阵:每一行5个整数,以空格间隔,每行最后一个数后无空格。
输入样本:

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
输出样本:

5 2 3 4 1
6 10 8 9 7
11 12 15 14 13
16 17 18 20 19
21 22 23 24 25
(我的问题是1应该怎么编写那个找出最大值并与对角线元素交换2那个最后一个数无空格应该怎么样(我用的是输出前四个带空格在循环外面输出最后一位数))
希望有人可以帮我写一下做下参考,谢谢!

基于Monster 组和GPT的调写:

img

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main() {
    int matrix[5][5];
    int max_abs[5]; // 每行绝对值最大的元素
    int i, j;

    // 输入矩阵
    printf("请输入5×5整数矩阵,每行5个整数,以空格间隔:\n");
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 5; j++) {
            scanf("%d", &matrix[i][j]);
        }
    }

    // 找出每行绝对值最大的元素,并与对角线元素交换
    for (i = 0; i < 5; i++) {
        int max_val = abs(matrix[i][0]);
        int max_index = 0;
        for (j = 1; j < 5; j++) {
            if (abs(matrix[i][j]) > max_val) {
                max_val = abs(matrix[i][j]);
                max_index = j;
            }
        }
        max_abs[i] = matrix[i][max_index];
        matrix[i][max_index] = matrix[i][i];
        matrix[i][i] = max_abs[i];
    }

    // 输出矩阵
    printf("输出新的5×5整数矩阵,每行5个整数,每行最后一个数后无空格:\n");
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 4; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("%d\n", matrix[i][4]); // 输出每行最后一个数
    }

    system("pause");
    return 0;
}