정수 출력2015. 4. 14. 20:57
정수의 각 자리수를 출력하는 함수를 재귀함수로 만들어보자
예제)
정수를 입력하시오 : 1234
실행 : 1 2 3 4
천의자리는 1, 백의자리는 2, 십의자리는 3, 일의자리는 4...
이렇게 차례대로 출력하면서 입력받는 숫자는 음수만 아니면 된다
1. 몫이 일의자리가 되는, 1~9 사이의 숫자를 찾는다
2. 찾은 숫자를 출력
3. 다음 계산할 숫자를 재귀함수의 매개변수로 넘겨준다
point
1~9 사이의 숫자 찾는 방법 :
10의 제곱으로 나누면서 몫이 일의자리인 숫자를 찾는다
== 가장 큰 자리 숫자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <math.h> #include <stdio.h> void main() { int num; printf("정수를 입력하시오 : "); scanf("%d", num); } void Show_digit(int n) { int k = 0; //지수 int portion = n / (int)pow(10.0 , k); //몫이 일의자리인 수 찾기 while(portion > 10 || portion < = 0) { k++; portion = n / (int)pow(10.0 , k); } printf("%d ", portion); if(k == 0) { return; } Show_digit(n % (int)pow(10.0 , k); } | cs |
while 문이, 나눴을 때 몫이 1일 때의 가장 큰 자리수의 숫자를 찾는 반복문이다
while 문 괄호 안의 조건식이 거짓이 되면 반복문에서 벗어난다
그리고 가장 큰 자리수를 찾고 while문을 벗어났기때문에 그대로 몫을 출력해준다.
다음, 나머지를 매개변수로 다시 재귀호출을 한다
마지막으로 재귀함수이므로,
1(10의0승)으로 나누었을때 몫이 1개가 될 때를 탈출구문으로 만든다.
'Language > C++' 카테고리의 다른 글
2차원 배열 동적할당 & 해제 (0) | 2015.04.24 |
---|---|
[C++] 강제 형변환 & 자동 형변환 (0) | 2015.04.24 |
[C 기초] 자리맞춰서 출력하기 (2) | 2015.04.20 |
중위 표기법 / 후위 표기법 이해 (0) | 2015.04.16 |
[C++] 파일입출력) EOF에 대한 이해 (0) | 2015.04.15 |