(C언어) while 사용시 printf 위치질문이 있습니다.
조회수 305회
안녕하세요. C언어 기초를 배우고 있습니다.
현재 여러 정수를 출력하다가 3의 배수만 합계, 평균내고, -1을 입력하면 탈출하는 코딩을 완성했는데.. printf의 while의{ } 안,밖 위치가 궁금합니다. 어떤 것은 안에 둬야 프로그램이 기능을 하고 , 어떤 것은 밖에 둬야 기능을 합니다. (편의상 include,main,return은 생략했습니다)
안에 둬야 기능하는 while, printf
int num;
int sum = 0;
while (1) {
scanf_s("%d", &num);
if (num == -1)break;
if (num % 3 != 0) continue;
sum = num / 3;
printf("%d\n", sum); } // **while 구문 안에 들어감**
밖에 둬야 기능을 하는 while, printf
이것은 정수를 계속 출력하다가 홀수만 합,평균을 내고 0을 입력하면 탈출하는 코딩입니다.
int num; int sum = 0, cnt = 0; double avg; while (1) { scanf_s("%d", &num); if (num == 0) break; if (num % 2 != 0) { sum += num; cnt++; } } avg = (double)sum / cnt; printf("홀수의 합 =%d\n", sum); // **while구문 밖에 위치** printf("홀수의 평균 =%.2lf\n", avg);
아무리봐도.. 같은 형식의 코딩인데.. 왜 하나는 while안에 있어야 하며, 왜 다른 하나는 while밖에 있어야하는지.. 이해가 안되네요 ㅠ 혹시 C 언어 잘하시는 분 답변 부탁드립니다^
1 답변
-
while은 반복문입니다. 따라서 반복문 안에 적은 출력함수는 반복적으로 실행됩니다.
while (1) { scanf_s("%d", &num); if (num == -1)break; if (num % 3 != 0) continue; sum = num / 3; printf("%d\n", sum); }
위 코드의 printf는 반복문의 내용의 한줄이기때문에 반복할때마다 실행됩니다. 숫자를 하나 입력받고 입력 숫자가 -1이라면 반복문 탈출하고, 3의 배수일 때마다 출력합니다.
while (1) { scanf_s("%d", &num); if (num == 0) break; if (num % 2 != 0) { sum += num; cnt++; } } avg = (double)sum / cnt; printf("홀수의 합 =%d\n", sum); // **while구문 밖에 위치** printf("홀수의 평균 =%.2lf\n", avg);
반면에 위의 코드는 반복실행중에는 아무런 출력도 없고, 반복 실행이 모두 끝난후 최종적으로 한번만 출력합니다.
결론: 반복적인 행동중 매번 출력할 일이 있을 때는 반복문안에 출력문을 적어야 하고, 행동중이 아닌 행동이 모두 끝난후에 출력할 때에는 반복문 밖에 출력문을 적어야 합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력