#include <stdio.h>
int main() {
int A, B, C;
int M = 0;
int mul =0;
int arr[10] = {0, };
scanf("%d", &A);
scanf("%d", &B);
scanf("%d", &C);
mul = A * B * C;
while (1)
{
M = mul % 10;
if (mul <= 0) break;
arr[M] ++;
mul /= 10;
}
for (int i = 0; i < 10; i++)
{
printf("%d\n",arr[i]);
}
return 0;
}
일단 기존에 파이썬에서는 자료형을 지맘대로 왓다갔다 해도 다 인식했었어서 그런지 c처럼 정교할 필요가 있는 상황에서 막히는 것을 느꼈다. 글자수를 하나하나를 배열로 바꾸기는 c 에서 어렵다. 그렇기에 사칙연산의 논리로 한 숫자씩 떼어와야 한다.
while 에서 종료조건에서 0을 포함하는 것을 실수했다. 그결과 계속 알수없는 오류로 당황스러웠었다. 종료조건은 무엇보다 더 차분히 체크해야할것 같다 .
배열의경우 자료형 배열 이름 [크기] = {값,값,값} ;
인데 이때 크기가 들어간 값의 갯수보다 더 큰경우 남는 배열의 값은 0으로 초기화된다. 따라서 위의 코드에서
int arr[10] = {0, };
이것과
int arr[10] = {0, 0,0,0,0,0,0,0,0,0};
이것은 같다.
또한 scanf는 2개 이상 입력을 받을 시, enter 나 tab, 띄어쓰기 등 입력 값 사이에 공백이 있으면 그 공백으로 입력 값들을 구분한다.
scanf("%d", &A);
scanf("%d", &B);
scanf("%d", &C);
scanf("%d %d %d", &a, &b, &c);
따라서 위의 식은 아래식으로 대체할 수 있다.