2014-09-26 92 views
1

谁能告诉我为什么这不起作用?我试图用while循环对五个整数进行排序,但输出结果只给了我输入的数字,而且输入的顺序是我输入的顺序。 我对编程非常陌生,我真的不知道我在做什么。虽然构造来排序int [C++]

这里是我的代码:

#include <iostream> 
using namespace std; 

    int main() 
    { 
     int n1, n2, n3, n4, n5, temp, i; 

     cout << "Enter five numbers to be sorted: " <<'\n'; 
     cin >> n1 >> n2 >> n3 >> n4 >> n5; 

     while(i<4) { 
     i++; 
        if(n1>n2) { 
        temp = n1; 
        n1 = n2; 
        n2 = temp; 
        } 
        if(n2>n3) { 
        temp = n2; 
        n2 = n3; 
        n3 = temp; 
        } 
        if(n3>n4) { 
        temp = n3; 
        n3 = n4; 
        n4 = temp; 
        } 
        if(n4>n5) { 
        temp = n4; 
        n4 = n5; 
        n5 = temp; 
        } 
        } 
        cout << n1 << " " << n2 << " " << n3 << " " << n4 << " " << n5 << endl; 
        system("PAUSE"); 
        return(0); 
    } 
+0

谢谢你提供的信息丰富的答案,它现在可以工作。 – Gokurin 2014-09-26 00:44:27

回答

2

你永远不会初始化i所以它会导致不确定的行为测试i<4;可能这会导致循环永远不会被输入。

将环路更改为for (int i = 0; i < 4; ++i)并取出i的早期定义。

当然,通过使用容器而不是具有五个单独的int变量,排序逻辑可以得到很大改善!

+0

我会给你一票,但可悲的是我没有声望。 – Gokurin 2014-09-26 01:01:11

+0

@Gokurin希望你能接受答案(在答案旁边打勾清楚的刻度线) – 2014-09-26 01:35:55

+0

@ Matt McNabb完成!对不起,我几天没有去。 – Gokurin 2014-09-29 14:05:15