题目写得挺有意思的,不知道是哪个作者这么搞笑(无聊)。。。。
说一下思路:
之前我的思路就是建立一个二维数组来做,然后把数据读取进去,再进行大小比较,最后输出。
但在别人的博客里看到非常清爽的代码(思路清晰啊,代码简单啊之类之类的),不需要建立二维数组
代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
int m,n;
while (scanf("%d %d",&m,&n)!=EOF)
{
int i=1,j=1,max=0,a,hang=0,lei=0;
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
scanf("%d",&a);
if(fabs(a)>fabs(max))
{
max=a;
hang=i;
lei=j;
}
}
}
printf("%d %d %d\n",hang,lei,max);
}
return 0;
}
可以借鉴的地方在于:
1-遇到绝对值大小进行比较的题目,可以直接用fabs函数直接进行比较,记得头文件写上include<math.h>。
2-建立行列式,除了建立多维数组之外,也可以通过循环语句来建立。
如果用建立二维数组的方法,可以选择建立两个数组,其中一个用来放输入数据,另外一个用来放绝对值,进行大小比较,最后输出原来的行列号,以及原来的数字
当然也可以选择不用两个数组,直接选择一个绝对值的函数,代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
int a[100][100], s[100][100],m,n;
while(scanf("%d%d",&m,&n)!=EOF)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
if(a[i][j]<0)
s[i][j]=-a[i][j];
if(a[i][j]>0)
s[i][j]=a[i][j];
}
}
int max=s[0][0],c,d;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(s[i][j]>max)
{
max=s[i][j];
c=i;
d=j;
}
}
}
printf("%d %d %d\n",c+1,d+1,a[c][d]);
}
return 0;
}