본문 바로가기

C programming/[Objection]

진수 변환

728x90
반응형

기수 변환 프로그램(2진수~32진수)

#include  <stdio.h>
#include  <string.h>
#include  <stdlib.h>

int card_convr(unsigned x,int n,char arr[]){
    /**
     x: 바꾸고자하는 진수
     n: 입력받은 숫자(진수 변환할 숫자)
     arr: 배열이름
     */
    char dchar[] = "0123456789ABCDEFGHIJKLMNOPRSTUVWXYZ";
    int digits = 0;
    if(x == 0)arr[digits++] = dchar[0];
    else
        while(x){
            arr[digits ++] = dchar[x%n];
            x/=n;
        }
    return digits;
}

int main(){
    int x,n,rep;
    char arr[37]={0};
    printf("10진수를 기수변환합니다.\n변환할 숫자를 입력하세요: ");scanf("%d",&x);
    do{printf("변환할 기수를 입력하세요(2-36): ");scanf("%d",&n);}while(n<2 || n>36);
    rep = card_convr(x,n,arr);

    // printf(">%d",rep);
    printf("변환된 값을 출력합니다: ");
    for(int i=rep-1;i>=0;i--)printf("%c",arr[i]);


}

 기수 변환 과정 출력 프로그램

#include  <stdio.h>
#include  <string.h>
#include  <stdlib.h>

int card_convr(unsigned x,int n,char arr[]){
    /**
     n: 바꾸고자하는 진수
     x: 입력받은 숫자(진수 변환할 숫자)
     arr: 배열이름
     */
    char dchar[] = "0123456789ABCDEFGHIJKLMNOPRSTUVWXYZ";
    int digits = 0;
    if(x == 0)arr[digits++] = dchar[0];
    else
        while(x){
            printf("%d|%6d ... %d\n",n,x,x%n);
            printf(" +------\n");
            arr[digits ++] = dchar[x%n];
            x/=n;
        }
    return digits;
}

int main(){
    int x,n,rep;
    char arr[37]={0};
    printf("10진수를 기수변환합니다.\n변환할 숫자를 입력하세요: ");scanf("%d",&x);
    do{printf("변환할 기수를 입력하세요(2-36): ");scanf("%d",&n);}while(n<2 || n>36);
    rep = card_convr(x,n,arr);

    // printf(">%d",rep);
    printf("변환된 값을 출력합니다: ");
    for(int i=rep-1;i>=0;i--)printf("%c",arr[i]);


}
728x90
반응형

'C programming > [Objection]' 카테고리의 다른 글

유클리드 호제법: 재귀  (0) 2022.01.14
시간 측정 함수  (0) 2022.01.10
Shift 함수 / 시간 계산  (0) 2022.01.10
문자열 처리함수  (0) 2022.01.08
난수 생성 라이브러리  (0) 2022.01.04
댓글