C언어 문제/수학 문제
[재귀함수] 10진수를 2진수, 8진수, 16진수로 변환하기
자연&사람
2021. 10. 27. 18:02
반응형
문제).
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;
}
반응형