gpt4 book ai didi

c++ - cpp 通过引用传递

转载 作者:行者123 更新时间:2023-11-30 05:37:58 25 4
gpt4 key购买 nike

我写了一个简单的按引用传递的排序代码。这里我将一个数组传递给函数,然后执行排序操作。在传递数组后,我打印用户输入的整个数组,然后执行排序操作(按降序排列)但是在排序后,当我打印排序后的数组时,我得到一个输出,即数组索引“0”包含值“41” .如果我输入小于“41”的数字,则排序后的数组显示为“41”,然后以排序方式显示其他数字。请解释为什么我会得到这样的输出。

#include<iostream>
using namespace std;
int sort_array(int *p);

int main() {
int arr[10];
for (int i=0; i<10; i++) {
cout << "enter " << (i+1) << " value:";
cin >> arr[i];
cout << "\n";
}

sort_array(arr);
return 0;
}

int sort_array(int *p) {
int c=0;
for (int i=0; i<10; i++) {
cout << p[i];
cout << "\n";
}
cout << "arr:"<<p[0];
cout<<"\n";

for (int i=0; i<10; i++) {
for (int j=0; j<10; j++) {
if (p[j] < p[j+1]) {
c=p[j];
p[j]=p[j+1];
p[j+1]=c;
}
}

cout << "\n";
for (int i=0; i<10; i++) {
cout << p[i];
cout << "\n";
}
cout << p[0];
}

最佳答案

看来您正在尝试对 sort_array() 中的数组进行冒泡排序,但逻辑是错误的。尝试改用此代码:

int sort_array(int *p) {
int c=0;

for (int i=0; i<10; i++) {
cout << p[i];
cout << "\n";
}
cout << "arr:" << p[0];
cout << "\n";

for (int i=0; i < 10; i++) {
for (int j=1; j < (10-i); j++) {
if (p[j-1] > p[j]) {
c = p[j-1];
p[j-1] = p[j];
p[j] = c;
}
}
}

cout << "\n";
for (int i=0; i<10; i++) {
cout << p[i];
cout << "\n";
}
cout<<p[0];
}

关于c++ - cpp 通过引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33007532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com