#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;
}
看下哪里错了,帮修改下
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
技术专家团-小桥流水 2021-12-02 15:54关注排序的地方错了,应该用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; }本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报 编辑记录解决 1无用