ProgrammingLanguage/C언어

C언어 | 무한루프 예제

씽쌩쏭 2021. 2. 14. 17:37
728x90

✅ 문제 : 무한루프 / 맞추면 탈출

 

사용자가 프로그램에서 생성한 랜덤 넘버를 몇 번 만에 맞췄는지를 표시하는 프로그램을 작성하시오.

 

- 랜덤 넘버는 -50 이상 50 이하의 정수형 난수이다.

 

실행 예시)

예측값: 0
랜덤 넘버는 좀 더 작은 값입니다. 다시 시도해주세요.
예측값: -9
랜덤 넘버는 좀 더 큰 값입니다. 다시 시도해주세요.
예측값: -1
정답입니다. 총 3회만에 맞추셨습니다.

 

랜덤 넘버 생성방법:

 

rand() : 하나의 난수 생성, 일정

(난수의 범위 : 0 ~ RAND_MAX)

 

srand() : 시간 값을 매개로 초기화 시 일정X 불규칙적 난수 생성됨

 

int rand(void);
void srand( unsigned int seed);

 

사용법

 

i = rand()%n
//  0 ~ n - 1 범위의 난수를 i에 대입

i = rand()%n + m
// 0 + m ~ n - 1 + m 범위의 난수를 i에 대입

i = rand()%n * m
// 0 ~ n - 1 으로 나올 수 있는 수에 m을 곱한 수를 i에 대입

 

 

코드

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h> //rand() 함수 포함 라이브러리
#include <time.h> //시간함수 라이브러리

int main() {
	int a; // 랜덤넘버
	int b = 0; // 예측값
	int c = 1; //시행 횟수
	srand(time(NULL)); //랜덤넘버 항상 다르게 나오기
	a = rand() % 101 - 50; //랜덤넘버 생성(-50부터 +50까지)

		printf("예측값: ");
		scanf("%d", &b); // 예측값 받기

	while (a!=b) { // 예측값 아닐경우
		while (a > b) { // 예측값이 랜덤넘버보다 작을 때
			printf("랜덤 넘버는 좀 더 큰 값입니다. 다시 시도해주세요.\n");
			c++;
			printf("예측값: ");
			scanf("%d", &b);
			break;
			}
		while (a < b) { // 예측값이 랜덤넘버보다 클 때
			printf("랜덤 넘버는 좀 더 작은 값입니다. 다시 시도해주세요.\n ");
			c++;
			printf("예측값: ");
			scanf("%d", &b);
			break;
		}
	}
	while (a == b) { // 예측값과 랜덤넘버가 일치할 때
		printf("정답입니다. 총 %d회만에 맞추셨습니다.\n", c); break;
	}





	return 0;
}

 

출력 시 !