大数的十进制转换成二进制(C语言)
发布时间:2020-12-14 02:35:57 所属栏目:大数据 来源:网络整理
导读:题目1138:进制转换 题目描述: 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入: 多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数) 输出: 每行输出对应的二进制数。
题目1138:进制转换
附上网上看到的别人的C++代码 #include <stdio.h> #include <cstring> #include <string> #include <iostream> using namespace std; char binvec[1001]; void tenToBin(string str) { int j=0; int sum=1; int len=str.size(); while (sum) { sum=0; for (int i=0; i<len; ++i) { int temp=(str[i]-'0')/2; sum+=temp; if (i==len-1) { binvec[j++]=(str[i]-'0')%2+'0'; } else { str[i+1]=str[i+1]+(str[i]-'0')%2*10;//算出下一个被除数 } //记录该次得出的商 str[i]=temp+'0'; } } } void resout() { //逆序 int len1=strlen(binvec); for (int i=0,j=len1-1; i<len1/2; ++i,--j) { char temp=binvec[j]; binvec[j]=binvec[i]; binvec[i]=temp; } cout<<binvec<<endl; } int main() { string str; while(cin>>str) { memset(binvec,' ',sizeof(binvec)); tenToBin(str); resout(); } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |