문제). 
10진수 데이터를 입력받아서 2진수, 8진수, 16진수로 변환하는 재귀호출함수를 구현하시오.

 

 

실행 예1).

 

입력)

10진수 정수 입력: 25

 

결과).

2진수: 11001
8진수: 31
16진수: 19

 

 

 

 

 

 

 

 

 

 

 


답은 아래에... ↓

 

 

 

 

 

 

 


 

 

 

 

 

스스로 풀어보시고... ↓

 

 

 

 

 

 


 

 

 

 

 

 

아래 답과 비교해보세요. ↓

 

 

 

 

 

 


프로그램 소스

#include <stdio.h>

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

/* 10 진수를 2 ~ 16진수로 변한하는 함수 */
void decimal_to_base_number(long num, int base)
{
	long temp = num;
	
	if(base < 2 || base > 16) {
		printf("2 ~ 16진수만 지원 가능합니다.\n");
		return;
	}
	if(num <= 0) {
		return;
	}
	temp /= base;
	
	decimal_to_base_number(temp, base);
	
	printf("%c", NUMBERS[num % base]);
}

int main(void)
{
    long number;
   
    printf("10진수 정수 입력: ");
    scanf("%ld", &number);

	printf("\n2진수: ");
	decimal_to_base_number(number, 2);
	
	printf("\n8진수: ");
	decimal_to_base_number(number, 8);

	printf("\n16진수: ");
	decimal_to_base_number(number, 16);
	
    return 0;
}

 

 

 

 

 

블로그 이미지

사용자 자연&사람

행복한 개발자 programmer since 1995.

댓글을 달아 주세요