#include <stdio.h>
// 계산기
// 함수 선언
void p(int num);
int main()
{
int num = 12;
p(num);
num /= 2;
p(num);
return 0;
}
// 함수 정의
void p(int num)
{
printf("num은 %d 입니다.\n", num);
}
# 계산기
# 함수 선언 및 정의
# f-문자열 활용
def p(num):
print(f"num은 {num}입니다.")
num = 12
p(num)
num /= 2
p(num)
print
또한 이미 하나의 함수임.반환(자료)형 함수이름(자료형1 매개변수1, 자료형2 매개변수2, ..., 자료형k 매개변수k)
{
명령문;
...
return 반환값
}
반환형은 반환값의 자료형이 사용되어야 함.
함수를 미리 선언만 할 때 반환형과 매개변수들의 자료형이 동일하게 선언되어야 함.
p()
의 반환형으로 void
가 사용된 이유는 printf()
함수의 반환형이 void
이기 때문.#include <stdio.h>
void p(int num);
int main()
{
int num = 12;
p(num);
return 0;
}
// 함수 정의
void p(int num)
{
printf("num은 %d 입니다.\n", num);
}
def 함수이름(매개변수1, 매개변수2, ..., 매개변수k):
명령문
return 반환값
반환값이 지정되지 않으면 None
을 반환하도록 자동 설정됨:
return None
# 계산기
# 함수 선언 및 정의
# 매개변수 유형과 반환형 명시 가능
def p(num:int) -> None:
print(f"num은 {num}입니다.")
num:int = 12
p(num)
num /= 2
p(num)
def p(num:int) -> str:
print(f"num은 {num}입니다.")
num:int = 12
p(num)
num /= 2
p(num)
from typing import List # 대문자 L 사용에 주의
def total(xs: List[float]) -> float:
return sum(xs)
보다 상세한 설명은 아래 두 사이트 참조
유형이 암시된대로의 작동여부 확인을 위해서는 mypy 라는 패키지를 설치해야 함. 사용법은 아래 사이트 참조
void
void 함수이름(자료형1 매개변수1, 자료형2 매개변수2, ..., 자료형k 매개변수k)
{
명령문;
...
// return 명령문이 사용되지 않아야 함
}
#include <stdio.h>
// 함수 선언
void function_without_return();
int main()
{
function_without_return();
return 0;
}
// 함수 정의
// 반환값이 없는 함수
void function_without_return()
{
printf("반환값이 없는 함수입니다.\n");
}
main
함수 이전에 선언함.main
함수 밖에서 정의됨.# 함수 선언
# 반환값이 없는 함수d
def function_without_return():
print("반환값이 없는 함수입니다.")
function_without_return()
반환형 함수이름(자료형1 매개변수1, 자료형2 매개변수2, ..., 자료형k 매개변수k)
{
명령문;
...
return 반환값
}
#include <stdio.h>
// 함수 선언
void p(int num);
int function_with_return();
int main()
{
int ret = function_with_return();
p(ret);
return 0;
}
// 함수 정의
void p(int num)
{
printf("num은 %d 입니다.\n", num);
}
// 반환값이 있는 함수
int function_with_return()
{
printf("반환값이 있는 함수입니다.\n");
return 10;
}
# 함수 정의
def p(num):
print(f"num은 {num}입니다.")
# 반환값이 있는 함수
def function_with_return():
print("반환값이 있는 함수입니다.")
return 10
ret = function_with_return()
p(ret)
반환형 함수이름()
{
명령문;
...
}
#include <stdio.h>
// 함수 선언
void function_without_params();
int main()
{
function_without_params();
return 0;
}
// 함수 정의
// 전달값이 없는 함수
void function_without_params()
{
printf("전달값이 없는 함수입니다.\n");
}
# 전달값이 없는 함수
def function_without_params():
print("전달값이 없는 함수입니다.")
function_without_params()
반환형 함수이름(자료형1 매개변수1, 자료형2 매개변수2, ..., 자료형k 매개변수k)
{
명령문;
...
}
#include <stdio.h>
// 함수 선언
void function_with_params(int num1, int num2, int num3);
int main()
{
function_with_params(35, 27, 12);
return 0;
}
// 함수 정의
// 전달값이 있는 함수
void function_with_params(int num1, int num2, int num3)
{
printf("전달값이 있는 함수이며, 전달받은 값은 %d, %d, %d 입니다.\n", num1, num2, num3);
}
## 전달값이 있는 함수
def function_with_params(num1, num2, num3):
print(f"전달값이 있는 함수이며, 전달받은 값은 {num1}, {num2}, {num3} 입니다.")
function_with_params(35, 27, 12)
반환형 함수이름(자료형1 매개변수1, 자료형2 매개변수2, ..., 자료형k 매개변수k)
{
명령문;
...
return 반환값
}
#include <stdio.h>
// 함수 선언
int apple(int total, int ate); // 전체 total 개에서 ate 개를 먹고 남은 수를 반환
int main()
{
// 5개의 사과 중에서 2개 먹기
// 반환값을 저장 후 활용
int ret = apple(5, 2);
printf("사과 5개 중에 2개를 먹으면? %d 개가 남아요.\n", ret);
return 0;
}
// 함수 정의
// 파라미터(전달값)도 받고, 반환값도 있는 함수
int apple(int total, int ate)
{
return (total - ate);
}
#include <stdio.h>
// 함수 선언
int apple(int total, int ate); // 전체 total 개에서 ate 개를 먹고 남은 수를 반환
int main()
{
// 5개의 사과 중에서 2개 먹기
// 함수의 반환값 직접 활용
printf("사과 %d 개 중에 %d 개를 먹으면? %d 개가 남아요.\n", 10, 4, apple(10,4));
return 0;
}
// 함수 정의
// 파라미터(전달값)도 받고, 반환값도 있는 함수
int apple(int total, int ate)
{
return (total - ate);
}
# 함수 정의
# 파라미터(전달값)도 받고, 반환값도 있는 함수
def apple(total, ate):
return (total - ate)
# 5개의 사과 중에서 2개 먹기
# 반환값을 저장 후 활용
ret = apple(5, 2)
print(f"사과 5개 중에 2개를 먹으면? {ret} 개가 남아요.")
# 함수 정의
# 파라미터(전달값)도 받고, 반환값도 있는 함수
def apple(total, ate):
return (total - ate)
# 5개의 사과 중에서 2개 먹기
# 반환값 직접 활용
print(f"사과 {10}개 중에 {4}개를 먹으면? {apple(10,4)} 개가 남아요.")
#include <stdio.h>
// 함수 선언
// 출력 함수 새로 선언
void p(int num);
// 계산기 함수
int add(int num1, int num2);
int sub(int num1, int num2);
int mul(int num1, int num2);
int div(int num1, int num2);
int main()
{
int num = 2;
num = add(num, 3);
p(num);
num = sub(num, 1);
p(num);
num = mul(num, 3);
p(num);
num = div(num, 6);
p(num);
return 0;
}
// 함수 정의
void p(int num)
{
printf("num은 %d 입니다.\n", num);
}
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;
}
# 함수 정의
def p(num):
print(f"num은 {num} 입니다.")
def add(num1, num2):
return num1 + num2
def sub(num1, num2):
return num1 - num2
def mul(num1, num2):
return num1 * num2
def div(num1, num2):
return num1 / num2
num = 2
num = add(num, 3)
p(num)
num = sub(num, 1)
p(num)
num = mul(num, 3)
p(num)
num = div(num, 6)
p(num)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 함수 선언
// 계산기 함수
int getRandomNumber(int level);
void showQuestion(int level, int num1, int num2);
void success();
void fail();
int main()
{
// 문이 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("%d", &answer);
// (answer == -1)의 경우의 기능은 두 가지
// 첫째: 게임을 종료하고자 할 경우 -1 입력
// 둘째: 예외처리 기능
// 숫자 이외의 엉뚱한 값이 입력될 경우 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)
{
// 0을 피하기 위해 +1 사용
return rand() % (level * 7) + 1;
}
void showQuestion(int level, int num1, int num2)
{
printf("\n\n\n### %d 번째 비밀번호 ###\n", level);
printf("\n\t%d x %d 는? \n\n", num1, num2);
printf("#######################\n");
printf("\n비밀번호를 입력하세요 (종료: -1) >> ");
}
void success()
{
printf("\n >> Good! 정답입니다.\n");
}
void fail()
{
printf("\n >> 땡! 틀렸습니다.\n");
}
import random
import time
import sys
## 현재 시간에 맞추어 무작위로 정수 생성 가능
# time 함수: 1970.01.01 이후 흐른 시간(ns 단위)
current_time = int(time.time())
# 현재 시간 기준으로 무작위수 생성 지정
random.seed(current_time)
# 함수 정의
def getRandomNumber(level):
# 0을 피하기 위해 +1 사용
return random.randint(0, sys.maxsize) % (level * 7) + 1
def showQuestion(level, num1, num2):
print("\n\n\n### %d 번째 비밀번호 ###\n" % level)
print("\n\t%d x %d 는? \n\n" % (num1, num2))
print("#######################\n")
print("\n비밀번호를 입력하세요 (종료: -1) >> ")
def success():
print("\n >> Good! 정답입니다.\n")
def fail():
print("\n >> 땡! 틀렸습니다.\n")
# 문이 5개가 있고, 각 문마다 어려운 수식퀴즈가 출제(랜덤)
# 맞히면 통과, 틀리면 실패
count = 0 # 맞힌 문제수
for i in range(1,6):
# x * y = ?
num1 = getRandomNumber(i)
num2 = getRandomNumber(i)
#printf("%d x %d ?"), num1, num2)
showQuestion(i, num1, num2)
# 정수가 아닌 엉뚱한 답변 예외처리하기
try:
answer = int(input("답을 입력하세요: "))
except:
print("정수를 입력하지 않았습니다.")
print("프로그램을 종료합니다.\n")
sys.exit(0)
# 정수가 입력된 경우
if (answer == -1):
print("프로그램을 종료합니다.\n")
sys.exit(0)
elif (answer == num1 * num2):
# 성공
success()
count = count + 1
else:
# 실패
fail()
print("\n\n 당신은 5개의 비밀번호 중 %d 개를 맞혔습니다.\n" % count)