0

好吧,我知道这是一个愚蠢的问题,因为它与反向 for 循环有关,但我很难理解这一点。我什至尝试制作一个单独的反向 for 循环程序来清除上下文,但我仍然遇到了麻烦。

所以这是我的代码

#include<iostream>
using namespace std;
int main()
{
    int i,d,j=0,b[100];
    cin>>d;
    while(d>0)
    {
        b[j]=d%2;
        d=d/2;
        j++;
    }
    //cout<<j;
    for(i=j-1;i>=0;i--)
    {
        cout<<b[i];
    }
}

现在,请解释一下 for 循环。为什么应该这样i=j-1;i>=0;i--?不能i=j;i>0;i--吗?

当我109作为输入提供并使用时,i=j;i>0;i--我正在接收6946348110110作为输出,如果我正在使用,i=j;i>=0;i--那么我正在接收69463481101101

我是新手。请帮忙!

4

1 回答 1

0

最后一次执行“while”循环时,b[j]=d%2将在位置 4 (b[0,1,2,3, 4 ]) 处添加一个值。变量 'j' 仍将增加 1 以结束循环,取值为 5。所以,当开始你的 'for' 循环时,你会看到一个选项卡变为 4,但 'j' 值为 5,解释 using 的效用i=j-1。您的循环现在将检查值 [4,3,2,1,0] 而不是 [5,4,3,2,1],这是不准确的。

于 2017-12-07T14:28:54.527 回答