题目内容:将十进制整数转换成二进制数。
输入描述:输入数据中含有不多于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 "; 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<<" "; } system("pause"); return 0; }
效果如图: