我必须编写一个代码来对输入的数字中的数字进行排序。
例如:输入: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;
}
最佳答案
您同时修改了 arr[i] 和 j,因此当两者都在进行比较时,循环将结束得太快。
for(int j = 0; j < arr[i]; j++) // increase j, compare with arr[i]
{
score = score * 10 + i;
arr[i]--; // decrease arr[i]
}
关于c++ - 对输入的数字进行排序 - FOR 和 WHILE 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37919418/