c语言oj1012求绝对值,相关二维数组的一道OJ题

有关二维数组的一道OJ题

Input

输入数据有多组,每组的第一行是两个整数m和n,表示应聘MM的总共的行列数,然后是m行整数,每行有n个,m和n的定义见题目的描述。

Output

对于每组输入数据,输出三个整数x,y和s,分别表示选中的MM的行号、列号和分数。

note:行号和列号从一开始,如果有多个MM的分数绝对值一样,那么输出排在最前面的一个(即行号最小的那个,如果行号相同则取列号最小的那个)。

Sample Input

2 3

1 4 -3

-7 3 0

Sample Output

2 1 -7

#include 

typedef struct

{

int data;

int pn;

} array;

array a[100][100];

int m,n;

int biggest(array **p,int m,int n);

int main()

{

int i,j;

int max;

while(scanf("%d%d",&m,&n)!=EOF)

{

for(i=0;i

for(j=0;j

{

scanf("%d",&a[i][j].data);

if(a[i][j].data>=0)a[i][j].pn=1;

else {a[i][j].pn=0;a[i][j].data*=-1;}

}

max=biggest((array**)a,m,n);

for(i=0;i

{

{

for(j=0;j

if(a[i][j].data==max)

{

printf("%d ",i+1);

printf("%d ",j+1);

break;

}

}

if(a[i][j].data==max)

break;

}

a[i][j].pn?printf("%d\n",max):printf("%d\n",-max);

}

return 0;

}

int biggest(array **p,int m,int n)

{

int i,max1=**p.data,j;

for(i=0;i

for(i=0;i

if(*(p+n*i+j).data>max1)max1=*(p+n*i+j).data;

return max1;

}

主要就是指针那块的问题,二维数组专递总是出错。

各位大神求解!

------解决思路----------------------

int biggest(array **p,int m,int n); -->

int biggest(array *p,int m,int n);

2维数组传递->

biggest(&a[0][0], m ,n);

max1=(*p).data;

//或者

int biggest(array p[],int m,int n);

biggest(a[0][0], m ,n);

max1=p[0].data;

你可能感兴趣的:(c语言oj1012求绝对值)