4자리 양수를 입력받은 후 그 수를 뒤집은 숫자와의 차의 절대값을 출력하는 프로그램을 작성하시오.
#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 반환
}
반응형
최근댓글