4. 함수
4.1 function 계산기
함수를 사용하기 위해서는 함수 선언과 정의를 해야한다.
//선언 무조건 main함수 밖에서 선언
void p(int num);
//정의 무조건 main함수 밖에서 정의
void p(int num)
{
printf("num은 %d 입니다\n", num);
}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); //4
p(num);
// 4*3은?
num *= 3;
//printf("num은 %d 입니다\n", num); //12
p(num);
// 12 /6은?
num /= 6;
//printf("num은 %d 입니다\n", num); //2
p(num);
return 0;
}4.2 함수 종류
4.2.1 반환값이 없는 함수
//선언 및 정의
void function_without_return()
{
printf("반환값이 없는 함수입니다\n"); // 함수 뭔지 알기위해 넣음.
}
//실행
function_without_return();4.2.2 반환값이 있는 함수
//선언 및 정의
int function_with_return()
{
printf("반환값이 있는 함수입니다\n");
return 10;
}
//실행 위에서 쓰인 p함수 다시 가져옴.
int ret = function_with_return();
p(ret);
답: 반환값이 있는 함수입니다
num은 10 입니다4.2.3 파라미터(전달값)가 없는 함수
//선언 및 정의
void function_without_params()
{
printf("전달값이 없는 함수입니다\n");
//실행
function_without_params()
답 : 전달값이 없는 함수입니다4.2.4 파라미터(전달값)가 있는 함수
//선언 및 정의
void function_with_params(int num1, int num2, int num3)
{
printf("전달값이 있는 함수이며, 전달받은 값은 %d, %d, %d 입니다\n",
num1, num2, num3 );
//실행
function_with_params(35, 27, 12);
답 : 전달값이 있는 함수이며, 전달받은 값은 35 27 12 입니다4.2.5 파라미터(전달값)도 받고, 반환값이 있는 함수
//선언 및 정의
int apple(int total, int ate)
{
printf("전달값과 반환값이 있는 함수입니다\n");
return total - ate;
//실행
int ret = apple(5, 2); // 5개의 사과중에서 2개를 먹음.
//printf("사과 5개중에 2개를 먹으면? %d개가 남아요", ret);
printf("사과 %d 개중에 %d개를 먹으면? %d개가 남아요\n", 10, 4, apple(10, 4));
답 사과 10개중에 4개를먹으면 6개가 남아요.4.3 최종 응용 계산기
처음으로 돌아가서 function 계산기
//선언 및 정의
int add(int num1, int num2)
{
return num1 + num2;
}
int sub(int num1, int num2)
{
return num1 - num2;
}
int mul(int num1, int num2)
{
return num1 * num2;
}
int div(int num1, int num2)
{
return num1 / num2;
}
int num = 2;
num = add(num, 3);
p(num); //5
num = sub(num, 1);
p(num); //4
num = mul(num, 3);
p(num); //12
num = div(num, 6);
p(num); //24.4 프로젝트 5단계 비밀번호 맞추기
//선언 및 정의
int getRandownNumber(int level)
{
return rand() % (level * 7) + 1;
}
int showQuestion(int level, int num1, int num2)
{
printf("\n\n\n %d 번째 비밀번호\n", level);
printf("\n%d * %d는?\n", num1, num2);
printf("\n비밀번호를 입력하세요 (종료 :-1) >> ");
}
void sucess()
{
printf("\nGOOD! 정답입니다\n");
}
void fail()
{
printf("\n땡 틀렸습니다\n");
}
srand(time(NULL));
int count = 0; // 맞힌 문제 개수
for (int i = 1; i <= 5; i++)
{
//x * y =? 문제
int num1 = getRandownNumber(i);
int num2 = getRandownNumber(i);
showQuestion(i, num1, num2);
int answer = -1;
scanf_s("%d", &answer);
if (answer == -1)
{
printf("프로그램을 종료합니다\n");
exit(0); //exit는 그냥 프로그램 런해버림 for문끝내는게 아니라
}
else if (answer == num1 * num2)
{
//성공시
sucess();
count++;
}
else
{
fail();
}
}
printf("\n\n 당신은 5개의 비밀번호 중 %d개를 맞혔습니다", count);
return 0;
}
2022.11.09 리뷰
조건과 함수를 시작하니 변수가 정말 많다. 변수선언을 잊지말고 하자.
변수 = 0 으로 왜 선언과 동시에 초기화를 하는가? 변수를 선언과 동시에 초기화를 해버려서 쓰레기값이 안들어가게하는 용도임.
귀인을 만났다. 국비로 시작해서 일본에 취업하신분께 조언을 얻었다.
중요한 것은 꺾이지 않는 마음
천천히 나아가자
'기초단계 > c언어' 카테고리의 다른 글
| 2022.11.10-2 포인터 (0) | 2022.11.10 |
|---|---|
| 2022.11.10-1 배열 (0) | 2022.11.10 |
| 2022.11.09-1 조건 & 분기 (0) | 2022.11.09 |
| 2022.11.08.-3 반복문 (0) | 2022.11.08 |
| 2022.11.08.-2 변수, 상수, 입출력 (0) | 2022.11.08 |