想要学习一下 请教各位C语言佼佼者

  1.二维矩阵A和B作为输入参数,传入函数ADD,函数ADD完成A+B的运算,结果放在二维矩阵C中。SELECTMIN函数负责找出C中值最小的元素。编程实现上述函数,最终要求输出C和C中最小元素的值。不能用全局变量。↵   

该程序的主要思路是:

  1. 定义函数ADD,接收二维矩阵A和B以及它们的行列数作为输入参数,将A和B相加得到结果矩阵C。

  2. 定义函数SELECTMIN,接收二维矩阵C以及它的行列数作为输入参数,遍历C中的所有元素,找到最小值并返回。

  3. 在主函数中,首先读入矩阵A和B的元素,并动态分配内存空间。

  4. 调用ADD函数将A和B相加得到结果矩阵C。

  5. 输出矩阵C的元素,并调用SELECTMIN函数找到最小元素的值并输出。

  6. 释放动态分配的内存空间,程序结束。
    实现如下:

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

void ADD(int **A, int **B, int **C, int row, int col)
{
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            C[i][j] = A[i][j] + B[i][j];
        }
    }
}

int SELECTMIN(int **C, int row, int col)
{
    int min = C[0][0];
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            if (C[i][j] < min) {
                min = C[i][j];
            }
        }
    }
    return min;
}

int main()
{
    int row, col;
    printf("请输入矩阵的行数和列数:");
    scanf("%d%d", &row, &col);

    int **A = (int **)malloc(row * sizeof(int *));
    int **B = (int **)malloc(row * sizeof(int *));
    int **C = (int **)malloc(row * sizeof(int *));
    for (int i = 0; i < row; i++) {
        A[i] = (int *)malloc(col * sizeof(int));
        B[i] = (int *)malloc(col * sizeof(int));
        C[i] = (int *)malloc(col * sizeof(int));
    }

    printf("请输入矩阵A的元素:\n");
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            scanf("%d", &A[i][j]);
        }
    }

    printf("请输入矩阵B的元素:\n");
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            scanf("%d", &B[i][j]);
        }
    }

    ADD(A, B, C, row, col);

    printf("矩阵C的元素为:\n");
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            printf("%d ", C[i][j]);
        }
        printf("\n");
    }

    int min = SELECTMIN(C, row, col);
    printf("矩阵C中最小元素的值为:%d\n", min);

    for (int i = 0; i < row; i++) {
        free(A[i]);
        free(B[i]);
        free(C[i]);
    }
    free(A);
    free(B);
    free(C);

    return 0;
}