c·c++/c 프로그래밍

진법변환

바로이순간 2013. 4. 15. 11:21

#include <stdio.h>

int main() {

    // 정수 부분을 나타낼 변수로 n을 사용합니다.

    int i, j, n, base;

    // 2진법의 경우의 입력을 받을 변수입니다.

    char digit[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

    char out[20];

    double x, y, z;


    // 10진수의 입력입니다.

    printf("10진수 입력: ");

    scanf("%lf", &x);


    // 변환할 진수입력

    printf("바꿀진수: ");

    scanf("%d", &base);


    // 정수부부입니다.

    n=(int)x;

    // 소수점이하 부분입니다.

    x=x-(double)n;


    i=0;

    while(n>0) {

        out[i]=n%base;

        n/=base;

        i+=1;

    }

    i-=1;

    // ?진수의 정수부분 출력입니다.

    while(i>=0) {

        printf("%c", digit[out[i]]);

        i-=1;

    }

    // 소수점 출력입니다.

    printf(".");

    // 소수점이하 부분 출력입니다.

    // 최대 10자리만 출력하였습니다.

    i=0;

    while(i<10 && x>0.0) {

        x=x*base;

        if(x>=1.0) {

            printf("%c", digit[(int)x]);

            x=x-(double)(int)x;

       }

        else printf("0");

        i=i+1;

    }


    return 0;

}

'c·c++ > c 프로그래밍' 카테고리의 다른 글

369게임  (0) 2013.04.16
소수가 아닌수의 합  (0) 2013.04.16
그냥, 마름모+삼각형  (0) 2013.04.13
각자리의 수 출력하기   (0) 2013.04.11
합집합, 교집합, 차집합  (0) 2013.04.11