编写一个进制转换器

来源:互联网 发布:巨人网络上市涨幅图 编辑:程序博客网 时间:2024/05/16 08:25
#include<iostream>#include<stdlib.h>#include<cmath>using namespace std;void BtoD(int B, int &D, int &W)//二转十{int bit;if (B > 0){bit = B % 10;D = D + bit*(int)(pow(2, float(W)));//取余,最低位是否是1B = B / 10;W++;//去掉最低位BtoD(B, D, W);//二进制码每一位对应权重加1}}void main(){char bi[255];//二进制数内存int input;//输出进制数char type;//输出进制类型char contin;//标志是否继续进行int de = 0;//十进制数int weight = 0;//二进制码最低位权重do{cout << "请选择输入数的进制类型" << endl;cout << "B-二进制   O-八进制   D-十进制     H-十六进制" << endl;cout << "选择进制为: ";cin >> type;switch (type){case 'B':cout << "输入的二进制数: ";//二转为十进制cin >> input;BtoD(input, de, weight);cout << "其八进制数是:" << oct << de << endl;cout << "其十进制数是:" << dec << de << endl;cout << "其十六进制是:" << hex << de << endl;break;case'O':cout << "输入的八进制数: ";//八进制转换为二进制cin >> oct >> input;cout << "其二进制数是: ";itoa(input, bi, 2);cout << bi << endl;cout << "其十进制数是:" << dec << input << endl;cout << "其十六进制数是:" << hex << input << endl;break;case'D':cout << "输入的十进制数: ";//十进制转换为二进制cin >> dec >> input;cout << "其二进制数是: ";itoa(input, bi, 2);cout << "其八进制数是: " << oct << input << endl;cout << "其十六进制数是: " << hex << input << endl;break;case'H':cout << "输入的十六进制数: ";//十六进制转换为二进制cin >> hex >> input;cout << "其二进制数是: ";itoa(input, bi, 2);cout << bi << endl;cout << "其八进制数是: " << oct << input << endl;cout << "其十进制数是: " << dec << input << endl;break;default:cout << "选择进制类型错误\n";exit(-1);}cout << "是否继续进行转换?  Y-是,N-否" << endl;cin >> contin;} while (contin == 'Y');}

0 0