0

ほぼ理解できたと思いますが、これを理解しようとしてぐるぐる回っているように感じます。文字列や配列を使わずに out cout に挑戦。例として 56 という数字を取り上げましたが、56 は 111000 に等しくなければなりませんが、これは 7 になるまで正常に行われるため、そうではありません。その後、数字は number*2 + number%2 に等しくなり、15 に等しくなり、すべて 1 が出力されます。もうIDK、これは私を月に連れて行ったり戻ったりしています。

#include <iostream>

using namespace std;

int main()
{
int number = 0;
int n = 1;
int x = n;
cin>>number;
cout<<n%2;
while(n <= number)
{
    if(n%2 == 0)
    {
        n = n*2;
        cout<<0;
    }
    else
    {
        n = n*2 + n%2;
        cout<<n%2;
    }
}
}
4

4 に答える 4

0

再帰を使用できます

void decimal_to_binary(int decimal)
{
    int remainder = decimal % 2;
    if (decimal < 1)
        return;
    decimal_to_binary(decimal / 2);
    cout << remainder;
}

この関数は小数を取り、2 に割ったときの余りを取得します。関数自体を再度呼び出す前に、小数が 1 未満 (おそらく 0) かどうかをチェックし、1 と 0 の出力を実行するために戻ります。

于 2013-05-18T07:10:14.787 に答える