#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]);
}
该计划的输出为11 22 55 33 44
,且应为11 22 33 44 55
我做错了什么?
答案 0 :(得分:6)
摆脱;
声明末尾的if
。每次循环都会发生交换,因为它不再是有条件的。你已经实现了一个非常昂贵的“反向”版本。
答案 1 :(得分:1)
在semicolon
循环后删除if
:D
if (arr[i]>arr[j]);
答案 2 :(得分:-1)
#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;
}