이번에는 입력 된 수가 홀수인지 짝수인지를 출력하는 프로그램을 실습하겠습니다. 제목만 보고 우선 직접 상상력을 동원하여 코딩해보세요. 안되시는 분들은 바로 읽으시고 할 수 있는 분들은 직접 만들어 본뒤 post를 읽고 유사한지 차이가 있는지 비교해 보세요. 그래야 실력이 늘어요.
먼저 숫자를 하나 입력을 받기 때문에 scanf()함수를 사용합니다.
int inputVal;
scanf("%d",&inputVal);
어제와 동일하지요. 뭔가 입력을 한다면 scanf()함수 자연스럽게 이제 코딩이 되어야 합니다.
다음으로, 입력 된 수가 even(짝수), odd(홀수)인지 어떻게 구분할까요. 홀짝은 바로 2로 나누었을 때 나머지가 0이면 짝수이고 1이면 홀수 입니다. 바로 퍼센트(%) 나머지 구하는 연산으로 2로 나눈 나머지를 구하변 됩니다.
inputVal%2 =>나머지 값 (0 or 1 나옴)
그 다음으로 나머지 값에 따라 0이면 짝수라고 출력하고 1이면 호수라고 출력하면 됩니다. 이건 둘 중 하나를 선택하는 조건문을 사용하면 되겠죠. 두개 중 하나 선택이라 그러면 머리속에서 IF문 쓰면 되겠지 하고 떠올려야 합니다.
종합해보면,
printf("하나의 수를 입력하시오? ");
scanf("%d",&inputVal);
if(inputVal%2==0) printf("%d는 짝수입니다.\n",inputVal);
else printf("%d는 홀수입니다.\n",inputVal);
이렇게 완성됩니다.
다른식 접근을 해보겠습니다. 이번에는 나눈 나머지 값을 새로운 state변수에 저장하겠습니다. 0 or 1의 값을 저장되는데 이 값은 배열의 위치값으로 활용합니다.
char str[2][10] = {"짝수","홀수"};
str[0]은 "짝수" 문자열이고, str[1]은 "홀수"문자열 입니다. 즉, 0 or 1은 위치값으로 설정하면 출력 될 "짝수"와 "홀수"를 배열 변수로 만들 수 있습니다. 그럼 이걸 이용해서 코딩을 바꿔 볼까요.
int inputVal;
int state;
char str[2][10] = {"짝수","홀수"};
state=inputVal%2;
printf("%d는 %s입니다.\n",inputVal,str[state]);
보시면 나눈 나머지 값이 str[i]로 "짝수","홀수"를 출력 할 수 있게 되었습니다.
이제 이 두가지 형태를 같이 코딩을 해봅시다. 실행 결과가 정상적으로 확인 해보셔야 이해가 빠르겠죠.
[전체소스]
#include
#include
int main(int argc, char *argv[]) {
int inputVal;
char str[2][10]={"짝수","홀수"};
int state;
printf("하나의 수를 입력하시오? ");
scanf("%d",&inputVal);
if(inputVal%2==0) printf("%d는 짝수입니다.\n",inputVal);
else printf("%d는 홀수입니다.\n",inputVal);
state=inputVal%2;
printf("%d는 %s입니다.\n",inputVal,str[state]);
system("pause");
return 0;
}
[결과]
보시면 90을 입력하면 두개의 짝수입니다라는 문자열이 출력 됩니다. 두가지 방식이 정상적으로 처리 된 것을 눈으로 확인 하실 수 있을 거에요.
오늘은 나머지 연산자하고 if문으로 사용하여 홀수 or 짝수 인지를 확인 해봤습니다. 그리고 나머지 값을 변수에 넣고 출력 문자열을 배열변수에 세팅 한 값을 토대로 입력 값이 홀수 or 짝수인지도 확인 해봤습니다.