一个关于C++中的二维数组和以指针做变量函数的疑问

来源:百度知道 编辑:UC知道 时间:2024/06/14 18:27:03
我编了一个程序,求一个二维数组的每行最大值和每列最小值,编的程序如下:
#include <iostream>
using namespace std;
int f(int *x,int n);
int g(int *y,int m,int n);
int main()
{
int i,j,n,m,c,d;
int a[99][99];
cout<<"请输入行数m和列数n:"<<endl;
cin>>m>>n;
cout<<"请输入一个"<<m<<"行和"<<n<<"列的数组:"<<endl;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
c=f(&a[i][0],n);
d=g(&a[0][j],m,n);
cout<<a[i][j]<<" "<<c<<" "<<d<<endl;
}
return 0;
}

int f(int *x,int n)
{
int i,max=*x;
for(i=0;i<n;i++)
if(*(x+i)>max)max=*(x+i);
return max;
}

int g(int *y,int m,int n)
{
int j,min=*y;
for(j=0;

觉得你的程序问题比较大

二维数组是一个以指针为元素的数组,不能简单的认为是顺序存储,你的f和g两个函数弄不好就会越界。

另外
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
c=f(&a[i][0],n);
d=g(&a[0][j],n);
cout<<a[i][j]<<" "<<c<<" "<<d<<endl;
}
这个循环体感觉比较怪,能说一下你的思想么?

那个循环体是不是
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
c=f(&a[i][0],n);
d=g(&a[0][j],n);
cout<<a[i][j]<<" "<<c<<" "<<d<<endl;
}
}
的意思啊`?