CAFE

C 프로그래밍

숫자를 문자로 읽어주기 (1234 -> 천이백삼십사)

작성자별은빛나고|작성시간15.11.30|조회수594 목록 댓글 0
정수(0 <= n <= 2147483647) : 1234567890

십이억삼천사백오십육만칠천팔백구십


#include <stdio.h>
 
int main()
{
    char str[12= "\0";
    char *ill[] = {"영""일""이""삼""사""오""육""칠""팔""구"}; 
    int num, i, j, l, rest;
    
    printf("정수(0 <= n <= 2147483647) : ");
    scanf("%d", &num);                    // 정수 입력 
 
    sprintf(str, "%d", num);            // 문자열로 바꿈 
    
    if (num > 2147483647 || num < 0) {    // 유효값 확인 
        printf("범위 초과.\n");
        return 0;
    }
 
    for (i = 0; str[i]; i++);            // 자릿수 확인 
 
    l = i - 1;                                // 최대 길이 
        
    for (i = 0; i <= l; i++) {
        rest = l - i;                    
 
        if        (num > 0 && rest == 0 && str[i] == '0');    //  0이 아니면서 일의 자리가 0 
        else if (num > 0 && rest > 0 && str[i] == '0');        // 일의 자리가 아닌 모든 0        
        else if (rest > 0 && rest % 4 != 0 && str[i] == '1');    // 십의 자리 이상에서 1일 때 
        else
            printf("%s", ill[str[i]-'0']);    //                // 숫자 출력 
        
        if (rest == 0)    break;                                // 1의 자리까지 출력했으면 종료 
        else if (rest % 4 == 1 && str[i] != '0'printf("십");
        else if (rest % 4 == 2 && str[i] != '0'printf("백");
        else if (rest % 4 == 3 && str[i] != '0'printf("천");
        
        if (rest == 4 && num - (num / 100000000 * 100000000- num % 10000 != 0)
            printf("만");                // 천만 ~ 만 단위에 값이 있으면 
        else if (rest == 8printf("억");    // 억단위 이상이면 
    }
}
cs


다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼