问题描述
- C语言十进制转换成二进制(可转换小数)哪里出错了?
- //
#include
#include
#define decimalnum 8//小数二进制位数
void main()
{
char Integerbuffer[100];//整数
char decimalbuffer[20];//小数
float number;
double decimalnumbera;
long value;
int i;
printf(""请输入需要转换成二进制的十进制数:"");
scanf(""%f""&number);
//printf(""
%f
""number);
value=(long)number;
a=decimalnumber=number-value;
//printf(""%f
""decimalnumber);
itoa(value Integerbuffer 2); // 将value 转为存成2进制之字串
printf(""整数的二进制为%s
""Integerbuffer);
//printf(""%s""itoa(value Integerbuffer 2));
while(a>0.0)
{
decimalbuffer[i]='0'+(int)(a*2);
//printf(""%d""(int)(a*2));
a=a*2-(int)(a*2);
if (i++==decimalnum) break;
}
decimalbuffer[i]='';
printf(""小数的二进制形式为.%s
""decimalbuffer);
printf(""%f的二进制为%s.%s
""numberIntegerbuffer decimalbuffer);
system(""pause"");
}
解决方案
没有初始化i?初始化后再看看还有啥错误不
解决方案二:
// app1.cpp : Defines the entry point for the console application.//#include ""stdafx.h""#include <stdio.h>#include<stdlib.h>#define decimalnum 8//小数二进制位数 void main(){char Integerbuffer[100];//整数char decimalbuffer[20];//小数float number;double decimalnumbera;long value;int i=0;printf(""请输入需要转换成二进制的十进制数:"");scanf(""%f""&number);//printf(""
%f
""number);value=(long)number;a=decimalnumber=number-value;//printf(""%f
""decimalnumber);itoa(value Integerbuffer 2); // 将value 转为存成2进制之字串printf(""整数的二进制为%s
""Integerbuffer);//printf(""%s""itoa(value Integerbuffer 2)); while(a>0.0) { decimalbuffer[i]='0'+(int)(a*2); //printf(""%d""(int)(a*2)); a=a*2-(int)(a*2); if (i++==decimalnum) break; } decimalbuffer[i]=''; printf(""小数的二进制形式为.%s
""decimalbuffer); printf(""%f的二进制为%s.%s
""numberIntegerbuffer decimalbuffer); system(""pause"");}
int i=0;
这样就可以了。
解决方案三:
请输入需要转换成二进制的十进制数:123.125
整数的二进制为1111011
小数的二进制形式为.001
123.125000的二进制为1111011.001
请按任意键继续. . .
解决方案五:
C语言中字符串如何转换为二进制、八进制、十进制、十六进制
C语言实现二进制与十进制转换
条条大路通罗马——由C语言中十进制转换为二进制想到的
时间: 2024-10-04 02:52:20