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