gpt4 book ai didi

c++ - 对输入的数字进行排序 - FOR 和 WHILE 之间的区别

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

我必须编写一个代码来对输入的数字中的数字进行排序。

例如:输入: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/

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