2022-03-11-C-Chap5-문제12
3 6 9!
3 6 9 게임 규칙을 간단히 구현해보자! 다음 조건에 맞추어 결과화면과 같이 출력이 되도록 프로그램을 작성하십시오. (단, 박수는 ‘x’로 정한다.)
조건
- 입력 받는 값은 문자(char)형이며, 난수 발생 범위는 정수 0부터 8사이의 숫자이다.
- 난수 발생은 stdlib.h 및 time.h 헤더의 srand()함수와 rand()함수 및 time()함수를 사용한다.
- 문자(char)형으로 입력 받은 값을 정수형 값과 비교할 때는, atoi() 함수를 사용하여 정수형으로 변환시킨 후 비교한다. 이 때, atoi함수의 매개 변수는 *char형으로, 즉 char형 변수 str이 있을 때 atoi(&str)과 같이 사용할 수 있다.
- 연달아 2번 연속으로 값을 입력 받으며, 3 6 9 게임 규칙에 따라 ‘정답!’또는 ‘틀림..’ 등 판단을 할 수 있는 문자열을 출력시킨다.
- scanf() 함수를 사용하여 두 번 연속으로 값을 입력 받을 때는, 이 사이에 rewind(stdin)함수를 사용해서 입력 버퍼 스트림을 초기화 시켜준다.
입력 예
x // 난수: 2
5
출력 예
정답!
틀림..
Source
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void) {
int num1 = 0;
char num2 = 'A';
srand(time(NULL));
num1 = rand() % 8 + 1;
printf("* 박수: 'x'\n\n");
printf("%d > ", num1);
scanf("%d", &num2);
(atoi(&num2) == num1 + 1) ? ((atoi(&num2) == 3 || atoi(&num2) == 6 || atoi(&num2) == 9) ? printf("오답\n") : printf("정답\n")) :
(((num1 + 1) == 3 || (num1 + 1) == 6 || (num1 + 1) == 9) ? printf("정답\n") : printf("오답\n"));
rewind(stdin);
printf("\n");
num1 = rand() % 8 + 1;
printf("%d > ", num1);
scanf("%d", &num2);
(atoi(&num2) == num1 + 1) ? ((atoi(&num2) == 3 || atoi(&num2) == 6 || atoi(&num2) == 9) ? printf("오답\n") : printf("정답\n")) :
(((num1 + 1) == 3 || (num1 + 1) == 6 || (num1 + 1) == 9) ? printf("정답\n") : printf("오답\n"));
return 0;
}