C 십진수이진수변 환기

무려 0 ~ 2147483647까지의 정수를 입력받아
최대 10000자리까지의 이진수를 출력하는 코드입니다

#include <stdio.h>
// #include <math.h>
// #include <limits.h>

int main(void)
{
    int N, mmok, nmg, i, count;

    // printf("%d\n", INT_MAX);
    printf("Enter Demical Number : ");
    scanf("%d", &N);

    char result[10000];

    mmok = N;

    for (i=0; mmok > 0; i++)
    {
        nmg = mmok % 2;
        mmok /= 2;

        if (nmg)
            *(result + i) = '1';
        else
            *(result + i) = '0';
    }

    count = i;

    for (i=count; i>=0; i--)
        printf("%c", *(result + i));

    return 0;
}

파이썬하면 쉽게 하던 것들이
C로 하니까 많이 어려워지네요
백준풀게 아니라
책에 연습문제부터 조금씩 풀어야 할 것 같습니다

1 Like
dec2bin :: Integral a => a -> String
dec2bin = go where
    go n
        | n <  0    = '-' : go (-n)
        | n == 0    = "0"
        | n == 1    = "1"
        | otherwise = go (div n 2) ++ go (mod n 2)
1 Like

int 범위로 입력받으면 최대 이진수는 31자리 아닌가요…?

1 Like

어… 그러네요…?
이제보니까 2의 거듭제곱 형태네요
더 간략하게 만들어 보겠심다

@Seaurchin_08 @익명2 두분 같은 분 아니죠?? ㅋㅋㅋ
마치 유희왕의 어둠의 유희랑 그냥 유희 같네요 이름 2로 끝나는것도 그렇고

1 Like

그럴리가요 ㅋㅋ
평생 함수형 언어에 손대본적도 없는데

이게 무야

1 Like

1 Like