정보처리기사 실기 시험 기출 문제 - 이진수 변환 알고리즘
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!
문제
다음 C 프로그램이 실행되었을 때의 동작을 설명하고, 출력 결과를 예측하시오.
소스 코드 파일명: binary_to_decimal.c
#include <stdio.h>
main() {
int input = 101110;
int di = 1;
int sum = 0;
while (1) {
if (input == 0) break;
sum = sum + (input % 10) * di;
di = di * 2;
input = input / 10;
}
printf("%d", sum);
}
입력 예시
이 프로그램은 사용자로부터 입력을 받지 않습니다.
출력 예시
46
해설
이 프로그램은 C 언어를 사용하여 이진수를 십진수로 변환하는 알고리즘을 구현합니다.
input
변수는 이진수101110
을 십진수 형식으로 저장하고 있으며, 이진수의 각 자리를 십진수로 변환하는 과정을 진행합니다.di
변수는 1에서 시작하여 각 반복마다 2의 거듭제곱으로 증가합니다 (2^0, 2^1, 2^2, 등).sum
변수는 이진수를 십진수로 변환하는 과정에서 계산된 결과를 저장합니다.- 무한 루프 안에서,
input
이 0이 될 때까지 각 자리 수를 추출하고, 그 값을di
에 해당하는 2의 거듭제곱과 곱한 뒤sum
에 더합니다. 이후input
을 10으로 나누어 다음 자리수로 이동합니다. - 모든 자리 수를 처리한 후,
sum
에 저장된 값은 이진수101110
을 십진수로 변환한 결과46
이 됩니다. - 마지막으로
printf
함수를 통해 변환된 십진수 값을 출력합니다.
이 문제는 이진수를 십진수로 변환하는 기본적인 C 언어 프로그래밍 기술을 평가하는 데 사용됩니다.