문자열로 숫자가 입력된 경우는 영어로 출력하고 숫자를 영어로 입력한 경우는 숫자로 출력하는 함수와 프로그램을 작성하시오
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
다음검색