Page 118 고등학교 프로그래밍 교과서
P. 118
예제 문자열을 입력받아 문자열에 포함된 각 문자의 출현 횟수를 출력하는 프로그
램을 작성해 보자(키보드 입력은 소문자만 입력받는다고 가정한다.).
프로그램
01 #include
02 int main( )
03 {
04 char str[100]; 키보드로 입력받을 문자열을 저장할 배열을 선언함.
05 int alphabet[26] = { 0 };
06 int i = 0;
07 scanf("%s", str);
08 while (str[i] != '\0')
09 { 소문자 'a'의 코드값이 97이
10 ++alphabet[str[i] - 97]; 므로 'a'의 횟수는 배열 요소
11 i++; 의 첫 번째 칸에 저장됨.
12 }
13 for (i = 0; i < 26; i++)
14 {
15 if (alphabet[i] != 0)
16 printf("%c : %d\n", i + 97, alphabet[i]);
17 }
18 return 0;
19 }
실행 결과
hello
e : 1
h : 1
l : 2
o : 1
프로그램 설명
08 while 반복문을 사용한 이유는 사용자가 입력할 문자열의 길이를 예측할 수
없기 때문이다. 조건에서 ‘\0’ 문자가 아닐 때까지 반복하는 의미는 문자열의
마지막이 ‘\0’ 문자로 끝나기 때문이다.
10 문자열 요소 값에서 97을 빼면(97)은 아스키 코드값으로 소문자 a를 나타냄.)
alphabet 배열의 요소 위치를 나타낸다. 이 값을 1증가시킨다.
15 alphabet 배열의 카운팅 된 숫자가 0이 아니라면 알파벳 문자와 개수를 출력
한다. 13번 라인에서 for 반복문을 사용한 이유는 고정된 크기의 배열의 요소
를 검사하는 것으로 반복의 횟수를 예측할 수 있기 때문이다.
116 Ⅱ. C 프로그래밍의 기초
(책)2015프로그래밍-교과서3차심의본 본문.indb 116 2017-09-05 오후 4:16:16