(전체코드)
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int getRandomNumber(int level);
void showQuestion(int level, int num1, int num2);
void success();
void fail();
int main(void) {
srand(time(NULL));
int count = 0;
for (int i = 1; i <= 5; i++) {
int num1 = getRandomNumber(i);
int num2 = getRandomNumber(i);
//printf("%d * %d = %d\\n", num1, num2);
showQuestion(i, num1, num2);
int answer = -1;
scanf_s("%d", &answer);
if (answer == -1) {
printf("\\n프로그램을 종료합니다.\\n");
exit(0);
} else if (answer == num1 * num2) {
success();
count++;
} else {
fail();
}
}
printf("비밀번호 %d개를 맞혔습니다.", count);
return 0;
}
int getRandomNumber(int level) {
return rand() % (level * 9) + 1;
}
void showQuestion(int level, int num1, int num2) {
printf("\\n\\n######%d번째 비밀번호#####\\n", level);
printf("\\n%d * %d \\n", num1, num2);
printf("\\n비밀번호를 입력하세요. (종료를 원하면 -1입력) : ");
}
void success() {
printf("\\n 정답");
}
void fail() {
printf("\\n 실패");
}
(실행결과)
📌 코드 나눠보기
1. 헤더파일 추가
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
- rand() 함수를 사용하기 위해서 time.h, stdlib.h 추가
2. 함수 선언
int getRandomNumber(int level);
void showQuestion(int level, int num1, int num2);
void success();
void fail();
- getRandomNumber(); 저수인 난수를 반환해서 int, 전달값 i로 들어오는 매개변수는 문제 단계
- showQuestion(); 반환값이 없어서 void, 문제 단계, 숫자1, 숫자2 를 보여줌.
- success(); fail(); 성공했을 때 실패했을 때 메세지 출력 함수
3. main함수
int main(void) {
srand(time(NULL));
int count = 0;
for (int i = 1; i <= 5; i++) {
int num1 = getRandomNumber(i);
int num2 = getRandomNumber(i);
//printf("%d * %d = %d\\n", num1, num2);
showQuestion(i, num1, num2);
int answer = -1;
scanf_s("%d", &answer);
if (answer == -1) {
printf("\\n프로그램을 종료합니다.\\n");
exit(0);
} else if (answer == num1 * num2) {
success();
count++;
} else {
fail();
}
}
printf("비밀번호 %d개를 맞혔습니다.", count);
return 0;
}
- srand(time(NULL)); 난수 초기화
- count = 0; 문제 맞힌 개수 변수 선언
- for( ); 문제가 5번 반복되됨.
- num1, num2; getRandomNumber() 함수에서 받아온 값이 들어감.
- showQustion(); 질문 들어오는 함수 출력
- int answer = -1; 초기값 -1 으로 설정
- scanf_s("%d", &answer); 정답 적음
- if() ~ ; 정답일 경우, 실패할 경우, 프로그램 종료시 조건문 추가
- printf(); 몇개 맞혔는지 출력
더보기
💡 변수의 초깃값 의도치 않는 동작이 수행되지 않도록 혼란을 피하기 위해 초깃값을 설정하기도 함.
더보기
💡 exit() 함수로 프로그램 종료하기 exit()는 현재 실행 중인 프로그램을 종료하는 함수. 0 을 넣으면 정상 종료 1 (일반적으로 씀) 을 넣으면 오류 발생으로 인한 종료 stdlib.h 추가해야 쓸 수 있음.
4. 함수 정의
int getRandomNumber(int level) {
return rand() % (level * 9) + 1;
}
void showQuestion(int level, int num1, int num2) {
printf("\\n\\n######%d번째 비밀번호#####\\n", level);
printf("\\n%d * %d \\n", num1, num2);
printf("\\n비밀번호를 입력하세요. (종료를 원하면 -1입력) : ");
}
void success() {
printf("\\n 정답");
}
void fail() {
printf("\\n 실패");
}
- getRandomNumber(); 레벨이 올라갈 수록 큰 숫자가 나오게 설정
- showQuestion(); 각 문제 단계, 곱하기 계산식, 비밀번호 입력 문구 출력
- success(), fail(); 성공 실패 문구
📌 셀프체크 문제
더보기
영화의 상영 시간 정보를 분(min)에서 시간 + 분으로 변환해 표시하는 프로그램을 함수로 만들어 보세요.
조건)
1. 함수의 이름은 convert_time
2. 함수는 전달값으로 영화의 상영 시간 정보인 분에 해당하는 정수형 값 1개를 받음 ( 118분, 148분)
3. 전달받은 분을 시간 + 분 단위로 변환해 출력 ( 118분 -> 1시간 58분)
4. 함수의 반환값은 없음.
(내 코드)
#include <stdio.h>
void convert_time(int min);
int main(void) {
printf("숫자 적으셈");
int answer = 0;
scanf_s("%d", &answer);
convert_time(answer);
return 0;
}
void convert_time(int min) {
int hour = min / 60;
int minutes = min % 60;
printf("%d시간 %d분\n", hour, minutes);
};
- 정답코드는 main에 숫자값을 적어놓았고 나는 사용자가 입력하도록 바꿨다.
- 계속 시간만 나오고 분은 안나와서 뭔지 한참 찾았는데 분 앞에 d가 빠져서였다.,
'언어 > C' 카테고리의 다른 글
[코딩자율학습] 11일차 프로젝트: 자라나라 머리머리 (0) | 2024.03.18 |
---|---|
[코딩자율학습] 10일차 배열과 문자열 (0) | 2024.03.15 |
[코딩자율학습] 8일차 함수 (0) | 2024.03.13 |
[코딩자율학습] 7일차 여러방향으로 분기하기 (1) | 2024.03.12 |
[코딩자율학습] 6일차 조건에 따라 분기하기 (0) | 2024.03.11 |