Game !
C

정수 출력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개가 될 때를 탈출구문으로 만든다.