随机生成一个5行6列的二维数组,将每一行的所有元素都除以该行绝对值最大的元素,然后输出该数组。

这是我写的程序,不知道哪里错了,麻烦改改。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
void main()
{ int a[5][6],i,j,s,k,n,b[5][6],c[5],m,iol,jol;
float d[5][6];
srand(time(0));
for(i=0;i<5;i++)
{ for(j=0;j<6;j++)
{ s=rand();
k=pow(-1,s);
n=rand()%90+0;
a[i][j]=k*n ;
}
}
for(i=0;i<5;i++)
{ for(j=0;j<6;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("变形后\n");
for(i=0;i<5;i++)
{ for(j=0;j<6;j++)
b[i][j]=abs(a[i][j]);
}
for(i=0;i<5;i++)
m=b[i][0];
{for(j=0;j<6;j++)
if(b[i][j]>m)
{ m=b[i][j];
iol=i;
jol=j;
}
d[i][j]=a[i][j]/a[iol][jol];
}

for(i=0;i<5;i++)
{ for(j=0;j<6;j++)
printf("%.1f ",d[i][j]);
printf("\n");
}

}

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#include<math.h>

void main()

{  int a[5][6],i,j,s,k,n,b[5][6],c[5],m,iol,jol;

   float d[5][6];

   srand(time(0));

   for(i=0;i<5;i++)

   {   for(j=0;j<6;j++)

      {  s=rand();

         k=pow(-1,s);

         n=rand()%90+0;

         a[i][j]=k*n ;

      }

   }

 for(i=0;i<5;i++)

 {  for(j=0;j<6;j++)

        printf("%6d",a[i][j]);

    printf("\n");

 }

    printf("变形后\n");

    for(i=0;i<5;i++)

      { for(j=0;j<6;j++)

        b[i][j]=abs(a[i][j]);

      }

    for(i=0;i<5;i++)

{ iol=jol=0;

       m=b[i][0];

       for(j=0;j<6;j++)

         if(b[i][j]>m)

           { m=b[i][j];

             iol=i;

             jol=j;

           }

         }

for(i=0;i<5;i++)

       {  for(j=0;j<6;j++)

{d[i][j]=(float)a[i][j]/a[iol][jol];

printf("%6.1f",d[i][j]);

}

          printf("\n");

       }

}

追问

感觉这样做不对啊,你看结果里第二行,第三个都有-1.1了。。。。
感觉我这样写它整个二维数组除以的都是同一个数,而不是每行的最大数,而且感觉这同一个数就是最后一行最大的那个。

追答

这回改好了:

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#include<math.h>

void main()

{  int a[5][6],i,j,s,k,n,b[5][6],c[5],m,iol,jol;

   float d[5][6];

   srand(time(0));

   for(i=0;i<5;i++)

   {   for(j=0;j<6;j++)

      {  s=rand();

         k=pow(-1,s);

         n=rand()%90+0;

         a[i][j]=k*n ;

      }

   }

 for(i=0;i<5;i++)

 {  for(j=0;j<6;j++)

        printf("%6d",a[i][j]);

    printf("\n");

 }

    printf("变形后\n");

    for(i=0;i<5;i++)

      { for(j=0;j<6;j++)

        b[i][j]=abs(a[i][j]);

      }

    for(i=0;i<5;i++)

{ iol=i; jol=0;

       m=b[i][0];

       for(j=0;j<6;j++)

         if(b[i][j]>m)

           { m=b[i][j];

             jol=j;

           }

       for(j=0;j<6;j++)

d[i][j]=(float)a[i][j]/m;

}

for(i=0;i<5;i++)

       {  for(j=0;j<6;j++)

printf("%6.1f",d[i][j]);

          printf("\n");

       }

}

温馨提示:答案为网友推荐,仅供参考
相似回答