【发布时间】:2016-10-21 12:37:20
【问题描述】:
我必须编写一个代码,对输入的数字中的数字进行排序。
例如:输入:4713239 输出:1233479
当我将最后一个循环作为 FOR 时输入重复数字(如 33)时,它无法正常工作:
for(int j = 0; j < arr[i]; j++) // in this loop my output is: 123479.
当我将此循环从 FOR 更改为 WHILE 时,它可以正常工作。 意思是:
while(arr[i]) // and the number is sorted correctly (1233479)
说实话,我不知道这段代码中这些操作有什么区别。
为什么 FOR 循环不能正常工作?有人可以解释一下吗?
我写了一个代码:
int sort(int arg)
{
int var, score = 0;
int arr[10] = {0};
for(int i = 0; i < 10; i++)
{
var = arg % 10;
arr[var]++;
arg = arg / 10;
}
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < arr[i]; j++) //while(arr[i]) --> works correctly
{
score = score * 10 + i;
arr[i]--;
}
}
return score;
}
【问题讨论】:
-
while(arg[i])与while(arg[i] != 0)的评估相同,因此与for(...; j < arg[i]; ..)不同,第二个您不想减少arg[i] -
@BeyelerStudios 那么导致双数未排序的技巧在哪里?
标签: c++ arrays sorting for-loop while-loop