用函数实现,将一个十进制数,转换成相应的二进制数并输出

C语言提问,请帮忙啊 !!!!

第1个回答  2006-06-20
#include <iostream.h>
void divideData(const float number, int &integer, float &decimal); //分离出整数和小数部分.
void printBinaryForInteger(int &integer); //打印整数部分的二进制形式.
void printBinaryForDecimal(float &decimal); //打印小数部分的二进制形式.
int main()
{
float number;
int integer;
float decimal;

cout<<"Please input a decimal number for being converted: ";
cin>>number;
cout<<"\nThe binary number converted from your input "<<number<<" is: ";
divideData(number, integer, decimal);
printBinaryForInteger(integer);

if (integer==0) cout<<"0";
cout<<".";
printBinaryForDecimal(decimal);
cout<<endl;
return 1;
}
void divideData(const float number, int &integer, float &decimal)
{
integer = (int)number;
decimal = number - (float)integer;
}
void printBinaryForInteger(int &integer)
{
int k,a=0;
int b[32];
while (integer!=0)
{
k=integer%2;
b[a++]=k;
integer=integer/2;
}
while (a>0)
{
cout<<b[--a];
}
}
void printBinaryForDecimal(float &decimal)
{
int i=0;
int count=0;
int a[8]={0};
while (count<6) //小数部分取6位(也可用符号常量设置).
{
decimal*=2;
a[count++]=(int)decimal;
if (decimal>=1.0)
decimal-=1.0;
}
while (i<6)
{
cout<<a[i++];
}
}
//用于C编译器时略作修改;只考虑了输入数为正数.
第2个回答  2020-01-17
#include
void
divideData(const
float
number,
int
&integer,
float
&decimal);
//分离出整数和小数部分.
void
printBinaryForInteger(int
&integer);
//打印整数部分的二进制形式.
void
printBinaryForDecimal(float
&decimal);
//打印小数部分的二进制形式.
int
main()
{
float
number;
int
integer;
float
decimal;
cout<cin>>number;
cout<divideData(number,
integer,
decimal);
printBinaryForInteger(integer);
if
(integer==0)
cout<cout<printBinaryForDecimal(decimal);
cout<return
1;
}
void
divideData(const
float
number,
int
&integer,
float
&decimal)
{
integer
=
(int)number;
decimal
=
number
-
(float)integer;
}
void
printBinaryForInteger(int
&integer)
{
int
k,a=0;
int
b[32];
while
(integer!=0)
{
k=integer%2;
b[a++]=k;
integer=integer/2;
}
while
(a>0)
{
cout<}
}
void
printBinaryForDecimal(float
&decimal)
{
int
i=0;
int
count=0;
int
a[8]={0};
while
(count<6)
//小数部分取6位(也可用符号常量设置).
{
decimal*=2;
a[count++]=(int)decimal;
if
(decimal>=1.0)
decimal-=1.0;
}
while
(i<6)
{
cout<}
}
//用于C编译器时略作修改;只考虑了输入数为正数.
第3个回答  2019-02-13
原理:和十进制的数除以2,将商暂存起来,余数按字符串排列起来。再用商除以2,再将余数按字条串排列起来。如此循环。最终得到的那个余字符串就是二进制数了。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网