C 为什么选择排序不起作用? #包括 main() { int-arr[5]={44,33,55,22,11}; int i,j; 对于(i=0;i

C 为什么选择排序不起作用? #包括 main() { int-arr[5]={44,33,55,22,11}; int i,j; 对于(i=0;i,c,C,去掉if语句末尾的;。交换每次都通过循环进行,因为它不再是有条件的。您已经实现了非常昂贵的“reverse”版本。在if循环:D之后删除分号 #include <stdio.h> main() { int arr[5]={44,33,55,22,11}; int i,j; for (i=0;i<=4;i++) { for (j=i+1;j<=4;j++) { if (arr[i]>

去掉
if
语句末尾的
。交换每次都通过循环进行,因为它不再是有条件的。您已经实现了非常昂贵的“reverse”版本。

if
循环:D之后删除
分号

#include <stdio.h>
main()
{
    int arr[5]={44,33,55,22,11};
    int i,j;
    for (i=0;i<=4;i++)
    {
        for (j=i+1;j<=4;j++)
        {
            if (arr[i]>arr[j]);
            {
                int k;
                k=arr[i];
                arr[i]=arr[j];
                arr[j]=k;
            }
        }
    }
    for (i=0;i<=4;i++)
        printf(" %d", arr[i]);
}
#包括
int main(){
int-arr[5]={44,33,55,22,11};
int i,j;

对于(i=0;我知道你是否尝试过使用调试器单步执行代码?试试吧——这很简单,也很有趣!在你的程序员生涯的剩余时间里,是否计划在每次出现意外输出时将程序发布到StackOverflow?你应该问的问题是,在程序中发现错误的好技术是什么?而不是错误在哪里此程序?您应该学习的第一项技术是打开所有编译器警告并修复您的程序,使其始终在没有警告的情况下编译。对于这一“偶然”错误,如果您允许,大多数编译器将准确地告诉您的错误在哪里。
if (arr[i]>arr[j]);
#include <stdio.h>

int main(){
    int arr[5]={44,33,55,22,11};
    int i,j;
    for (i=0;i<4;i++){
        for (j=i+1;j<=4;j++){
            if (arr[i]>arr[j]){
                int k;
                k=arr[i];
                arr[i]=arr[j];
                arr[j]=k;
            }
        }
    }
    for (i=0;i<=4;i++)
        printf(" %d", arr[i]);
    return 0;
}