C语言问题求解答啊跪求

图中这道编程有问题,没考虑到小数部分,求证去图片图片

c

1个回答

你自己调调格式吧

 #include<stdio.h>

//转化为2进制
void showbitZ(int n) {
    if (n > 1) {
        showbitZ(n / 2);
    }
    printf("%d", n % 2);
}
void showbitL(float f,int c) {
    if (c == 0)return;
    float twice = f * 2;
    int tmp = (int)twice;
    printf("%d", tmp);
    showbitL(twice - tmp, --c);
}
void showbit(int n, float f) {
    showbitZ(n);
    printf(".");
    showbitL(f,8);
}

//转化为8进制
void showOctZ(int n) {
    if (n > 7) {
        showOctZ(n / 8);
    }
    if (n == 0)return;
    printf("%d", n % 8);
}
void showOctL(float f, int c) {
    if (c == 0)return;
    float twice = f * 8;
    int tmp = (int)twice;
    printf("%d", tmp);
    showOctL(twice - tmp, --c);
}
void showOct(int n, float f) {
    showOctZ(n);
    printf(".");
    showOctL(f, 8);
}

//转化为16进制
char c_16[] = { '0', '1', '2', '3',
             '4', '5', '6', '7',
             '8', '9', 'A', 'B',
             'C', 'D', 'E', 'F'};
void showHexZ(int n) {
    if (n > 15) {
        showHexZ(n / 15);
    }
    if (n == 0)return;
    printf("%c", c_16[n % 15]);
}
void showHexL(float f, int c) {
    if (c == 0)return;
    float twice = f * 16;
    int tmp = (int)twice;
    printf("%c", c_16[tmp]);
    showOctL(twice - tmp, --c);
}
void showHex(int n, float f) {
    showHexZ(n);
    printf(".");
    showHexL(f, 8);
}

void main() {
    float shu = 0;
    int zhengshu = 0;
    printf("请输入一个十进制数:");
    scanf("%f", &shu);
    zhengshu = (int)shu;
    shu -= zhengshu;
    showbit(zhengshu,shu);
    printf("\n");
    showOct(zhengshu, shu);
    printf("\n");
    showHex(zhengshu, shu);
    printf("\n");
}

图片说明

SeaTalks
SeaTalks 回复qq_36519444: 现在QQ不常上,现在比较忙,发我邮箱(myway2@sina.cn)吧,我抽时间回复,祝好!
3 年多之前 回复
qq_36519444
qq_36519444 不在嘛?
3 年多之前 回复
qq_36519444
qq_36519444 有QQ吗方便联系一下
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问