我的代码的C ++其余部分没有加载

时间:2013-09-06 04:15:58

标签: c++

这是我到目前为止所拥有的。当我编译时,我没有错误。

 // Sorting Benchmarks
 #include <iostream>
 using namespace std;

 // Function Prototypes
 int bubbleSort (long [], int);
 void showArray (long [], int);

 int main()
 {
     // Define an array with unsorted values
     const int SIZE = 20;
     long values[SIZE] = {20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
     int n;

     // Display the values.
    cout << "The unsorted values are\n";
    showArray(values, SIZE);

    // Sort the values using bubble sort
    n = bubbleSort (values, SIZE);

    // Display the number of exchanges while using bubble sort
    cout << n;

    // Display the sorted values.
    cout << "The sorted values are\n";
    showArray (values, SIZE);
    return 0;    
}

int bubbleSort (long array[], int size)
{
    bool swap;
    int temp;
    int exchanges;
    exchanges = 0;
    do
    {
         swap = false;
         for(int count = 0; count < (size - 1); count++)
         {
               if (array[count] > array[count + 1]);
               {
                    array[count + 1] = temp;
                    swap = true;
                    exchanges++;
               }
         }
     }
     while (swap);
     return exchanges;
}

void showArray(long array[], int size)
{
     for(int count = 0; count < size; count++)
     cout << array[count] << " ";
     cout << endl;

     system("PAUSE");
 }

问题是当我运行代码时,我得到的唯一一行是 “未分类的值是 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 按任意键继续......“

为什么在按任意键后其余代码不会运行?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

由于此行末尾的;,您的程序无限循环:

                  if (array[count] > array[count + 1]);

拿出来。请注意,您的程序仍有其他错误(您的交换已损坏)。

您可能会考虑切换编译器。即使没有任何特殊标志,Clang也会警告你的代码:

example.cpp:43:59: warning: if statement has empty body [-Wempty-body]
                      if (array[count] > array[count + 1]);
                                                          ^
example.cpp:43:59: note: put the semicolon on a separate line to silence this
      warning

答案 1 :(得分:1)

我认为你的错误是这一行:

          if (array[count] > array[count + 1]);

你可能最后不想要那个分号。