C语言程序设计:将矩阵最大值置于中心,最小值置于边界

本程序使用C语言实现将一个奇数阶矩阵的最大值置于中心,最小值置于四个边界,其余位置置于所有元素之和的功能。输入矩阵阶数和矩阵元素,输出处理后的矩阵。

输入格式:

从标准输入读取输入。第一行只有一个整数N,代表矩阵的阶数。 后续有N行输入,每行有N个以若干空格分隔的整数,代表矩阵在该行上的所有元素。

输出格式:

向标准输出打印矩阵的操作结果。输出N行,每行对应矩阵在该行上的所有元素,每一行末均输出一个回车符。每个元素占5个字符宽度(包括负号),向右对齐,不足部分补以空格。

解题思路:

  • 先读入矩阵,并分别求出最大值和最小值,以及所有元素的和。
  • 然后将最大值放在矩阵中心,最小值放在四个边界上,其余位置放所有元素的和。
  • 最后按照格式输出矩阵即可。

示例代码:

#include <stdio.h>

int main() {
    int N, i, j, max, min, sum = 0;
    int matrix[10][10];

    scanf("%d", &N);

    // 读入矩阵
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            scanf("%d", &matrix[i][j]);
            sum += matrix[i][j];
        }
    }

    // 找到最大值和最小值
    max = min = matrix[0][0];
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            if (matrix[i][j] > max) {
                max = matrix[i][j];
            }
            if (matrix[i][j] < min) {
                min = matrix[i][j];
            }
        }
    }

    // 将最大值置于中心,最小值置于边界,其余位置放元素之和
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            if (i == N / 2 && j == N / 2) {
                matrix[i][j] = max;
            } else if (i == 0 || i == N - 1 || j == 0 || j == N - 1) {
                matrix[i][j] = min;
            } else {
                matrix[i][j] = sum;
            }
        }
    }

    // 输出矩阵
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            printf("%5d", matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}
C语言程序设计:将矩阵最大值置于中心,最小值置于边界

原文地址: https://www.cveoy.top/t/topic/otO6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录