试题详情:
找出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那个最后一个数无空格应该怎么样(我用的是输出前四个带空格在循环外面输出最后一位数))
希望有人可以帮我写一下做下参考,谢谢!
#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;
}