표준 입력으로 만 단위의 정수 하나가 입력됩니다. 입력된 정수의 각 자릿수를 역순으로 출력하는 프로그램을 만드세요(scanf 함수 전에 문자열을 출력하면 안 됩니다). 예를 들어 43561이라면 1 6 5 3 4를 출력하면 됩니다. 각 자릿수는 공백으로 띄우세요.
표준 입력
43561
표준 출력
1 6 5 3 4
표준 입력
68274
표준 출력
4 7 2 8 6
정답
#include <stdio.h>
int main()
{
int num1;
scanf("%d", &num1);
int a, b, c, d, e;
e = num1 % 10;
d = (num1 / 10) % 10;
c = (num1 / 100) % 10;
b = (num1 / 1000) % 10;
a = (num1 / 10000) % 10;
printf("%d %d %d %d %d", e, d, c, b, a);
return 0;
}
풀이
일의 자리, 십의 자리, 백의 자리, 천의 자리, 만의 자리의 숫자를 역순으로 출력해야 한다. 그러면 먼저 일의 자리의 값을 구해야 하는데
일의 자리는 10으로 나머지 연산을 하면 1의 자리가 쉽게 나오는 것을 알 수 있다. 그 다음부터 십의 자리는 100으로 나머지 연산을 하면 43561을 예시로 했을 때, 61로 나오고 백의 자리는 1000으로 나머지 연산을 하면 561이 나오모로 여러모로 골치가 아파진다.
이를 해결하려면 10으로 과감히 나눈 다음 10으로 나머지 연산을 하면, 십의 자리 숫자를 일의 자리 숫자를 구할 때처럼 간단하게 구할 수
있다. 우리는 입력 값을 정수로 받았기 때문에, 소수에 대한 걱정은 안해도 되기 때문이다. 차례대로 백의 자리는 100으로 나누고 10으로
나머지 연산한 값을 구하는 방법으로 진행하면 풀 수 있다.
'C' 카테고리의 다른 글
[C] C언어 코딩 도장 17.8 심사문제: 청소년 콘텐츠 관람 제한하기 (0) | 2022.04.26 |
---|---|
[C] C언어 코딩 도장 16.5 심사문제: 실수를 정수로 변환하기 (0) | 2022.04.26 |
[C] C언어 코딩 도장 14.5 심사문제: 원의 넓이 구하기 (0) | 2022.04.26 |
[C] C언어 코딩 도장 13.7 심사문제: 증가, 감소 연산자 사용하기 (0) | 2022.04.26 |
[C] C언어 코딩 도장 12.5 심사문제: 덧셈, 뺄셈하기 (0) | 2022.04.26 |