编程实现一个十进制数转换成二进制数。要求,要主程序中输出一个10进度数,输出其对应的2进制数序列。
//transform.h
#include <iostream>
using namespace std;
#ifndef TRANSFORM_H_
#define TRANSFORM_H_
class Transform{
public:
Transform(){
m_ten = 0.0;
n = 0;
m = 0;
}
~Transform(){}
void Input(); //输入一个十进制的数
void Show_int();
void Show_dec();
void Ten_to_Two_int(); //把输入的十进制整数部分转换为二进制部分
void Ten_to_Two_dec();
void Judge_Transform();
private:
int n,m; //n用于记录数组中输入了几个整数数据,m记录小数数据
float m_ten;
int m_two_int[40];
int m_two_dec[20];
};
#endif
//transform.cpp
#include <iostream>
#include "Transform.h"
using namespace std;
void Transform::Input(){
cout << "\n请输入一个十进制的数:";
cin >> m_ten;
}
void Transform::Ten_to_Two_int(){
int i = 0;
int a, b;
a = m_ten;
while (1){
b = a / 2;
m_two_int[i] = a % 2;
a = b;
i++;
n++;
if (a == 0){
break;
}
}
}
void Transform::Ten_to_Two_dec(){
int i = 0;
float a;
a = m_ten - (int)m_ten;
while (1){
m_two_dec[i] = a * 2;
a = a * 2;
a = a - m_two_dec[i];
i++;
m++;
if (a == 0)
break;
}
}
void Transform::Show_int(){
cout << "\n你输入的十进制数为:" << m_ten << endl;
cout << "\n你输入的十进制转换成二进制为:";
for (int i = n - 1; i >= 0; i--){
cout << m_two_int[i];
}
}
void Transform::Show_dec(){
if (m > 16){
cout << ".";
for (int i = 0; i < 16; i++){
cout << m_two_dec[i];
}
cout << "\n\n超出计算精度,结果保留十六位小数.\n\n" << endl;
}
else{
cout << ".";
for (int i = 0; i < m; i++){
cout << m_two_dec[i];
}
cout << "\n\n" << endl;
}
}
void Transform::Judge_Transform(){
if (m_ten - (int)m_ten == 0){
this->Ten_to_Two_int();
this->Show_int();
cout << "\n" << endl;
}
else{
this->Ten_to_Two_int();
this->Ten_to_Two_dec();
this->Show_int();
this->Show_dec();
}
}
//main.cpp
#include <iostream>
#include "Transform.h"
using namespace std;
int main(){
Transform tr;
tr.Input();
tr.Judge_Transform();
return 0;
}
实验结果图
实验三完成。