#include <stdio.h>
int main() {
int i, j, k, l;
scanf("%d", &i);
int a[i];
for (j = 0; j < i; j++) {
scanf("%d", &a[j]);
}
for (j = 0; j < i - 1 ; j++) {
for (j = 0; j < i; j++) {
printf("%d ", a[j]);
}
for (k = 0; k < i - 1 - j; k++) {
if (a[k] > a[k + 1]) {
l = a[k];
a[k] = a[k + 1];
a[k + 1] = l;
}
}
}
return 0;
}
我哪里错了?
在21行增加数组数据的输出即可
你代码的问题是j本身是外层循环的循环变量,你不能在输出的时候还用j啊。不然j循环到结束的时候,外层循环也结束了,就无法做到循环效果了
要排序之后再输出啊
双重循环不要用同一个变量j
你题目的解答代码如下:
#include <stdio.h>
int main() {
int i, j, k, l;
scanf("%d", &i);
int a[i];
for (j = 0; j < i; j++) {
scanf("%d", &a[j]);
}
for (j = 0; j < i - 1 ; j++) {
for (k = 0; k < i - 1 - j; k++) {
if (a[k] > a[k + 1]) {
l = a[k];
a[k] = a[k + 1];
a[k + 1] = l;
}
}
}
for (j = 0; j < i; j++) {
printf("%d ", a[j]);
}
return 0;
}
如有帮助,望采纳!谢谢!