3、编写一程序,把M×N矩阵a的元素逐列按降序排列。假设M、N不超过10。分别编写求一维数组元素值最大和元素值最小的函数,主函数中初始化一个二维数组a[10][10],调用定义的两函数输出每行、每列的最大值和最小值。
程序1:
#include"stdio.h"
int max(int a[])
{
int j,k;
k=j=0;
for(;j<9;j++)
if(a[k]<a[j+1])
k=j+1;
return(a[k]);
}
int min(int a[])
{
int j,k;
k=j=0;
for(;j<9;j++)
if(a[k]>a[j+1])
k=j+1;
return(a[k]);
}
void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
main()
{
int a[10][10],i,j,k,ml,nl,mr,nr;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
scanf("%d",&a[i][j]);
for(k=0;k<10;k++) /*行循环*/
{
ml=max(a[k]);
nl=min(a[k]);
printf("line%dmax=%d,line%dmin=%d/n",k+1,ml,k+1,nl);
}
for(i=0;i<10;i++)
for(j=i;j<10;j++)
swap(&a[i][j],&a[j][i]); /*行列变换*/
for(k=0;k<10;k++) /*相当于列循环*/
{
mr=max(a[k]);
nr=min(a[k]);
printf("row%dmax=%d,row%dmin=%d/n",k+1,mr,k+1,nr);
}
}
注意一维数组与二维数组的不同,地址属性的区别。