C언어 코딩 질문

visual studio 2017을 사용하여 코딩을 배우고 있는 코딩 새내기 입니다.
반복문까지 배웠고 포인터와 배열은 조금만 알고 있습니다. 반복문 심화 과정에서 코딩하다 막힌 부분이 있어 질문드립니다

우선 문제는 이렇습니다.
키보드로 정수를 반복 입력 받아서 1의 자릿수가 0~9인 경우의 각각의 개수를 구해서 출력하시오
단, 1의 자릿수의 개수는 크기가 10인 배열에 저장하고, 0이 입력될 때까지 반복한다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
int arr[10], a[10], num[10] = { 0 };
int i=0,j =0;

for (i = 0; i < 10; i++)
{
    printf("정수 입력 : ");
    scanf("%d", &arr[i]);
    if (arr[i] == 0)
        break;

    a[i] = arr[i] % 10;

    if (a[i] == 1)
        num[1]++;
    else if (a[i] == 2)
        num[2]++;
    else if (a[i] == 3)
        num[3]++;
    else if (a[i] == 4)
        num[4]++;
    else if (a[i] == 5)
        num[5]++;
    else if (a[i] == 6)
        num[6]++;
    else if (a[i] == 7)
        num[7]++;
    else if (a[i] == 8)
        num[8]++;
    else if (a[i] == 9)
        num[9]++;
    else if (a[i] == 0)
        num[0]++;
}
printf("1 : %d\n 2 : %d\n 3 : %d\n 4 : %d\n 5 : %d\n 6 : %d\n 7 : %d\n 8 : %d\n 9 : %d\n 0 : %d\n", num[1],num[2],num[3],num[4],num[5],num[6],num[7],num[8],num[9],num[0]);

 

return 0;

}
이렇게 짜봤는데 너무 난잡해 보여서 반복문으로 줄이는 방법이 없을까요…
if , else if 를 반복해서 쓴 부분과 printf 함수 안에 출력 부분 길이를 줄일수 있나요?

1 Like

코드를 올리실때는 백틱 ` 세개로 감싸주세요.

```
코드
```

#include <stdio.h>
int main() {
	int num[10] = {0};
	int input = 0, remainder = 0;

	for (int i = 0; i < 10; i++) {
		printf("정수 입력: ");
		scanf_s("%d", &input);
		if(input == 0) break;

		remainder = input % 10;

        num[remainder]++;
	}

	for (int i = 1; i < 10; i++) {
		printf("%d: %d\n", i, num[i]);
	}
}

도움이 되셨으면 좋겠습니다.

2 Likes

백틱쓰는걸 까먹었네요, 코드 올려주신거 잘 참고하겠습니다 감사합니다 ^^

0 나올때까지 무한반복 해야될거같으니 최상위 for문을 while(1)로 바꾸는게 좋을거같습니다.