c语言编程如何实现-十进制数转换成二进制和输出


#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编译器时略作修改;只考虑了输入数为正数. 

在C语言中,将二进制数转换为十进制数的过程可以通过以下步骤实现: 1. **输入二进制数**:首先,需要从用户那里获取一个二进制数,可以是一个字符串或者一个整数。 2. **逐位处理**:从右到左逐位处理二进制数,每一位乘以2的相应次方。 3. **累加结果**:将每一位的结果累加起来,最终得到十进制数。 下面是一个示例代码,演示如何实现这个过程: ```c #include <stdio.h> #include <string.h> // 函数声明 long binaryToDecimal(char binaryNumber[]); int main() { char binaryNumber[65]; // 假设二进制数不会超过64位 printf("请输入一个二进制: "); scanf("%s", binaryNumber); // 调用函数将二进制数转换为十进制数 long decimalNumber = binaryToDecimal(binaryNumber); printf("二进制数 %s 转换为十进制数为 %ld\n", binaryNumber, decimalNumber); return 0; } // 将二进制数转换为十进制数的函数 long binaryToDecimal(char binaryNumber[]) { long decimalNumber = 0; int length = strlen(binaryNumber); int power = 0; // 从右到左逐位处理 for (int i = length - 1; i >= 0; i--) { if (binaryNumber[i] == '1') { decimalNumber += 1 * (1 << power); } else if (binaryNumber[i] != '0') { // 如果输入的字符不是0或1,则返回错误 printf("输入的二进制数包含无效字符: %c\n", binaryNumber[i]); return -1; } power++; } return decimalNumber; } ``` 在这个示例中,`binaryToDecimal`函数接受一个字符串形式二进制数,并将其转换为十进制数。程序会逐位检查输入的字符,如果是'1',则将其转换为对应的十进制数并累加;如果是'0',则跳过;如果包含其他字符,则提示错误。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值