Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

숫자를 단어로 변환하는 C 프로그램 완벽 가이드

개요

프로그래밍에서 한 자리 숫자를 해당하는 영어 단어로 바꿔야 하는 경우가 종종 있습니다. 예를 들어 숫자 5가 입력되면 "Five"를 출력하고, 6이 입력되면 "Six"를 출력해야 합니다. 만약 입력값이 0에서 9 사이의 범위를 벗어난다면 적절한 안내 메시지를 반환하도록 처리해야 합니다.

이번 글에서는 C 언어를 사용해 이 문제를 해결하는 방법을 단계별로 살펴보겠습니다.

문제 해결 접근 방법

가장 기본적인 방법은 조건문(if-else)을 활용하는 것입니다. 알고리즘은 다음과 같습니다.

  • solve() 함수를 정의하고 숫자 d를 매개변수로 전달합니다.
  • 입력값이 0보다 작거나 9보다 크면 "Beyond range of 0 - 9"를 출력합니다.
  • d가 0이면 "Zero", 1이면 "One", 2이면 "Two"와 같이 9("Nine")까지 차례대로 비교하여 해당 단어를 출력합니다.

C 언어 구현 예제

다음 예제를 통해 실제 구현 방법을 확인해 보겠습니다.

#include <stdio.h>

void solve(int d){
    if(d < 0 || d > 9){
        printf("Beyond range of 0 - 9");
    }else if(d == 0){
        printf("Zero");
    }else if(d == 1){
        printf("One");
    }else if(d == 2){
        printf("Two");
    }else if(d == 3){
        printf("Three");
    }else if(d == 4){
        printf("Four");
    }else if(d == 5){
        printf("Five");
    }else if(d == 6){
        printf("Six");
    }else if(d == 7){
        printf("Seven");
    }else if(d == 8){
        printf("Eight");
    }else if(d == 9){
        printf("Nine");
    }
}

int main(){
    int d = 6;
    solve(d);
    return 0;
}

참고: 범위 검사 조건은 반드시 OR 연산자(||)를 사용해야 합니다. 하나의 값이 동시에 0보다 작고(d < 0) 9보다 클 수는(d > 9) 없기 때문에 AND 연산자(&&)를 사용하면 조건이 항상 거짓이 되어 범위 검사가 제대로 작동하지 않습니다.

실행 결과

입력:

6

출력:

Six

더 효율적인 방법: 배열 활용하기

if-else 문을 여러 번 나열하는 대신 문자열 배열을 이용하면 코드를 훨씬 간결하게 만들 수 있습니다.

#include <stdio.h>

void solve(int d){
    char *words[] = {"Zero", "One", "Two", "Three", "Four",
                      "Five", "Six", "Seven", "Eight", "Nine"};
    if(d < 0 || d > 9){
        printf("Beyond range of 0 - 9");
    }else{
        printf("%s", words[d]);
    }
}

int main(){
    int d = 6;
    solve(d);
    return 0;
}

배열의 인덱스가 숫자 값과 일치하므로 별도의 조건 비교 없이 한 줄로 결과를 얻을 수 있습니다. 덕분에 코드 길이가 크게 줄어들고 가독성과 유지보수성도 함께 향상됩니다.

마무리

이처럼 조건문 또는 배열을 활용하면 한 자리 숫자를 단어로 손쉽게 변환할 수 있습니다. C 언어 초보자라면 먼저 if-else 구조로 기본 로직을 익힌 뒤, 배열 방식으로 코드를 리팩토링해 보는 학습 순서를 추천합니다.