1. 목적
- 난수 생성을 할줄 안다.
2. 문제 (점수 : 40 점)
- 컴퓨터가 생성한 1 ~ 10 사이의 임의의 번호를 맞추는 프로그램을 만들어라.
- 힌트 : rand() % (최대 - 최소 + 1 ) + 최대
- 입력 값을 확인하여 "크다" "작다" 의 응답을 확인해 줘야 한다.
- 출력 화면
임의의 값을 생성 했습니다.
값을 예상해 보세요 : 4
더 작은 값 예상해 보세요
값을 예상해 보세요 : 3
정확히 맞추셨습니다. 생성한 값은 3 였습니다.
Press any key to continue
3. 이해
- 난수를 해당 범위내에 입력을 시킬줄 아는가?
- 크고 작음을 판단할 줄 아는가?
4. 코드
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int in, gen;
in = gen = 0;
srand((unsigned)time(NULL));
gen = rand() % 10 + 1;
puts("임의의 값을 생성 했습니다.\n");
while(in != gen)
{
printf("값을 예상해 보세요 : ");
scanf("%d", &in);
printf(in < gen ? "더 큰값을 예상해 보세요.\n" : in > gen ? "더 작은 값 예상해 보세요\n" : "");
putchar('\n');
}
printf("정확히 맞추셨습니다. 생성한 값은 %d 였습니다.\n", gen);
return 0;
}
5. 해설
- srand 함수로 rand 함수의 초기화를 했습니다.
- 삼항 연산자로 대소 판정을 단순화 했습니다.
- while 문으로 같을때 까지 반복 했습니다.
6. 참고
- 삼항 연산자 문제
- rand 내부 검색