各位看看,如果正确,楼主必定采纳

为什么会出现乱码。我找不出哪里错,各位帮我看看!

//冒泡排序法(顺序)
#include 
void main()
{
    int i, j;
    int arr[10];
    int swap;
    for (i = 0; i < 10; i++)
    {
        printf("arr[%d]=", i);
        scanf("%d", &arr[i]);
    }
    for (i = 0; i <9; i++)
    {
        for (j =0; j < 10; j++)
        {
            if (arr[j]>arr[j+1])
            {
                swap = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = swap;    
            }
        }
    }
    for (i = 0; i < 10; i++)
    {
        printf("%d\t", arr[i]);
        if (i == 4)
            printf("\n");
    }
}

img

for (j =0; j < 10; j++)
改为j<9
否则j+1就越界了
如果j的取值范围不改,那么后面的判断就应该判断arr[i]>arr[j]而不是arr[j]>arr[j+1]


//冒泡排序法(顺序)
#include <stdio.h>
int main()
{
    int i, j;
    int arr[10];
    int swap;
    for (i = 0; i < 10; i++)
    {
        printf("arr[%d]=", i);
        scanf("%d", &arr[i]);
    }
    for (i = 0; i <9; i++)
    {
        for (j =0; j < 9 -i; j++)
        {
            if (arr[j]>arr[j+1])
            {
                swap = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = swap;    
            }
        }
    }
    for (i = 0; i < 10; i++)
    {
        printf("%d\t", arr[i]);
        if (i == 4)
            printf("\n");
    }
    return 0;
}