我尝试过制作程序来对数组进行排序。
我已尽力而为但存在这个问题:虽然我做了一个循环交换数字并安排它们,但是当我输出数组时,没有任何变化,数组保持不变。
代码将使一切更清晰
这是主要功能:
int main(){
int arr[10];
//For loop to get from user numbers to be put into the array
for ( int i = 0; i<10; i++){
cout << "Enter the number to be recorded: ";
cin >> arr[i];
cout << endl;
}
// Set counter n to 0 ( counts numbes of number swaps)
int n = 0;
do {
//re sets counter to 0
n=0;
//Check the entire loop if arr[i] bigger than arr[i+1] and swaps their values if true then adds 1 to n
for ( int i = 0; i>9; i++){
if(arr[i]>arr[i+1]){
swap(&arr[i], &arr[i+1]);//swaps by sending the addresses of the two array elements the pointers in the swap function
n++;
}
}
}while(n>0); // if counter = 0 then end (therefore the numbers are arranged correctly since no swapping happened)
cout << "The numbers ordered are:\n\n";
// Loop to output the arranged array
for (int i =0; i<10; i++){
cout << arr[i] << ", ";
}
cout<<endl;
system("PAUSE");
return 0;}
这是交换功能:
void swap ( int *p, int *t){
int temp;
temp = *p;
*p = *t;
*t = temp;}
我希望你们能帮助我解决我的问题并告诉我这段代码有什么问题
谢谢大家
答案 0 :(得分:5)
仔细查看你的for循环......它的内容永远不会被执行。
for ( int i = 0; i>9; i++){ ... }
条件i>9
应为i<9
。
答案 1 :(得分:1)
for ( int i = 0; i>9; i++){
^^^
here is your problem
您已初始化i to the 0
并检查条件是,如果i is greater than 9
不是永远不是那么 for循环是 false ,因此它将被终止
应该是
for( int i = 0; i<9; i++) than the
结果
i=0 condition i<9 true { come in the function body}
i=1 condition i<9 true { come in the function body}
.
.
.
i=8 condition i<9 true { come in the function body}
i=9 condition i<9 false { }