【发布时间】:2020-06-28 08:06:23
【问题描述】:
int sortDigit(int number, bool order){
if (order == ASCENDING && number>0) {
for (int j = number; j>0; j/=10) {
if (j%10==i) {
cout << i;
}
}
}
if (order == DESCENDING && number>0) {
for (int j = number; j>0; j/=10) {
if (j%10==i) {
cout << i;
}
}
}
}
我正在尝试按排列或降序排列数字。
这段代码返回排序后的数字,但由于没有返回值,答案后面跟着32767:- 例如:-
cout << "sortDigit(54321, ASCENDING) = " << sortDigit(54321, ASCENDING) << endl;
输出:
sortDigit(54321, ASCENDING) = 1234532767
谁能帮我解决这个错误应该使用什么返回值?或者有没有更好的方法在不使用数组的情况下对数字进行排序? 非常感谢???
【问题讨论】:
-
请阅读minimal reproducible example。您没有显示导致错误的行。无论如何,你想要
std::cout << sortDigit(....)但sortDigit已经打印了数字。只需调用该函数,不要尝试将其返回值传递给std::cout -
您能解释一下为什么要避免使用数组吗?就目前而言,您的代码避免使用数组,但需要进行更多计算才能实现这一点。此外,如果您要反转数字并将结果存储在
int中,反转100的结果将与反转10000相同 - 但您的代码会产生不同的输出。 -
这并没有解决问题,但
sortDigit应该返回void,因为它可以告诉调用者没有任何意义。并且要调用它,不要将其(无意义的)结果插入std::cout。就叫它:std::cout << "sortDigit(54321, ASCENDING) = "; sortDigit(54321, ASCENDING); std::cout << '\n';.