C语言设计函数:接受一个二维数组,用指针方式返回数组的最大值,最小值

HELP!!!!!!! 成心求助!

#include <stdio.h>

void get_val(int array[][200], int m, int n, int *max, int *min)
{
int i, j;

for(*max = array[0][0], *min= array[0][0], j = 0; j < m; j++){

for(i = 0; i < n; i++){

if(*max < array[j][i]){
*max = array[j][i];
}

if(*min > array[j][i]){
*min = array[j][i];
}
}
}
}

int main(int argc, char *argv[])
{
int array_test[100][200];
int j, i, max, min;

for(j = 0; j < 100; j++){
for(i = 0; i < 200; i++){

array_test[j][i] = i*j;
}
}

get_val(array_test, 100, 200, &max, &min);

printf("max:%d,min:%d\n",max,min);

}

编译通过并通过测试,另外还可以通过指针传递:
void get_val(int *array, int m, int n, int *max, int *min)
{
int i, j;

for(*max = *array, *min= *array, j = 0; j < m; j++){

for(i = 0; i < n; i++){

if(*max < *(array+j*n+i)){
*max = *(array+j*n+i);
}

if(*min > *(array+j*n+i)){
*min = *(array+j*n+i);
}
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-06-09
给你个思想
void maxandmin(int arr[][],int m,int n,int *max int *min){
int i,j,maxval,minval;
max = min = &arr[0][0];
for(int i = 0;i < m;i++){
for(int j = 0;j < n;j++){
if(arr[i][j] > *max) max = &arr[i][j];
if(arr[i][j] < *min) min = &arr[i][j];
}
}
}
第2个回答  2009-06-09
看了别人的才发现我错了,用的太少了,再改一下

void xxx(int aaa[][],int * & max,int * & min)
{
//找出最大值的i,j
max=aaa[i]+j;
//找出最小值的i,j
min=aaa[i]+j;
}
相似回答