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

C 언어로 나눗셈과 모듈로 연산자를 활용해 숫자를 거꾸로 출력하는 방법

문제 상황

C 프로그래밍 언어에서 나눗셈(/) 연산자와 모듈로(%) 연산자만을 사용하여 주어진 두 자리 숫자를 거꾸로 출력하려면 어떻게 해야 할까요?

지금까지는 문자열 함수를 사용하거나 사용하지 않고 문자열을 뒤집는 방법을 살펴보았습니다. 이번에는 미리 정의된 함수 없이, 오직 산술 연산자만으로 두 자리 숫자를 뒤집는 방법을 알아보겠습니다.

핵심 로직

연산자를 활용해 숫자를 뒤집는 원리는 매우 간단합니다. 모듈로 연산자(%)는 나눗셈의 나머지를 반환하고, 나눗셈 연산자(/)는 을 반환한다는 점을 활용합니다.

int firstno = number % 10; // 나머지 저장 (1의 자리 숫자)
int secondno = number / 10; // 몫 저장 (10의 자리 숫자)

예를 들어 숫자가 45라면, 45 % 10은 나머지인 5를 반환하고, 45 / 10은 몫인 4를 반환합니다. 이제 첫 번째 숫자(5)를 먼저 출력하고 그다음 두 번째 숫자(4)를 출력하면, 원래 숫자의 역순인 54를 얻을 수 있습니다.

프로그램 1: 두 자리 숫자 뒤집기

다음 예제에서는 두 자리 숫자를 입력받아 나눗셈과 모듈로 연산자를 적용하여 숫자를 뒤집습니다.

#include<stdio.h>
int main(){
    int number;
    printf("enter a number:");
    scanf("%4d",&number);
    int firstno = number % 10; // 나머지 저장
    int secondno = number / 10; // 몫 저장
    printf("After reversing =%d%d\n",firstno,secondno);
    return 0;
}

실행 결과

enter a number:45
After reversing =54

프로그램 2: 세 자리 숫자 뒤집기

같은 원리를 확장하면 세 자리 숫자도 뒤집을 수 있습니다. 백의 자리는 100으로 나눈 몫, 십의 자리는 100으로 나눈 나머지를 다시 10으로 나눈 몫, 일의 자리는 10으로 나눈 나머지로 구합니다. 그런 다음 각 자릿수에 해당하는 자리값(100, 10, 1)을 곱해 더하면 뒤집힌 숫자가 완성됩니다.

#include<stdio.h>
int main(){
    int number,num1,num2,num3,result;
    printf("enter a number:");
    scanf("%4d",&number);
    num1 = number / 100;        // 백의 자리
    num2 = (number % 100) / 10; // 십의 자리
    num3 = number % 10;         // 일의 자리
    result = 100*num3 + 10*num2 + num1; // 자릿수 재조합
    printf("After reversing =%d\n",result);
    return 0;
}

실행 결과

enter a number:479
After reversing =974

정리

이처럼 나눗셈 연산자와 모듈로 연산자를 조합하면 별도의 문자열 변환 함수나 배열 없이도 숫자의 각 자릿수를 손쉽게 분리하고 재조합할 수 있습니다. 이 기법은 숫자 뒤집기뿐만 아니라 자릿수 합계 구하기, 회문(palindrome) 판별 등 다양한 알고리즘 문제의 기초가 되므로 꼭 익혀두시길 바랍니다.