程序要求是将二维数组元素排列后输出,我的想法是将其转化为一维数组排序后再转化回来,但是当我输入数据后,它没有输出,这是怎么回事?
#include<stdio.h>//a二维数组元素从小到大(先左右后上下)的排序
int main(){
int a[50][50];
int i, j, n, m;
int k = 0;
int b[];
scanf("%d%d", &n, &m);//输入矩阵的长(n)和宽(m)
for(i = 0; i < n; i++) {
for(j = 0; j < m; j++) {
scanf("%d", &a[i][j]);
}
} //输入矩阵每一个元素的值
for(i = 0; i < n; i++) {
for(j = 0; j < m; j++) {
b[k++] = a[i][j];
}
}//将二维数组a转化为一维数组b
i = j = 0;//清零,作另一个用途
for(k = 0; k < n*m; k++) {
if(b[k] > b[k + 1]) {
i = b[k];
b[k] = b[k + 1];
b[k + 1] = i;
}
} //对一维数组b进行冒泡法排序
for(i = 0; i < n; i++) {
for(j = 0; j < m; j++) {
a[i][j] = b[i*m + j];
}
} //将排序完的b数组元素依次填入二维数组a中
for(i = 0; i < n; i++) {
for(j = 0; j < m; j++) {
printf("%d ", a[i][j]);
}
} //输出a数组元素排列的结果
return 0;
}
```
int b[];这样不行;
应该改为
int b[2500];