题目描述
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
输入描述:
多组数据,每行为一个长度不超过30位的十进制非负整数。
(注意是10进制数字的个数可能有30个,而非30bits的整数)
输出描述:
每行输出对应的二进制数。
输入
0
1
3
8
输出
0
1
11
1000
C++实现:
#include<iostream>
#include<string.h>
using namespace std;
int main(){
char c[30];
char b[200];
int a[30];
cin>>c;
int Num=strlen(c);
for(int i=0;i<Num;i++){
a[i]=c[i]-'0';
}
int num=1;
int k=0;
int j=0;
//判断num为0,若为0,表示a数组内所有位均<2,此时循环结束
while(num){
num=0;
for(int i=0;i<Num;i++){
//思路为每一位除以2,当前位为偶数,下一位为0,当前位为奇数,则下一位为当前位*10+下一位原值
k=a[i]/2;
num+=k;
if(i==Num-1)
b[j++]=a[i]%2+'0';