4자리 양수를 입력받은 후 그 수를 뒤집은 숫자와의 차의 절대값을 출력하는 프로그램을 작성하시오.

실행 예시 1
실행 예시 2


#pragma warning(disable:4996)

#include <stdio.h>

int main() { //main함수 선언
	int input; //4자리 양수를 입력받을 변수
	int num1, num2, num3, num4; //1000의자리 수, 100의자리 수, 10의자리 수, 1의자리 수
	int reversed_num1, reversed_num2, reversed_num3, reversed_num4; // 원래 수의 1의자리 숫자값, 원래 수의 10의자리 숫자값, 원래 수의 100의자리 숫자값, 원래 수의 1000의자리 숫자값
	int reversed_num; //입력받은 4자리 양수를 뒤집은 수
	int result; //결과값

	scanf("%d", &input); //4자리 양수 입력 받음.

	num1 = input / 1000; //1000의자리 수
	num2 = (input % 1000) / 100; //100의자리 수
	num3 = (input % 100) / 10; //10의자리 수
	num4 = (input % 10) / 1; //1의자리 수

	reversed_num1 = num4; //원래 1의자리 -> 뒤집으면 1000의자리
	reversed_num2 = num3; //원래 10의자리 -> 뒤집으면 100의자리
	reversed_num3 = num2; //원래 100의자리 -> 뒤집으면 10의자리
	reversed_num4 = num1; //원래 1000의자리 -> 뒤집으면 1의자리

	//사실 위처럼 자리 바꿔주는 작업 없이, 아래 줄을 reversed_num = (num4*1000) + (num3*100) + (num2*10) + (num1*1); 이렇게 바로 써줘도 되긴 함. 가독성 및 이해를 쉽게 하기 위해 위처럼 바꿔주는 작업을 함.
	
	reversed_num = (reversed_num1 * 1000) + (reversed_num2 * 100) + (reversed_num3 * 10) + (reversed_num4 * 1); //뒤집은수의 각 자리 수들을 합침. (1000의자리에 들어갈 수에 1000을 곱해줌. 100의자리에 들어갈 수에 100을 곱해줌. 10의자리에 들어갈 수에 10을 곱해줌. 1의자리에 들어갈 수에 1을 곱해줌.)

	result = input - reversed_num; //입력값에서 뒤집은 숫자와의 차. (아직 절대값처리는 안됐음.)

	result = result >= 0 ? result : -result; // 차가 0이상이라면 그대로 냅두고, 아니라면(차가 0미만이라면) -를 붙여줌으로서(-1을 곱해줌으로서) 절대값처리를 해줌.

	printf("%d\n", result);

	return 0; //0 반환
}
반응형