为什么输出后的数组不对??

//函数返回最大值,pRow和pCol分别返回最大值所在的行列下标
例如,程序的1次运行结果如下:
Input n: 3,4↙
Input 3*4 array:
1 2 3 4↙
5 6 7 8↙
9 0 -1 -2↙
max=9,row=2,col=0
数组维数输入提示信息: "Input m,n:\n"
数组维数输入格式: "%d,%d"
数组元素输入提示信息: "Input %d*%d array:\n"
数组元素输入格式::"%d"
输出格式: "max=%d,row=%d,col=%d\n"*/

#include
void InputArray(int *p, int m, int n)
{
int i,j

printf("Input %d*%d array:\n",m,n);
for(i=0;i<m;i++)
{
    for(j=0;j<n;j++)
    {
        scanf("%d",&*(p+i)+j);
    }
}
for(i=0;i<m;i++)
{
    for(j=0;j<n;j++)
    {
        printf("%d ",*(p+i)+j);
        if((j+1)%n==0) 
        printf("\n");
    }
}

}

int FindMax(int *p, int m, int n, int *pRow, int *pCol)

{

int i,j,max=p[0];

*pRow=0,*pCol=0;

for(i=0;i<m;i++)

{

    for(j=0;j<n;j++)

    {

        if(*(p+i)+j>max)
        {
            max=*(p+i)+j;
            *pRow=i;
            *pCol=j;
        }
    }
}
return max;         

}

int main()
{

int p[10][10],pRow, pCol;

int m,n;
int max;
printf("Input m,n:\n");
scanf("%d,%d",&m,&n);
InputArray(*p,m,n);
max=FindMax(*p,m,n,&pRow,&pCol);
printf("max=%d,row=%d,col=%d\n",max,pRow,pCol);

}

1个回答

1首先m和n需要输入<=10检测
2所有的寻址有问题,

for(i=0;i<m;i++)
{
    for(j=0;j<n;j++)
    {
        scanf("%d",&*(p+i)+j);   应该是 scanf("%d",p+i*n+j);
    }
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问