// 사용자로부터 두 정수를 입력받아 x의 y승이 몇인지 계산하여 알려주는 프로그램
#include <stdio.h>
int get_integer(void);
int power(int x, int y);
int main (void)
{
int a,b;
a = get_integer();
b = get_integer();
printf("%d의 %d승은 %d입니다.", a, b, power(a,b));
return 0;
}
int get_integer(void)
{
int n;
printf("정수를 입력하세요.:");
scanf("%d", &n);
return n;
}
int power(int x, int y)
{
int result=1;
int i;
for (i=1;i<=y;i++)
{
result *= x;
}
return result;
}
추가팁 : n의 0승은 1인데, 해당 프로그램은 이 부분에 대한 결과값을 올바르게 1로 출력한다. 이 부분에서 이상하게 생각할 수 있으나 power 함수의 for문이 작동하지 않아 초기에 넣은 result 1 값이 그대로 나오기 때문에 따로 예외처리를 해주지 않아도 된다.
함수 내에서의 선언으로 전역 변수 생성하기
static int num01=1;
1. 위 내용을 함수 내에 입력할 경우 num01 이 전역 변수로 선언됨
2. 해당 함수를 처음 실행시켰을때 num01 이 전역 변수로 선언되며, 해당 함수를 재실행시킬 경우 선언할때 넣어준 static 줄은 적용되지 않으므로 만약 선언 이후 num01 += 1 과 같은 작업이 있었을 경우 다시 1로 바뀌는 것이 아니라 증가된 2를 가지고 있음
3. 해당 파일 안에서만 사용할 수 있는 변수임
register int i;
1. CPU 안의 레지스터에 변수가 저장됨
extern int for_all_files_test;
1. 전역 변수를 extern을 이용하여 서로 연결
2. 해당 for_all_files_test 변수가 선언된 파일 외의 다른 파일에서 해당 변수를 가져다가 사용할 수 있음
< 저장 유형 정리 >
1. 일반적인 경우 자동 저장 유형 사용을 권장함 (auto)
2. 자주 사용되는 변수는 레지스터 유형으로 선언할 것을 권장함 (register)
3. 변수의 값이 함수 호출이 끝나도 그 값을 유지라여야 할 필요가 있다면 지역 정적으로 선언할 것을 권장 (static)
4. 만약 많은 함수에서 공유되어야 하는 변수라면 외부 참조 변수로 선언할 것을 권장
함수 안에 함수를 넣기
#include <stdio.h>
// 함수 안에 함수를 넣는 형태로 팩토리얼 프로그램 생성하기
int factorial(int x);
int main(void)
{
int i;
scanf("%d", &i);
printf("%d", factorial(i));
}
int factorial(int x)
{
if(x<=1)
{
return(1);
}
else
{
return (x*factorial(x-1));
}
}
'Development > C++' 카테고리의 다른 글
[C++] 기초 예시 - 8 : 배열 (0) | 2019.06.19 |
---|---|
[C++] 기초 예시 - 7 : 함수 응용 - 하노이 탑 문제 (0) | 2019.06.16 |
[C++] 기초 예시 - 5 : continue문 (0) | 2019.06.15 |
[C++] 기초 예시 - 4 : 반복문 for (31) | 2019.06.11 |
[C++] 기초 예시 - 3 : 반복문 do while (0) | 2019.06.11 |