赞
踩
利用权值展开相加的方法来转换。
- #include <iostream>
- #include <string>
- #include <cmath>
-
- int main() {
- // 初始化变量
- using namespace std;
- string num;
-
- while (true) {
- // 输入数组,初始化状态机
- bool flag = true;
- double sum = 0;
- cout << "输入二进制数(2退出):";
- cin >> num;
- // 判断第一项是否为2的ASCII
- if (num[0] == 50) {
- cout << "程序退出成功!" << endl;
- break;
- }
- // 将数组按照权重相加
- for (int i = 0; i < num.size(); i++) {
- if (num[i] == 49) { // 判断k项是否为1的ASCII
- sum += pow(2, num.size() - i - 1);
- cout << pow(2, num.size() - i - 1) << " ";
- }
- if (num[i] != 49 and num[i] != 48) { // 判断是否不为0或1
- cout << "二进制数只能输入0或1!" << "\n" << endl;
- flag = false;
- break;
- }
- }
- // 判断是否输出
- if (flag) {
- cout << "\n十进制为:" << sum << "\n" << endl;
- num.clear();
- }
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。