输入一个二维数组(5*5),每一列按从小到大排列输出,每一行按从大到小排列输出.求程序。

老师留下的作业,不会写噻。

第1个回答  2011-11-08
#include<stdio.h>
main()
{ int i,j;
int temp,k;
int a[5][5];
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
for(i=0;i<5;i++)
{ for(j=0;j<5;j++)
printf("%5d",a[i][j]);
printf("\n");
}
printf("\n");
for(k=0;k<4;k++)
{ for(j=0;j<5;j++)
for(i=0;i<4-k;i++)
if(a[j][i]<a[j][i+1])
{
temp=a[j][i];
a[j][i]=a[j][i+1];
a[j][i+1]=temp;
}
for(i=0;i<5;i++)
for(j=0;j<4-k;j++)
if(a[j][i]>a[j+1][i])
{
temp=a[j][i];
a[j][i]=a[j+1][i];
a[j+1][i]=temp;
}
}
for(i=0;i<5;i++)
{ for(j=0;j<5;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}

兄弟你看一下是不是的本回答被提问者采纳
第2个回答  2011-11-22
#include<stdio.h>
#define N 30
#define M 30
void main()
{ int a[N][M];
int n,m,x,i,j,t;
printf("\n输入行数n:");
scanf("%d",&n);
printf("\n输入列数m:");
scanf("%d",&m);
for(i=0;i<n;i++)
{
printf("\n第%d行\n",i+1);
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
printf("\n");
}
for(i=0;i<n;i++)
{ for(j=0;j<m;j++)
printf("%5d",a[i][j]);
printf("\n");
}
for(i=0;i<n;i++)
{ for(x=0;x<m;x++)
for(j=0;j<m-1-x;j++)
if(a[i][j]<a[i][j+1])
{ t=a[i][j];
a[i][j]=a[i][j+1];
a[i][j+1]=t;
}
}
printf("输出排序之后的数:\n");

for(i=0;i<n;i++)
{ for(j=0;j<m;j++)
printf("%5d",a[i][j]);
printf("\n");
}

getch();

}本回答被网友采纳
相似回答