如何用C语言进行冒泡排序,并把每一次排序的结果输出?


#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;
}

如有帮助,望采纳!谢谢!