三千芳华 发表于 2018-6-4 15:33:11

自己编写的十进制转二进制,有问题却照不出来啊

#include<stdio.h>
int main()
{
        int y,x,i,num;
        scanf("%d",&x);
        for(i=0;x>=1;i++)
        {
                y=x%2;
                num=y;
                x/=2;
        }
        for(;i>=0;i--)
        {
                printf("%d",num);
        }
        getchar();
        return 0;
}

这个输入2得6110,输入3得6111,而8得01000,多了个前缀0,这是咋回事啊?自己搞了半天没发现错的地方,唉╮( ̄▽ ̄")╭

人造人 发表于 2018-6-4 15:53:00

int y,x,i,num;

num 有多少个元素?

人造人 发表于 2018-6-4 15:53:35

有 i 个元素?
那么 i 等于几?

BngThea 发表于 2018-6-4 15:59:37

int num 进行初始化的时候没有指明i的长度

三千芳华 发表于 2018-6-4 16:10:56

人造人 发表于 2018-6-4 15:53
有 i 个元素?
那么 i 等于几?

因为无法确定输入的数变为2进制会是几位,就这样写了。
而且我记得数组可以是num[ i ]这样啊。
我现在有点蒙{:10_266:},容我缓缓

人造人 发表于 2018-6-4 16:13:44

三千芳华 发表于 2018-6-4 16:10
因为无法确定输入的数变为2进制会是几位,就这样写了。
而且我记得数组可以是num[ i ]这样啊。
我现 ...

的确可以这样写,但前提是 i 的值是确定的

三千芳华 发表于 2018-6-4 16:25:55

人造人 发表于 2018-6-4 16:13
的确可以这样写,但前提是 i 的值是确定的

我这个该咋改?{:10_282:}想不出办法了

人造人 发表于 2018-6-4 16:47:23

三千芳华 发表于 2018-6-4 16:25
我这个该咋改?想不出办法了

#include <stdio.h>
#include <stdint.h>

int main(void)
{
        char str;
        char *p = str;
        uint32_t num;
       
        scanf("%u", &num);
        for(uint32_t mask = 0x80000000; mask != 0; mask >>= 1)
        {
                if(mask & num)
                        *p++ = '1';
                else
                        *p++ = '0';
        }
        *p = '\0';

        p = str;
        while(*p == '0')
                ++p;

        while(*p != '\0')
                putchar(*p++);

        printf("\n");
       
        return 0;
}

三千芳华 发表于 2018-6-4 16:56:36

人造人 发表于 2018-6-4 16:47


看来我还有得学{:10_324:},现在就我这实力砸破脑子都想不出来这样干
页: [1]
查看完整版本: 自己编写的十进制转二进制,有问题却照不出来啊