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

2025-02-28 04:01:56
推荐回答(2个)
回答1:

#include

#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

   {     

   printf("\n第%d行\n",i+1);

     for(j=0;j

   scanf("%d",&a[i][j]);

  printf("\n");

   }

 for(i=0;i

 {  for(j=0;j

      printf("%5d",a[i][j]);

    printf("\n");

 }

   for(i=0;i

   {  for(x=0;x

         for(j=0;j

    if(a[i][j]

    {   t=a[i][j];

      a[i][j]=a[i][j+1];

      a[i][j+1]=t;

    }

   }

   printf("输出排序之后的数:\n");

 for(i=0;i

 {  for(j=0;j

      printf("%5d",a[i][j]);

    printf("\n");

 }

}

回答2:

#include
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 b[i]=a[i];
cout<<"请输入行数"< cin>>m;
cout<<"请输入列数"< cin>>n;
ccin(b);
range(b);
ccout(b);
}
void ccin(int *a[N])
{
int i,j;
for(i=0;i {
cout<<"请输入第"< for(j=0;j cin>>*(*(a+i)+j);
}
}
void range(int *b[N])
{
int i,j,k,l;
for(i=0;i {
for(l=0;l for(j=0;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 {
cout<<"第"< for(j=0;j cout<<*(*(b+i)+j);
cout< }
}
一共三个函数