Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어에서 반복문(while 루프)을 사용해 주어진 숫자를 역순으로 출력하는 방법

문제

C 프로그래밍 언어에서 while 루프와 같은 반복(iteration) 기법을 활용하여 주어진 숫자를 역순으로 출력하려면 어떻게 해야 할까요?

해결 방법

지금까지는 문자열 함수를 사용하거나 사용하지 않고 문자열을 뒤집는 방법을 살펴보았습니다. 이번에는 미리 정의된(predefined) 함수 없이 숫자 자체를 뒤집는 방법을 알아보겠습니다.

알고리즘

입력 − 실행 시점에 숫자를 입력받습니다.

1단계: 변수 number, reverse 선언
2단계: reverse = 0 으로 초기화
3단계: number > 0 인 동안 반복
        (a) reverse = reverse * 10 + number % 10;
        (b) number를 10으로 나눔
4단계: reverse 반환

동작 원리

이 알고리즘은 숫자의 마지막 자릿수(number % 10)를 하나씩 추출하여 reverse 변수에 누적합니다. 이후 number를 10으로 나누어 마지막 자릿수를 제거하고, number가 0이 될 때까지 이 과정을 반복합니다. 예를 들어 356789가 입력되면 9, 8, 7, 6, 5, 3 순서로 자릿수가 추출되어 최종적으로 987653이라는 역순 숫자가 완성됩니다.

예제 코드

#include <stdio.h>
int reverse(int number){
    int reverse = 0;
    while(number > 0){
        reverse = reverse*10 + number%10;
        number = number/10;
    }
    return reverse;
}
int main(){
    int number;
    printf("enter a number:");
    scanf("%d",&number);
    printf("Reverse of no. is %d", reverse(number));
    getchar();
    return 0;
}

실행 결과

enter a number:356789
Reverse of no. is 987653