c语言实现二维数组排序

一个4*5的数组,要求每行都进行升序排列,并求出每行的平均值?用C怎么实现啊

依次将一组中的元素进行分组判断然后按顺序打入一个相同数量元素的一维临时数组,然后先进行平均值运算后取结果再将临时数组的数据对应地放进4*5数组中,然后循环进入第二行元素,重复上述步骤。。。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-01
选择法:
#include<stdio.h>
#define N 5
#define M 4
void main()
{
int x,i,j,k,t,a[M][N];
float sum=0.0,avg[M];
//输入数组:
for(x=0;x<M;x++)
for(i=0;i<N;i++)
scanf("%d",&a[x][i]);
//数组排序:
for(x=0;x<M;x++)
{
for(i=0;i<N;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(a[x][j]>a[x][k])
k=j;
if(k!=i)
{
t=a[x][i];
a[x][i]=a[x][k];
a[x][k]=t;
}
}
}
for(x=0;x<M;x++)
{
sum=0.0;
for(i=0;i<N;i++)
{
printf("%d ",a[x][i]);
sun+=a[x][i];
}
avg[x]=sum/N;
printf("\n");
}
}本回答被提问者和网友采纳
第2个回答  2013-01-26
void sort(int num[5])
{
for(int i=0;i<5;i++) //bubble sort
{
for(int j=4;j>=i;j--)
{
if(num[j-1] < num[j]) //swap num[j-1],num[j]
{
int temp = num[j-1];
num[j-1] = num[j];
num[j] = temp;
}
}
}

int getAvg(int num[5])
{
int sum = 0;
for(int i=0;i<5;i++) sum+=num[i];
}

int main()
{
int num[4][5];
for(int i=0;i<4;i++) {sort(num[i]);printf("Avg of Row %d=%d\n",i,getAvg(num[i]);}
return 0;
}
第3个回答  2013-01-26
#include "stdio.h"

void main()
{
int a[3][3]=
{
{10,11,12},
{13,18,10},
{20,17,19}
};

int i,j,k; /*循环计数器*/
int *p[3][3]=
{
{NULL},
{NULL},
{NULL}
};
int temp;

for(i=0;i<3;++i) /*指向各个数元素*/
{
for(j=0;j<3;++j)
{
p[i][j]=a[i]+j;
}
}

for(i=0;i<3;++i) /*排序*/
{
for(j=0;j<2;++j)
{
for(k=0;k<2;++k)
{
if(*p[i][k]>*p[i][k+1])
{
temp=*p[i][k];
*p[i][k]=*p[i][k+1];
*p[i][k+1]=temp;
}
}
}
}

for(i=0;i<3;++i) /*输出*/
{
for(j=0;j<3;++j)
{
printf("%d ",*p[i][j]);
}
printf("\n");
}

getch();
}
相似回答