矩阵求每行之和后,将和值最大的行与第一行对调
#include <stdio.h>#include <stdlib.h>
#define M 5
#define N 4
void getdata(int a[M][N])
{int i,j,x;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{ x=rand()%100;
a[i][j]=x;}
}
void lineave(int s[M][N],float *a)
{int i,j; float ave;
for(i=0;i<M;i++)
{ave=0.0;
for(j=0;j<N;j++) ave=ave+s[i][j];
a[i]=ave/N;
} }
void max(int a[M][N],float ave[M])
{ int i,j,k;
float t,p;
for(i=0;i<M;i++)
{if(ave[i]<ave[i+1])k=i+1;}
for(j=0;j<N;j++)
{t=a[0][j];a[0][j]=a[k][j];a[k][j]=t;}
p=ave[i+1];ave[i+1]=ave[k];ave[k]=p;
}
void arrout(int a[M][N],float ave[M])
{int i,j;
for(i=0;i<M;i++)
{ for(j=0;j<N;j++)
printf("%5d",a[i][j]);
printf(":%6.2f\n",ave[i]);
}
printf("\n");
}
main( )
{int r[M][N];
float ave[M];
getdata(r);
lineave(r,ave);
arrout(r,ave);
max(r,ave);
arrout(r,ave);
system("PAUSE");
return 0;
}
我老人家折腾半天之后,矩阵进行了求和、对调的工作,并把自己打印了出来,包括那应该对调的两行也对调了,可是和值不肯跟着对调。。。
自己瞪着看半天,没看出毛病来,哪位高手帮帮忙看。。。