我必须编写一个代码,在一个输入的数字中对数字进行排序。
例如:输入:4713239 输出:1233479
当我输入重复数字(如33)时,当我将最后一个循环设置为FOR时,它无法正常工作:
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;
}
答案 0 :(得分:1)
你修改了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]
}