[C] random함수를 사용하여 1~100까지의 정수 맞추기

Haeun Noh·2022년 12월 5일
0

C언어_예제

목록 보기
17/19

1205


random()함수를 사용하여 1~100까지의 정수 중 랜덤으로 나오는 값을 맞추시오.

70수 입력 : 69
더 높습니다.

수 입력 : 90
더 낮습니다.

수 입력 : 89
더 낮습니다.

수 입력 : 78
더 낮습니다.

수 입력 : 76
더 낮습니다.

수 입력 : 69
더 높습니다.

수 입력 : 70
70이 맞습니다.
Good!

조건

  • random()을 사용할 것
  • 4번만에 맞추면 Great
  • 8번만에 맞추면 Good
  • 그 이후에 맞추면 노력하세요를 출력할 것

소스 코드

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

int main(void) {
	srand((unsigned int)time(NULL));

	int random = rand() % 100 + 1;
	int num = 0, cnt = 1;
	printf("%d\n", random);//테스트용 출력문

	do {
		printf("수 입력 : ");
		scanf_s("%d", &num);

		if (random == num) {
			printf("%d이 맞습니다.\n", num);
			if (cnt <= 4) printf("Great!\n");
			else if (cnt <= 8) printf("Good!\n");
			else printf("노력하세요!\n");
			return;
		}
		else if (random > num) printf("더 높습니다.\n\n");
		else printf("더 낮습니다.\n\n");
		cnt++;

	} while (random != num);

	return 0;
}

소스 풀이

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

int main(void) {
	srand((unsigned int)time(NULL));

	int random = rand() % 100 + 1;

#include <stdio.h> #include <stdlib.h> #include <time.h>를 작성하고,
srand((unsigned int)time(NULL))random()을 사용할 기본 세팅을 마친다.

random 변수에 1~100까지의 랜덤 정수를 저장한다. +1을 하는 이유는 100으로 나누면 0~99까지 나오기 때문이다.


	int num = 0, cnt = 1;
	printf("%d\n", random);//테스트용 출력문

사용자가 추측하는 변수인 num을 초기화 시킨다.
사용자가 몇 번만에 맞췄는지를 나타날 변수인 cnt를 초기화 시킨다. 초기값을 1로 준 이유는 아래 부분에서 if문 바로 처음에 정답 여부를 체크하기 때문이다. 만약 cnt의 초기값을 0으로 주었으면 첫 번째만에 맞혔을 때에 0번째만에 맞췄다고 프로그램이 인식하게 될 것이다.

그 뒤 보다 빠른 테스트를 위해 현재 들어있는 random변수를 출력한다. 이 부분은 단지 테스트를 위한 용도이므로 없어도 상관없다.


	do {
		printf("수 입력 : ");
		scanf_s("%d", &num);

		if (random == num) {
			printf("%d이 맞습니다.\n", num);
			if (cnt <= 4) printf("Great!\n");
			else if (cnt <= 8) printf("Good!\n");
			else printf("노력하세요!\n");
			return;
		}
		else if (random > num) printf("더 높습니다.\n\n");
		else printf("더 낮습니다.\n\n");
		cnt++;

	} while (random != num);

do-while문을 이용해 randomnum이 다르면 계속 반복하도록 만든다.


		printf("수 입력 : ");
		scanf_s("%d", &num);

사용자가 추측하는 수를 num변수에 저장한다.


		if (random == num) {
			printf("%d이 맞습니다.\n", num);
			if (cnt <= 4) printf("Great!\n");
			else if (cnt <= 8) printf("Good!\n");
			else printf("노력하세요!\n");
			return;
		}

만약 사용자가 추측한 수인 num과 랜덤으로 주어진 random이 맞았다면 해당 수가 맞다는 출력문을 작성한다.

만약 시도한 횟수인 cnt4회 이하라면 Great를 출력한다.
시도한 횟수인 cnt8회 이하라면 Good을 출력한다.
시도한 횟수인 cnt9회 이상이라면 노력하세요.를 출력한다.

수를 맞췄기 때문에 바로 if문에서 return을 하여 프로그램을 종료한다. while부분까지 가지 않는 이유는 조금이라도 더 빠르고 적은 데이터를 사용하여 진행하려고 했기 때문이다.


		else if (random > num) printf("더 높습니다.\n\n");
		else printf("더 낮습니다.\n\n");
		cnt++;

만약 사용자가 입력한 수인 numrandom변수보다 크다면 더 높습니다.를 안내한다.
사용자가 입력한 수인 numrandom변수보다 작다면 더 낮습니다.를 안내한다.

맞추지 못했으므로 시도한 횟수인 cnt++시켜준다.


실행 결과

95
수 입력 : 34
더 높습니다.

수 입력 : 96
더 낮습니다.

수 입력 : 90
더 높습니다.

수 입력 : 91
더 높습니다.

수 입력 : 95
95이 맞습니다.
Good!


profile
기록의 힘을 믿는 개발자, 노하은입니다!

0개의 댓글