.将一个位数不超过1000位的十进制整数转换为对应的二进制数,并打印出转换后的二进制数。要求:
(1)用文字描述算法的实现过程。
(2)写出具体的实现流程。
(3)写出伪代码实现。
(4)写出用C/C++语言实现该算法的程序。
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
#include <algorithm>
using namespace std;
string division(string str, int m, int n, int& remain) {
string result = "";
int a;
remain = 0;
for (int i = 0; i < str.size(); i++) {
a = (n * remain + (str[i] - '0'));
str[i] = a / m + '0';
remain = a % m;
}
//去掉多余的0 比如10/2=05
int pos = 0;
while (str[pos] == '0') {
pos++;
}
return str.substr(pos);
}
string conversion(string str, int m, int n) {
string result = "";
int a;
//因为去掉了多余的0,所以终止条件是字符串为空 例:当上一步运算结果为"0"时,实际上返回的结果为""
while (str.size() != 0) {
str = division(str, m, n, a);
result = char(a + '0') + result;//将余数拼接在结果前面可以直接得到二进制序列
}
return result;
}
int main() {
string a, b;
cout << "输入10进制数:" << endl;
cin >> a;
b = conversion(a, 2, 10);
cout << b << endl;
return 0;
}
测试用例1:10
测试用例2:123456789