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;
}