用冒泡排序法将一个n行m列的二维数组的每一行按从大到小的顺序排序.要求二维数组的输入排序和输出分别用一

要求二维数组的输入排序和输出分别用一个函数实现.组的行数和列数在主函数中实现

#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");

 }

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-04
#include<iostream>
const int N=50;
void ccin(int *a[N]);
void range(int *a[N]);
void ccout(int *a[N]);
using namespace std;
int m,n;
int main()
{
int *b[N],a[N][N],i;
for(i=0;i<N;i++)
b[i]=a[i];
cout<<"请输入行数"<<endl;
cin>>m;
cout<<"请输入列数"<<endl;
cin>>n;
ccin(b);
range(b);
ccout(b);
}
void ccin(int *a[N])
{
int i,j;
for(i=0;i<m;i++)
{
cout<<"请输入第"<<i+1<<"行";
for(j=0;j<n;j++)
cin>>*(*(a+i)+j);
}
}
void range(int *b[N])
{
int i,j,k,l;
for(i=0;i<m;i++)
{
for(l=0;l<n-1;l++)
for(j=0;j<n-1;j++)
if(*(*(b+i)+j)<*(*(b+i)+j+1))
{
k=*(*(b+i)+j);
*(*(b+i)+j)=*(*(b+i)+j+1);
*(*(b+i)+j+1)=k;
}
}
}
void ccout(int *b[N])
{
int i,j;
for(i=0;i<m;i++)
{
cout<<"第"<<i+1<<"行";
for(j=0;j<n;j++)
cout<<*(*(b+i)+j);
cout<<endl;
}
}
一共三个函数
相似回答