我在寫簡單的學校程序來演示選擇排序。我正在使用rand()函數填充數組 ,但在輸入數組程序的長度後會掛起以進行輸入。當我輸入一些無用的(字符或字符串)程序與零數組執行。C++程序在非打算輸入時掛起
下面是代碼:
/*Selection sort implementation-
Autor: Adam Rychter
09/12/13*/
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int* selection_sort(int array[], int length);
int main(void) {
int length, num;
int* array;
cout << "Enter the length of array to sort: ";
cin >> length;
array = new int[length];
for(int i = 0; i < length; i++) {
num = rand();
array[i] = num;
}
int *sorted_array_ptr = selection_sort(array, length);
system("clear");
cout << "Sorted array:" <<endl;
for(int i = 0; i < length; i++) {
cout << " " << sorted_array_ptr[i];
}
free((void*) array);
cout << "\n";
}
int* selection_sort(int array[], int length) {
for(int i = 0; i < length; i++) {
int max_index = i;
for(int j = i + 1; j < length; j++) {
if(array[j] > array[max_index]) {
max_index = j;
}
}
int tmp = array[i];
array[i] = array[max_index];
array[max_index] = tmp;
}
return array;
}
啓用-03優化我使用的G ++編譯器。千謝謝你的回答。 亞當Rychter
結合使用** new/delete **,** malloc/free **。 – David
至user1920482 - 非常感謝!必須寫一些備忘單C與C++ – stryke404
C和C++沒有區別。 C輸入函數如'getc(stdin)'仍然以C++工作。 使用不同的函數,例如'istream :: operator >>()'(這就是你在編寫'cin >>長度時所調用的)'')當然會使用該函數的特定行爲。 – Peter