WSS_ 2019-12-05 15:05 采纳率: 37.5%
浏览 388
已结题

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

//函数返回最大值,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条回答 默认 最新

  • addddddee 2019-12-05 16:03
    关注

    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);
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月7日
  • 已采纳回答 2月7日

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!