矩阵每行最小值提取代码报错:参数数量及类型不兼容问题排查
问题分析与修复
错误根源
你遇到的两个错误都出在search_min函数的调用环节:
- 参数数量不足:
search_min定义时明确需要两个参数(行指针和行长度),但你调用时只传了一个参数。 - 实参类型不兼容:你传入的
z[i][j]是矩阵里单个int类型的元素,而函数第一个参数要求的是int*(指向整行的指针),类型完全不匹配。 - 额外逻辑错误:你在每行的循环里嵌套了
j的循环,这会导致每行重复调用search_minm次,重复输出同一个最小值,完全没必要。
修复后的完整代码
#include <iostream> using namespace std; int search_min(int* arr, int size) { int min = arr[0]; for (size_t i = 1; i < size; ++i) { if (arr[i] < min) { min = arr[i]; } } return min; } int main() { setlocale(0, "rus"); int n, m, z[100][100]; cout << " Enter the size of the matrix: \n"; cin >> n >> m; cout << " Fill in the matrix: \n"; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> z[i][j]; } } cout << "The introduced matrix:" << endl; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cout << z[i][j] << " "; } cout << endl; } cout << "The minimum element of each row of the matrix:" << endl; // 修复:去掉多余的内层循环,每行仅调用一次search_min for (int i = 0; i < n; i++) { // 传入第i行的指针z[i],以及行长度m cout << search_min(z[i], m) << endl; } cin.get(); return 0; }
核心修改说明
- 补全
search_min的调用参数:传入z[i](二维数组的行名可隐式转换为指向该行首元素的int*指针)和行长度m,满足函数的参数要求。 - 删除多余的内层
j循环:每行只需要调用一次search_min即可获取最小值,无需循环m次重复调用。
内容的提问来源于stack exchange,提问作者Antewww
相关产品推荐
相关产品推荐

