C++十进制转换为二进制

题目内容:将十进制整数转换成二进制数。

输入描述:输入数据中含有不多于50个的整数n(-231<n<231)

输出描述:对于每个n,以11位的宽度右对齐输入n值,然后输出“-->”,再然后输出二进制数。每个整数n的输出,独立占一行。

题目分析:将某个数从十进制转为二进制的具体方法是,该数对2取余,结果要么为1要么为0,此为该数对应二进制的末位;然后该数除以二,得到的商再次对2取余,结果为对应二进制的倒数第二位……以此类推,知道除以2的结果为0

参考代码:

#include <iostream>

#include <fstream>

#include <string>

#include <algorithm>

using namespace std;



string s;

int main(int argc,char * argv[])

{

    int n;

    while(cin>>n)

    {

        if(n==0)

        {

                cout<<"          0-->0\n";

                continue;

        }

        s=" ";

        for(int a=n;a;a=a/2)

        {

                s=s+(a%2?'1':'0');

        }

        std::reverse(s.begin(),s.end());

        const char *sss=s.c_str();

        cout.width(11);

        cout<<n<<(n<0?"-->-":"-->")<<sss<<"\n";

    }

    system("pause");

    return 0;

}

效果如图:

C++十进制转换为二进制

你可能感兴趣的:(进制转换)