编写函数fun,找出m行n列数组的最大数,再在选出的m个数选出最小数,并将其返回到main函数

编写main函数,在main函数中,输入m行n列的二维数组a ,调用fun,将a做实参,传给fun函数,最后输出最小数

是指在每行找出最大,再找最小吗?
#include <stdio.h>
#define MAXM 10
#define MAXN 10
int fun(int a[MAXM][MAXN],int m,int n)
{
int t[MAXM],i,j,res;
for(i=0;i<n;i++)
{
t[i]=a[i][0];
for(j=1;j<n;j++)
{
if(t[i]<a[i][j]) t[i]=a[i][j];
}
}
res=t[0];
for(i=1;i<n;i++) if(res>t[i]) res=t[i];
return res;
}
int main()
{
int n,m,i,j,a[MAXM][MAXN];
scanf("%d%d",&m,&n);
for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]);
printf("%d\n",fun(a,m,n));
return 0;
}
有问题连我Baidu Hi,谢谢
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-11
#include<stdio.h>
#define SIZE 100

void swap(int* a,int* b)
{
int t=*a;*a=*b;*b=t;
}

int fun(int a[SIZE][SIZE],int m,int n)
{
int i,j;
//选择排序,只进行m次选择
for (i=0;i<m;i++){
//把二维数组当做一维数组看待
for (j=i+1;j<m*n;j++){
if (a[j/n%m][j%n]>a[i/n%m][i%n]){
swap(&a[j/n%m][j%n],&a[i/n%m][i%n]);
}
}
}
return a[(m-1)/n%m][(m-1)%n];
}

int main(void)
{
int a[SIZE][SIZE];
int m,n,i,j,k;
scanf("%d%d",&m,&n);
for (i=0;i<m;i++){
for (j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
k=fun(a,m,n);
printf("%d\n",k);
return 0;
}
第2个回答  2010-04-11
#include <iostream>
using namespace std;
int fun(int **a,int m,int n);
void main()
{
int m,n,i,j;
cout<<"输入m和n "<<endl;
cin>>m;
cin>>n;
int **a=new int*[m];
for(i=0;i<m;i++)
{
a[i]=new int[n];
}

cout<<"输入m行n列的值:"<<endl;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
cout<<fun(a,m,n);
cout<<endl;
}
int fun(int **a,int m,int n)
{
int i,j,temp;
temp=a[0][0];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(a[i][j]<temp)
temp=a[i][j];
return temp;
}
第3个回答  2010-04-11
#include<stdio.h>
#define m 3
#define n 3
void fun(int (*p1)[m]);
void main()
{
int a[3][3];
for (int i=0; i<m; i++)
{
for (int j=0; j<n; j++)
{
scanf("%d",&a[i][j]);
}
}
fun(a);
}
void fun(int (*p1)[m])
{
int min = p1[0][0];
for (int i=0; i<m; i++)
{
for (int j=0; j<n; j++)
{
if (min > p1[i][j])
{
min = p1[i][j];
}
}
}
printf("这个数组的最小数是%d\n",min);
}
第4个回答  2010-04-11
再在选出的m个数选出最小数。这个不是很明白啥意思,麻烦能说得详细点。。