普通网友 2016-12-01 00:08 采纳率: 0%
浏览 880

C语言求帮助我这个编程哪里错了?如何改正

输入一个十进制数 如-14.48 61.3585
输出二进制数应为 -1110.0111101011 和 111101.0101101111
这是我编写的程序
#include
//转化为2进制
void z2(int n)
{
if (n > 1)
{
z2(n / 2);
}
printf("%d", n % 2);
}
void z21(float f,int c)
{

float twice;
int tmp;
if (c == 0)
return;
twice = f * 2;
tmp = (int)twice;
printf("%d", tmp);
z21(twice - tmp, --c);
}
void main()
{
float shu = 0;
int zhengshu = 0;
printf("请输入一个十进制数:");
scanf("%f", &shu);
zhengshu = (int)shu;
shu -= zhengshu;
z211(zhengshu,shu);

我输入 61.3585输出111101.01011011
输入 -14.48 输出 0.0-1-1-1-10-10
结果都不对呀,如何改正??

  • 写回答

1条回答 默认 最新

  • qq_27976105 2016-12-03 04:15
    关注

    忘了小数部分怎么转二进制了,吃饭了。谢绝追问。

    我有几处疑问:
    1、输入十进制数-14.48
    在计算机中,负数以其正值的补码形式表达。
    -14的二进制表示为(11110010)B
    2、给出代码中有z2和z21的定义,但是调用的为何是z211,且参数顺序为int,float?
    图片说明

     /* 
        输入一个十进制数 如-14.48 61.3585
        输出二进制数应为 -1110.0111101011 和 111101.0101101111
    */
    #include "stdio.h"
    char string[25];
    int DtoB(int value);
    void floatDtoB(float fact);
    void main()
    {
    float shu = 0;
    int value = 0;
    float fact=0.0;
    printf("请输入一个十进制数:");
    scanf("%f", &shu);
    value = (int)shu;
    fact = shu - value;
    
    int n=DtoB(value);
    
    printf(".");
    floatDtoB(fact);
    
    }
    void floatDtoB(float fact);
    {
    float fuben=fact;
    int i=0;
    int n=0;
    while(fuben<1)
    {
        fuben=fuben*2.0;
        n++;
    }
    
    }
    int DtoB(int value)
    {
    
    int i=0;
    int n=0;
    int fuben=value;
    while(fuben)
    {
        fuben=fuben/2;
        n++;
    }
    fuben=value;
    for(i=0;i<n;i++)
    {
    string[i]=fuben%2;
    fuben=fuben/2;
    }
    for(i=n-1;i+1>0;i--)
     printf("%d",string[i]);
    
    return n;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥50 comsol稳态求解器 找不到解,奇异矩阵有1个空方程返回的解不收敛。没有返回所有参数步长;pid控制
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功