c/c++语言开发共享C/C++的(大数)进制转换面试题解答

题目描述:大数进制转换 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入 多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30


题目描述:大数进制转换

将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。

输入

多组数据,每行为一个长度不超过30位的十进制非负整数。

(注意是10进制数字的个数可能有30个,而非30bits的整数)

输出

每行输出对应的二进制数。

样例输入

985

211

1126

样例输出

1111011001

11010011

10001100110

  #include <iostream>  #include <cstring>  using namespace std;  int main() {      char str[31];      while(cin>>str) {          int sum = 1, l = strlen(str);          char ans[100] = {};          int i,d, j = 0;          while(sum) {              sum = 0;              for (i = 0 ; i < l; i++) {                  d = (str[i] - '0') / 2;                  sum += d;                  if (i == l -1) ans[j++] = (str[i] - '0') %2 +'0';                  else str[i+1] += (str[i] - '0') %2 *10;                  str[i] = d + '0';              }          }          for (int k = strlen(ans)-1; k >= 0; k--) cout<<ans[k];          cout<<endl;      }      return 0;  }

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/607534.html

(0)
上一篇 2021年5月14日
下一篇 2021年5月14日

精彩推荐