百练_3249:进制转换

来源:互联网 发布:网络情歌对唱经典老歌 编辑:程序博客网 时间:2024/06/07 13:31
描述
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
输入
多组数据,每行为一个长度不超过30位的十进制非负整数。
(注意是10进制数字的个数可能有30个,而非30bits的整数)
输出
每行输出对应的二进制数。
样例输入
0138

样例输出

01111000


#include<stdio.h>#include<string.h> int main(){int strs,strp,sum,j,t;int a[255]={0};    char s[255],p[1024];while(gets(s)){  for(int i=0;i<255;i++)  a[i]=0;j=0,t=1;    strs=strlen(s);for(int i=0;i<strs;i++)a[i]=s[i]-'0';while(sum!=0||t==1){t=0;sum=0;for(int i=0;i<strs-1;i++){if(a[i]%2==1){   a[i]/=2;   a[i+1]+=10;}else{a[i]/=2;}}p[j++]=a[strs-1]%2+'0';a[strs-1]/=2;for(int i=0;i<strs;i++)sum+=a[i];}p[j]='\0';strp=strlen(p);for(int i=strp-1;i>=0;i--)printf("%c",p[i]);printf("\n");memset(s,0,sizeof(s));memset(p,0,sizeof(p));}return 0;} 


原创粉丝点击