1.二维矩阵A和B作为输入参数,传入函数ADD,函数ADD完成A+B的运算,结果放在二维矩阵C中。SELECTMIN函数负责找出C中值最小的元素。编程实现上述函数,最终要求输出C和C中最小元素的值。不能用全局变量。↵
该程序的主要思路是:
定义函数ADD,接收二维矩阵A和B以及它们的行列数作为输入参数,将A和B相加得到结果矩阵C。
定义函数SELECTMIN,接收二维矩阵C以及它的行列数作为输入参数,遍历C中的所有元素,找到最小值并返回。
在主函数中,首先读入矩阵A和B的元素,并动态分配内存空间。
调用ADD函数将A和B相加得到结果矩阵C。
输出矩阵C的元素,并调用SELECTMIN函数找到最小元素的值并输出。
释放动态分配的内存空间,程序结束。
实现如下:
#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;
}