c언어 : 100단위가 넘을 때마다 계속할지말지

조회수 382회
for (i = 1; i <= 1000; i++) {
        if (i % 7 == 0)
            printf("%d ", i);

        if (i == 100 || i==200 || i==300 || i==400 || i==500||i==600||i==700||i==800||i==900||i==1000) {
            printf("Continue(y/n)? ");
            scanf("%c", &a);
            if (a == 'y')
                continue;
            else
                break;
        }

1부터 1000까지 7의 배수를 출력하는데 100단위가 넘을때마다 계속할지말지 묻는건데 뭐가 틀린건가요?

  • 첫번째 if처럼 if (i % 100 == 0){print(); scan....} 금밈미 2022.11.3 19:18

2 답변

  • scanf("%c", &a);
    

    위에 줄을 아래와 같이 바꾸세요. 아래 코드의 %c앞을 잘 보시면 스페이스바로 공백을 한칸 띄워줬습니다.

    scanf(" %c", &a);
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
  • char a;
    for (int i = 1; i <= 1000; i++) {
    if (i % 7 == 0)
        printf("%d ", i);
    
    if (i == 100 || i == 200 || i == 300 || i == 400 || i == 500 || i == 600 || i == 700 || i == 800 || i == 900 || i == 1000) {
        printf("Continue(y/n)? ");
        scanf_s(" %c", &a);
        if (a != 'y') break;
    
    }
    }
    

    이렇하시면 잘 작동됩니다. 윗 코딩에서 틀리신 점.

    1. char a = 문자 a 변수 지정 안하셨습니다
    2. for (int i..) = i의 정수 변수 지정 안하셨습니다.
    3. 마지막에 } 하나 빼먹으셨습니다.
    4. scanf -> scanf_s 로 하셔야합니다. 보안상 업그래이드로 모두 이걸로 수정되었습니다.
    5. %c = 앞에 한칸 띄우기. 이건 앞에 분이 설명하셨네요.

    여기서 제가 추가한 점. if (a != 'y') break;

    소문자 y가 안나오면 탈출. ||쓰셔서 'Y' 대문자도 추가 지정할 수도 있습니다.

    그리고 좀 더 제가 추가하자면.. 중간에 for구문을 넣어서, 간략하게 줄일 수도 있습니다. 일일이 if (i==100 ||...)보단, for로 순차합계 구간을 1~9로 정해서 거기에 100을 곱하시도록 설정하시면 간단하게 아래와 같이 작성하실 수 있습니다. 결과는 같습니다. 이전에 하신 코드는 주석처리했습니다.

    char a;
    for (int i = 1; i <= 1000; i++) {
    if (i % 7 == 0)
        printf("%d ", i);
    
    for (int a = 1; a <= 9; a++) {
        if (i == a * 100) {
            //if (i == 100 || i == 200 || i == 300 || i == 400 || i == 500 || i == 600 || i == 700 || i == 800 || i == 900 || i == 1000) {
            printf("Continue(y/n)? ");
            scanf_s(" %c", &a);
            if (a != 'y') break;
    
        }
    }
    }
    

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

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

(ಠ_ಠ)
(ಠ‿ಠ)