c 언어 배열에 관한 질문

조회수 462회

코린이 입니다. b 배열에 소수들을 집어넣고 소수가 아닐 때는 0으로 돌려받고 싶습니다. 아무래도 소수에 대한 코드를 잘못 짰다고 생각하는데 도대체 무엇이 문제일 까요?

  • 입력
  • 4
  • 17 6 15 11
  • 출력
  • 17 0 15 11
#include<stdio.h>
#include<string.h>
int main() {
    int n, j, i, a[20] = { 0 }, s[20] = { 0 }, b[20] = { 0 }, cnt = 0;
    scanf_s("%d", &n);
    for (i = 0;i < n;i++) {
        scanf_s("%d", &a[i]);
    }
    for (i = 0;i < n;i++) {
        for (j = 1;j < a[i];j++) {
            if (a[i] % j == 0) {
                cnt++;
            }
        }
        if (cnt == 1) {
            b[i] = a[i];
    }

    for (i = 0;i < n;i++) {
        printf("%d ", b[i]);
    }

    return 0;
}//여기에 코드를 입력하세요
  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 루프를 돌면서 cnt를 0으로 초기화해 주는 부분이 없어서 그렇습니다.

    아래 코드 참고하세요.

    • 코드
    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        int n = 0, cnt = 0;
        int a[20] = { 0 }, b[20] = { 0 };
    
        scanf_s("%d", &n);
    
        for (int i = 0; i < n; i++)
            scanf_s("%d", &a[i]);
    
        for (int i = 0; i < n; i++)
        {
            cnt = 0;
    
            for (int j = 1; j < a[i]; j++)
            {
                if (a[i] % j == 0)
                    cnt++;
            }
    
            if (cnt == 1)
                b[i] = a[i];
        }
    
        for (int i = 0; i < n; i++)
            printf("%d ", b[i]);
    
        return 0;
    }
    
    • 결과

    이미지

    이미지

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)