4.通过完成函数完成以下程序代码,该程序输入m、n,再输入只有一个最小值的m行n列的矩阵,输出矩阵中最小值所在列号(列号从1开始),输入输出示意如下:
3 4
6 2 3 4
5 1 17 8
9 5 5 12
2
【注意】:以下程序代码只允许添加不允许修改。
int* read(int* m, int* n){
}
//输出最小数在矩阵中列号
void print(int* a, int m, int n){
}
int main(){
int m, n;
int* a;
a = read(&m, &n);
print(a, m, n);
free(a);
}
供参考:
#include <stdio.h>
#include <stdlib.h>
int* read(int* m, int* n) {
int i, j;
scanf("%d%d", m, n);
int* a = (int*)malloc(sizeof(int) * (*m) * (*n));
for (i = 0; i < (*m); i++)
for (j = 0; j < (*n); j++)
scanf("%d", a + i * (*n) + j);
return a;
}
//输出最小数在矩阵中列号
void print(int* a, int m, int n) {
int i, j, min, k;
min = *a; k = 0;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++)
if (min > *(a + i * n + j)) {
min = *(a + i * n + j);
k = j;
}
}
printf("%d", k + 1);
}
int main() {
int m, n;
int* a;
a = read(&m, &n);
print(a, m, n);
free(a);
}