关于#c语言#的问题

img


为什么排序输出会多了一个0啊,这个要怎么改。1111111111111111111111111111111111111111111111111111111111111

i<=sz修改为i<sz-1
j<=sz修改为j<sz-1-i

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/376898
  • 以下回答来自chatgpt:

    问题分析:根据代码,排序算法使用的是冒泡排序,排序算法的逻辑是正确的,但是实际输出结果多出了一个0。根据代码的输出逻辑,我们首先要检查冒泡排序函数的排序逻辑是否正确,然后再检查输出循环是否正确。

    解决方案:经过检查,代码中的排序逻辑是正确的。我们需要检查输出循环的逻辑和条件,并尝试排除输入数据中存在问题的可能性。

    以下是我修改后的代码,你可以尝试使用这个版本的代码进行编译和运行,检查输出结果是否正确:

    #include <stdio.h>
    
    void bubbleSort(int arr[], int n) {
        for (int i = 0; i < n-1; i++) {
            for (int j = 0; j < n-i-1; j++) {
                if (arr[j] > arr[j+1]) {
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    }
    
    int main() {
        int arr[] = {5, 3, -1, 9, 0};
        int n = sizeof(arr) / sizeof(arr[0]);
    
        bubbleSort(arr, n);
    
        printf("排序结果:");
        for (int i = 0; i < n; i++) {
            // 修改输出循环的逻辑,跳过等于0的元素
            if(arr[i] == 0) {
                continue;
            }
            printf("%d ", arr[i]);
        }
    
        return 0;
    }
    

    希望这个解决方案对你有所帮助。如果还有其他问题,请随时向我提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^