처음에 이 문제를 만나서 당황했다.
비트 연산인가..? 3*100 + 8 * 10 + 5 * 1 이렇게 나눠서 하는건가? 등등 고민하다가 결국 간단하게 연산자로 풀 수 있다는 것을 깨달았다.
정답은 가까이에..
#include <stdio.h>
int main(void) {
int a, b;
int one, ten, hundred;
scanf("%d%d", &a, &b);
hundred = b / 100;
ten = (b % 100) / 10;
one = (b % 100) % 10;
printf("%d\n", a * one);
printf("%d\n", a * ten);
printf("%d\n", a * hundred);
printf("%d\n", a * b);
return 0;
}
int형 변수 one, ten, hundred는 각각 1의 자리, 10의 자리, 100의 자리에 있는 수를 뜻한다.
난 scanf 함수로 뒤에 입력 받을 변수 b의 값을 분해하여 각각 a에 출력된 값을 출력할 생각이다.
정수끼리의 나눗셈은 몫이 나오는 것을 이용하고, 나머지 연산은 정수끼리만 정의되어 있으니 이 성질을 잘 이용하면 각 자리의 수를 구할 수 있다.
그렇게 출력 예시에 맞게 printf 함수에 인자로 넣어주고, 변환문자 %d로 원하는 값을 출력하게 된다.
'C언어' 카테고리의 다른 글
혼공c 11-1 변환문자 %c (0) | 2021.09.01 |
---|---|
혼공c 함수의 매개변수 자리에 배열을 선언하는 경우 (0) | 2021.08.31 |
[혼자 공부하는 c언어] 9장 포인터 정리 (0) | 2021.08.26 |
[혼자 공부하는 C언어] 새롭게 시작하는 c언어 정리 210816 (0) | 2021.08.17 |
[모두의 C언어] <2장> 3주 동안 C언어 부시기 요약(7월 1일~7월 21일) (0) | 2021.07.16 |