Rylah's Study & Daily Life

05. 함수 본문

Study/C

05. 함수

Rylah 2021. 11. 2. 11:24
// 함수

#include <stdio.h>

//함수 선언
void p(int num);
void function_without_return();
int function_with_return();
void function_without_params();
void function_with_params(int num1, int num2, int num3);
int apple(int total, int ate); // 전체 total에서 ate를 먹고 남은걸 반환

int add(int num1, int num2);
int sub(int num1, int num2);
int mult(int num1, int num2);
int div(int num1, int num2);


int main(void) {

	//int num = 2;
	////printf("num 은 %d 입니다.\n", num); // 2
	//p(num);

	//// 2 + 3 = ?
	//num = num + 3; // num += 3;
	////printf("num 은 %d 입니다.\n", num); // 5
	//p(num);

	//// 5 - 1 = ?
	//num -= 1; // num = num - 1;
	////printf("num 은 %d 입니다.\n", num);
	//p(num);

	//// 4 x 3 = ?
	//num *= 3; // num = num * 3;
	////printf("num 은 %d 입니다.\n", num); // 12
	//p(num);

	//// 12 / 6 = ?
	//num /= 6;
	////printf("num 은 %d 입니다.\n", num); // 2
	//p(num);

	//// 반환 값이 없는 함수
	//function_without_return();

	//// 반환 값이 있는 함수
	//int ret = function_with_return();
	//p(ret);

	//// 파라미터(전달) 값이 없는 함수
	//function_without_params();


	//// 파라미터(전달) 값이 있는 함수
	//function_with_params(1, 2, 3);

	// 파라미터(전달값)도 받고  반환값도 있는 함수
	//int ret = apple(5, 2);
	//printf("사과 5개 중에 2개를 먹으면 ? : %d 개가 남아요\n", ret);
	//printf("사과 %d 개 중에 %d 개를 먹으면? : %d 개가 남아요\n", 10, 4, apple(10, 4));

	int num = 2;

	num = add(num, 3);
	p(num);

	num = sub(num, 1);
	p(num);

	num = mult(num, 3);
	p(num);

	num = div(num, 6);
	p(num);


	return 0;


}
// 함수 정의
void p(int num) {
	printf("num 은 %d 입니다.\n", num);
}

void function_without_return() {
	printf("반환 값이 없는 함수입니다. \n");
}

int function_with_return() {
	printf("반환 값이 있는 함수입니다. \n");
	return 10;
}

void function_without_params() {
	printf("전달 값이 없는 함수입니다.\n");
}

void function_with_params(int num1, int num2, int num3) {
	printf("전달 값이 있는 함수이며 전달값은 %d, %d, %d 입니다.\n",num1, num2, num3);
}

int apple(int total, int ate) { // 전체 total에서 ate를 먹고 남은걸 반환
	printf("전달 값과 반환 값이 있는 함수입니다.\n");
	return total - ate;
}

int add(int num1, int num2) {
	return num1 + num2;
}
int sub(int num1, int num2) {
	return num1 - num2;
}
int mult(int num1, int num2) {
	return num1 * num2;
}
int div(int num1, int num2) {
	return num1 / num2;
}

// 함수의 구성
// 반환형 함수 이름(전달값) 으로 구성된다.

 

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int getRandomNumber(int level);
void showQuestion(int number, int n1, int n2);
void success();
void fail();
int main(void) {
	// 문이 5개가 있고 각 문마다 점점 어려운 수식 퀴즈가 출제됩니다.
	// 맞히면 통과 틀리면 실패

	srand(time(NULL)); // 난수 초기화

	int count = 0; // 문제를 맞췄습니다.

	for (int i = 1; i <= 5; i++) {
		// x * y = ?
		int num1 = getRandomNumber(i);
		int num2 = getRandomNumber(i);
		//printf("%d x %d = ?", num1, num2);
		showQuestion(i, num1, num2);

		int answer = -1;
		scanf_s("%d", &answer);
		if (answer == -1) {
			printf("프로그램을 종료합니다\n");
			exit(0);
		}
		else if (answer == num1 * num2) {
			success();
			count++;
		}
		else {
			fail();
		}

		printf("\n\n당신은 5개의 비밀 번호 중 %d개를 맞췄습니다.\n", count);
		
	}

	return 0;
}
int getRandomNumber(int level) {
	return rand() % (level * 7) + 1;
}

void showQuestion(int number, int n1, int n2) {
	printf("\n\n\n######## %d번째 비밀번호 ######\n\n\t%d x %d = ?\n\n", number, n1, n2);
	printf("###############################\n");
	printf("\n비밀번호를 입력하세요 (종료 : -1) >> ");
}

void success() {
	printf("\n >> Good! 정답입니다.\n");
}
void fail() {
	printf("\n >> 땡! 오답입니다. \n");
}

'Study > C' 카테고리의 다른 글

07. 포인터 (Pointer)  (0) 2021.11.02
06. 배열 (Array)  (0) 2021.11.02
04. 조건 / 분기  (0) 2021.11.02
03. 반복문  (0) 2021.11.01
02. 변수, 상수, 입력, 출력, 주석  (0) 2021.11.01