#include<stdio.h>
#define M 4
#define N 5
int main()
{
int i,j,k,m,a[M][N],b[MN];
printf("请输入一个45的二维数组:\n");
k=0;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
scanf("%d",&a[M][N]);
}
}
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
b[k]=a[M][N];
k++;
}
}
int r=0;
for(i=0;i<M*N-1;i++)
{
for(j=0;j<M*N-i-1;j++)
{
if(b[r]>b[r+1])
{
m=b[r];
b[r]=b[r+1];
b[r+1]=m;
}
}
}
int o=0;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
a[M][N]=b[o];
o++;
}
}
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%d\t",a[M][N]);
}
}
return 0;
}
排序的地方错了,应该用b[j]和b[j+1]进行比较,如下图所示:
代码修改如下:
#include<stdio.h>
#define M 4
#define N 5
int main()
{
int i,j,k,m,a[M][N],b[M*N];
printf("请输入一个4*5的二维数组:\n");
k=0;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
scanf("%d",&a[M][N]);
}
}
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
b[k]=a[M][N];
k++;
}
}
int r=0;
for(i=0;i<M*N-1;i++)
{
for(j=0;j<M*N-i-1;j++)
{
//修改的地方
if(b[j]>b[j+1])//if(b[r]>b[r+1])
{
m=b[j];//b[r];
b[j]=b[j+1];//b[r]=b[r+1];
b[j+1]=m;;//b[r+1]=m;
}
}
}
int o=0;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
a[i][j]=b[o];
o++;
}
}
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%d\t",a[i][j]);
}
}
return 0;
}
程序是实现什么功能呢?现在存在什么问题。