CAFE

C 프로그래밍

숫자는 영어로 영어는 숫자로 출력

작성자별은빛나고|작성시간15.10.19|조회수6,472 목록 댓글 0

문자열로 숫자가 입력된 경우는 영어로 출력하고 숫자를 영어로 입력한 경우는 숫자로 출력하는 함수와 프로그램을 작성하시오
 ex) "1234"가 입력된 경우는 출력은 "one two three four"로, "zero one five six"가 입력된 경우는 출력을 "0156"으로 출력한다.

 

-요구사항-
1 숫자를 영어로 바꾸는 함수와 영어를 수자로 바꾸는 함수를 각각만들어라.
2 영어를 입력할떄는 반드시 소문자로 입력하며 단어와 단어는 공백문자로 구별하라
3 영어를 숫자로 바꾸는 함수에서 "strtok"함수를 이용하라
4 숫자를 영어로 바꾸기 위해 영어에 해당하는 배열을 레그드 배열로 선언하고 전역변수로 선언하라 

 

#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
void change_num2str(char *buf);
void change_str2num(char *buf);
 
char *str[] = {"zero""one""two""three""four",
                "five""six""seven""eight""nine"};
        // 이렇게 선언하는 것을 ragged 배열이라고 합니다.
 
main ()
{
    char buf[100= "\0";
    
    printf("숫자나 영문자를 입력하세요 : ");    
 
    gets(buf);    // 문자열 받기 
 
    if (isdigit(buf[0])) change_num2str(buf);    // 숫자로 시작되면 
    else if (isalpha(buf[0])) change_str2num(buf);    // 문자로 시작되면 
    else printf("wrong valuse!\n");    // 이저 저도 아니면 
    
    printf("press anykey to continue...");    getchar();
}
 
void change_num2str(char *buf)
{
    int i;
    
    while (buf[i]) printf("%s ", str[buf[i++- '0']);
}
 
void change_str2num(char *buf)
{
    int i;
    char *p;
 
    p = strtok(buf, " ");    // 최초 단어 추출 
 
    while (p != NULL) {
        for (i = 0; i < 10; i++) {    // 문자열 탐색 
            if (strcmp(p, str[i]) == 0) {    // 문자열을 찾으면 
                printf("%d", i);    // 숫자로 출력 
                break;    // 찾았으므로 다음으로 넘어감 
            }
        }
        p = strtok(NULL, " ");    // 다음 단어 검색 
    }
 
    printf("\n");
}
cs


숫자나 영문자를 입력하세요 : 1234

one two three four


숫자나 영문자를 입력하세요 : one two three four

1234

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

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼