【二维数组+指针】【】求二维数组每行的最大值

代码中00的地方不知道填什么形式,是p[i][j],还是*(*(p+i)+j)还是其他。(两个@@1之间是要填写代码,@#1所在位置相当于空格要填写代码)
题目

img


题目源代码

#include"stdio.h"
void init_array(int *p1);
void getmax(int *p1,int s[]);

main()
{
    int b[3][4],s[3];
    int i;
    init_array(@#1);
    getmax(@#3,s);
    for(i=0;i<3;i++)
        printf("row%d:  max=%d\n",i,s[i]);    
}

void init_array(@#4)
{
    int i,j;
    for(i=0;i<3*4;i++)
        scanf("%d",@#5);
    
}

void getmax(int *p1,int s[])   
{
    int i,j,max;
    for(i=0;i<3;i++)
    {
        max=@#6    //取最大值为每行的第一个单元格的值
                   //从每行的第二列单元格到最后一个单元格逐个比较   
        for(j=1;j<4;j++)
             @@1

                @@1
        s[i]=max;    
    }    
}

我所写的(00处是要修改部分)

#include"stdio.h"
void init_array(int *p1);
void getmax(int *p1,int s[]);

main()
{
    int b[3][4],s[3];
    int i;
    init_array(b);
    getmax(b,s);
    for(i=0;i<3;i++)
        printf("row%d:  max=%d\n",i,s[i]);    
}

void init_array(int *p1)
{
    int i,j;
    for(i=0;i<3*4;i++)
        scanf("%d",(p1+i));
    
}

void getmax(int *p1,int s[])   
{
    int i,j,max;
    for(i=0;i<3;i++)
    {
        max= 00//;      
        for(j=1;j<4;j++)
             //@@1
          if(00>max)
          {
              max= 00;
          }
                //@@1
        s[i]=max;    
    }    
}

指针和下标都是可以的,但是指针的话,应该是 (s+i4+j)

#include"stdio.h"
void init_array(int *p1);
void getmax(int *p1,int s[]);
 
int main()
{
    int b[3][4],s[3];
    int i;
    init_array(b);
    getmax(s, b);
    for(i=0;i<3;i++)
        printf("row%d:  max=%d\n",i,s[i]);    
}
 
void init_array(int *p1)
{
    int i,j;
    for(i=0;i<3*4;i++)
        scanf("%d",(p1+i));    
}

void getmax(int *p1,int s[])   
{
    int i,j,max;
    for(i=0;i<3;i++)
    {
        max= s[i][0];     
        for(j=1;j<4;j++)
        {
          if(s[i][j]>max)
          {
              max= s[i][j];
          }
        *p1[i]=max;    
    }    
}

你的p1和s两个变量都是一维数组,哪里来的2个下标啊

修改如下,供参考:

#include"stdio.h"
void init_array(int* p1);
void getmax(int* p1, int s[]);
int  main()
{
    int b[3][4], s[3];
    int i;
    init_array(b[0]);//@#1
    getmax(b[0], s); //@#3
    for (i = 0; i < 3; i++)
        printf("row%d:  max=%d\n", i, s[i]);
}

void init_array(int *p1)  //@#4
{
    int i, j;
    for (i = 0; i < 3 * 4; i++)
        scanf("%d", &p1[i]);//@#5
}

void getmax(int* p1, int s[])
{
    int i, j, max;
    for (i = 0; i < 3; i++)
    {
        max = *(p1 + i * 4); //@#6  //取最大值为每行的第一个单元格的值
                                    //从每行的第二列单元格到最后一个单元格逐个比较   
        for (j = 1; j < 4; j++)
            if (*(p1 + i * 4 + j) > max)  //@@1

                max = *(p1 + i * 4 + j); //@@1
        s[i] = max;
    }
}