编写函数:将double类型二维数组的每一行同除以该行上绝对值最大的元素(题目来源:C语言程序设计第三版)
#include<stdio.h>
#include<math.h>
void finex(double (*m)[3],int b,int c)
{
double q[b],max,v,l;
int i,j;
for(i=0;i<b;i++)/*找绝对值最大的元素*/
{
max=fabs(**(m+i));
for(j=1;j<c;j++)
{
v=fabs(*(*(m+i)+j));
if(v>=max)
max=v;
}
q[i]=max;
}
for(i=0;i<b;i++)
for(j=0;j<c;j++)
{
v=fabs(*(*(m+i)+j));
if(v==q[i])
{
l=*(*(m+i)+j);
for(j=0;j<c;j++)
*(*(m+i)+j)=*(*(m+i)+j)/l;
}
}
}
int main()
{
double a[3][3],(*p)[3];
int i,j,n=3,k=0;
p=a;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%lf",&a[i][j]);
finex(p,n,n);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%10.2lf",a[i][j]);
++k;
if(k==3)
{
printf("\n");
k=0;
}
}
return 0;
}