用冒泡法把10个随机整数由大到小排序,不知道怎么改错


 #include<stdio.h>
int a[10];
 int i,j,t;
 printf("input 10 numbers :\n");
 for (i=0;i<10;i++)  
    scanf("%d",&a[i]);              
 printf("\n");
 for(j=0;j<9;j++)
 {
 for(i=0;i<9-j;i++)
     {  
       if (a[i]>a[i+1])  
        {t=a[i];a[i]=a[i+1];a[i+1]=t;}
      }
 }
 printf("the sorted numbers :\n");
 for(i=0;i<10;i++)
 {
 printf("%d ",a[i]);
 return 0;
 }
 printf("\n");
 
#include<stdio.h>
int main()
{
    int a[10];
    int i,j,t;
    printf("input 10 numbers :\n");
    for (i=0;i<10;i++)  
       scanf("%d",&a[i]);              
    printf("\n");
    for(j=0;j<9;j++)
    {
        for(i=0;i<9-j;i++)
        {  
            if (a[i]>a[i+1])  
            {t=a[i];a[i]=a[i+1];a[i+1]=t;}
        }
    }
    printf("the sorted numbers :\n");
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    return 0;
}

除了改错,我还想问一下怎么改成大到小的排列,谢谢

【以下回答由 GPT 生成】

问题的错误在于将 return 0; 放在了循环结束后的语句之后,导致程序无法正常输出结果。此外,题目要求是将随机整数由大到小排序,但是代码中使用的排序逻辑是由小到大排序,需要进行修改。

以下是修改后的代码:

#include<stdio.h>

int main() {
    int a[10];
    int i, j, t;

    printf("input 10 numbers:\n");

    for (i = 0; i < 10; i++) {
        scanf("%d", &a[i]);
    }

    printf("\n");

    for (j = 0; j < 9; j++) {
        for (i = 0; i < 9 - j; i++) {  
            if (a[i] < a[i + 1]) {
                t = a[i];
                a[i] = a[i + 1];
                a[i + 1] = t;
            }
        }
    }

    printf("the sorted numbers:\n");

    for (i = 0; i < 10; i++) {
        printf("%d ", a[i]);
    }

    printf("\n");

    return 0;
}

修改的部分包括: 1. 将主函数的声明改为 int main() {},并将所有代码放到该函数中。 2. 将 return 0; 语句放到循环结束后的语句之前。 3. 将排序逻辑从 if (a[i] > a[i + 1]) 改为 if (a[i] < a[i + 1]),以实现由大到小的排序。

修改后的代码可以正确地将随机整数由大到小排序,并按照要求输出排序后的结果。



【相关推荐】



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