소프트웨어/C

[2003년 기말 10번] switch case 문 응용

카켈 2007. 2. 5. 08:25




1. 목적
  - 경우에 따라 분기하는 제어문인 switch-case 문장을 이해한다.

2. 문제
  - no_10.txt 파일을 읽어 들여 각각 소문자 모음의 갯수와 알파벳 숫자, 전체 글자 수를 출력한다.
  - 모음을 구분하는 문장은 switch-case 문장을 쓰면 편리하다.
  - 출력형식

문자 'a' 의 개수 : 1204
문자 'e' 의 개수 : 2086
문자 'i' 의 개수 : 1154
문자 'o' 의 개수 : 1393
문자 'u' 의 개수 : 565
알파벳 문자의 개수 : 17954
전체 문자의 개수 : 26422
Press any key to continue

3. 이해
  - switch-case 분기 구문을 따로 이해할수 있는가?
  - 파일 입력 및 글자의 성질을 이해 할수 있는가?

4. 코드

#include <stdio.h>
#include <ctype.h>

int main()
{
 FILE *fp;
 char instr[255] = {0};
 long a,e,i,o,u,j;
 long total,alpha;

 a = e = i = o = u =j = total = alpha = 0;

 fp = fopen("no_10.txt","r");
 while(fgets(instr,255,fp))
 {
  j = 0;
  while(instr[j] != '\n')
  {
   if( isalpha(instr[j]) ) alpha++;

   switch(instr[j])
   {
   
    case 'a':
     a++;
     total++;
     break;

    case 'e':
     e++;
     total++;
     break;

    case 'i':
     i++;
     total++;
     break;

    case 'o':
     o++;
     total++;
     break;

    case 'u':
     u++;
     total++;
     break;
     
    default:
     total++;
     break;
   }

   j++;

  }

 }

 printf("문자 'a' 의 개수 : %d\n",a);
 printf("문자 'e' 의 개수 : %d\n",e);
 printf("문자 'i' 의 개수 : %d\n",i);
 printf("문자 'o' 의 개수 : %d\n",o);
 printf("문자 'u' 의 개수 : %d\n",u);
 printf("알파벳 문자의 개수 : %d\n",alpha);
 printf("전체 문자의 개수 : %d\n",total);

 fclose(fp);

 return 0;
}

5. 해설
  - 파일 구조체 알파벳 구문 이해는 이전 문제에 자세히 예제로 나와 있습니다.
  - switch case 구문은 조건에 따라 분기되어 수행된후 break 문으로 분기문을 빠져 나갑니다.
   특정 조건에 만족하지 않으면 default 문에서 수행되어 break 을 통해 빠져 나갑니다.
  - 한 문장을 읽었을때 줄내림 문자('\n') 가 나오기 전까지 계속 수행하게 while 조건을 만들었습니다.
  - 문제에 주어진 no_10.txt 는 임의로 넣었습니다.

6. 참고
  - switch-case 문 예