티스토리 뷰

Study

자료구조론 과제물 1

생각많은 소심남 2010. 9. 26. 15:13


오랜만에 c언어를 하다보니 너무 버버벅되긴 하지만 그래도 재미는 있다.
근데 하다보니까 좀 짜증나는 오류가 발생한다.

#include <stdio.h>
#include <stdlib.h>

void main()
{
 char Person_Name[7];
 char charnum[7];
 int i=0;
 int Person_Year;
 int Person_Month;
 int Person_Day;
 int Person_Label=0;
 

 printf("안녕하세요?\n");
 printf("당신의 이름을 입력해주세요 : ");
 scanf("%s",Person_Name);

 printf("당신의 생년월일을 입력해주세요(예 1987년 4월 2일 - 870402 : ");
 /*while(i<7)
 {*/
  scanf("%s",charnum);
  /*i++;
 }*/

 Person_Year=((charnum[0]-48)*10+(charnum[1]-48)+1900);

 Person_Month=((charnum[2]-48)*10+(charnum[3]-48));

 Person_Day=((charnum[4]-48)*10+(charnum[5]-48));

 printf("%s님은 %d년 %d월 %d일 생이며, ",Person_Name,Person_Year,Person_Month,Person_Day);

 Person_Label=(Person_Year-1900)%12;

 switch(Person_Label)
 {
  case '0':
   printf("당신의 띠는 쥐띠입니다.");
   break;

  case '1':
   printf("당신의 띠는 소띠입니다.");
   break;

  case '2':
   printf("당신의 띠는 호랑이띠입니다.");
   break;

  case '3':
   printf("당신의 띠는 토끼띠입니다.");
   break;

  case '4':
   printf("당신의 띠는 용띠입니다.");
   break;

  case '5':
   printf("당신의 띠는 뱀띠입니다.");
   break;

  case '6':
   printf("당신의 띠는 말띠입니다.");
   break;

  case '7':
   printf("당신의 띠는 양띠입니다.");
   break;

  case '8':
   printf("당신의 띠는 원숭이띠입니다.");
   break;

  case '9':
   printf("당신의 띠는 닭띠입니다.");
   break;

  case '10':
   printf("당신의 띠는 개띠입니다.");
   break;

  case '11':
   printf("당신의 띠는 돼지띠입니다.");
   break;

 }

}

임시로 짠 내 코드다. 물론 전혀 지식이 없는 사람이라도 딱 보면 아 생년월일을 받고 동물띠를 출력하는 프로그램이구나 라는걸 알수 있을텐데.. 디버깅을 해보면 참 어이없는 결과가 나온다.

바로
Person_Label=(Person_Year-1900)%12;
이 부분이 계산이 안되고 그냥
Person_Label=0
이란 수치가 그냥 출력된다.
물론 이때문에 switch구문에서도 그냥 빠져나온다. 당연히 디폴트에 대한 수치가 없으니까..
왜.. 이 부분은 그냥 스킵이 되는 걸까..
지금 하루종일 이부분만 고민하고 있다.
이 부분만 해결하면 이제 좀 업글해서 숫자 입력시 문자삽입하면 오류 출력하는 구문을 집어넣으려고 하는데
일단 이게 되야지 참.

댓글