编写一程序,把M×N矩阵a的元素逐列按降序排列。假设M、N不超过10。分别编写求一维数组元素值最大

编写一程序,把M×N矩阵a的元素逐列按降序排列。假设M、N不超过10。分别编写求一维数组元素值最大和元素值最小的函数,主函数中初始化一个二维数组a[10][10],调用定义的两函数输出每行、每列的最大值和最小值。
求大神

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

const int M = 10;
const int N = 10;

void sortColumnDecrease(int a[][N],int m,int n) {
int i,j,k,s,t;
for(i = 0; i < n; ++i) {
for(j = 0; j < m - 1; ++j) {
s = j;
for(k = j + 1; k < m; ++k) {
if(a[s][i] < a[k][i])
s = k;
}
if(s != j) {
t = a[s][i];
a[s][i] = a[j][i];
a[j][i] = t;
}
}
}
}

int max(int a[],int n) {
int i,maxn = a[0];
for(i = 1; i < n; ++i)
if(maxn < a[i]) maxn = a[i];
return maxn;
}

int min(int a[],int n) {
int i,minn = a[0];
for(i = 1; i < n; ++i)
if(minn > a[i]) minn = a[i];
return minn;
}

void show(int a[][M],int m,int n) {
int i,j;
for(i = 0; i < m; ++i) {
for(j = 0; j < n; ++j)
printf("%4d",a[i][j]);
printf("\n");
}
printf("\n");
}


int main(void) {
int i,j,a[M][N];
srand((unsigned)time(NULL));
for(i = 0; i < M; ++i)
for(j = 0; j < N; ++j)
a[i][j] = rand()%100;
printf("排序前:\n");
show(a,M,N);
for(i = 0; i < M; ++i)
printf("第%2d行的最大值为:%2d,最小值为:%2d\n",
i + 1,max(a[i],N),min(a[i],N));
printf("排序后:\n");
sortColumnDecrease(a,M,N);
show(a,M,N);
for(i = 0; i < M; ++i)
printf("第%2d行的最大值为:%2d,最小值为:%2d\n",
i + 1,max(a[i],N),min(a[i],N));
return 0;
}

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