게시글 삭제
정말 삭제하시겠습니까?
C언어 7-9 : 단일 for문 심화 예제
[주요 목차]
가변 개수 입력받아 합과 평균 구하기
누적 변수 초기화와 min/max 처리
단일 for문으로 만드는 재미있는 출력 효과
C언어 공부하다 보면 for문을 배운 뒤에 “이제 좀 알 것 같아” 싶었는데, 실제로 숫자 몇 개 받아서 평균 내는 프로그램을 만들 때 자꾸 이상한 결과가 나오곤 하죠. 특히 단일 for문 심화 예제를 제대로 이해하지 못하면 매번 같은 실수를 반복하게 돼요. 이번 글에서는 유튜브 영상 내용을 바탕으로, 가변 개수 입력으로 합과 평균을 구하고, min/max를 안전하게 처리하는 방법, 마지막으로 재미있는 출력 효과까지 단일 for문으로 직접 실험한 내용을 정리했어요. 영상을 보지 않아도 따라 할 수 있도록 구체적인 코드 흐름과 초기화 팁, 실제 테스트 결과를 함께 담았습니다. 이 글을 끝까지 읽으면 for문 실전에서 가장 많이 하는 실수를 피할 수 있을 거예요.
C언어 7-9 : 단일 for문 심화 예제 · 주요 포인트 1
가변 개수 입력받아 합과 평균 구하기
영상에서는 먼저 “몇 개의 숫자를 입력할 건가요?”라고 물어보고, 그 개수만큼 반복해서 숫자를 받는 구조를 보여줘요.
이때 중요한 점은 반복 횟수를 변수(total)로 받아서 for문의 조건식에 그대로 넣는 거예요. 예를 들어 total이 3이면 1부터 3까지 세 번 돌면서 scanf로 값을 받고 sum에 계속 더합니다.
두 개만 입력할 때는 2로, 열 개를 입력할 때는 10으로 바꾸기만 하면 돼서 코드가 훨씬 깔끔해지죠.
평균을 구할 때는 반드시 2.0이나 (double)total로 나눠야 해요. 정수끼리 나누면 소수점이 잘려서 1.5 대신 1이 나올 수 있거든요.
직접 테스트해 보니 total=2, 숫자 1과 2를 넣었을 때 sum=3, average=1.5가 제대로 나왔어요. 이렇게 가변 개수를 처리하면 매번 for문을 새로 쓰지 않아도 되니까 실전에서 정말 편하더라고요.
C언어 7-9 : 단일 for문 심화 예제 · 본문 이미지 2
누적 변수 초기화와 min/max 처리
여기서 가장 많이 실수하는 부분이 바로 sum 변수 초기화예요.
영상에서 강조한 대로, 루프를 돌 때마다 sum을 0으로 초기화하지 않으면 이전에 계산했던 값이 계속 남아서 합이 점점 커져버려요.
예를 들어 첫 번째에 1,2를 넣어 3이 나왔는데, 두 번째에도 1,2를 넣었더니 6이 나오는 현상이죠. 해결책은 for문이 시작하기 직전에 sum = 0;을 넣는 거예요.
min과 max를 구할 때도 초기값 설정이 중요합니다. min은 INT_MAX로, max는 INT_MIN으로 시작하면 처음 들어오는 값과 바로 비교할 수 있어요.
0으로 초기화했다가 마이너스 값만 들어오면 min이 제대로 안 잡히는 경우가 많거든요.
영상에서는 0을 입력하면 프로그램이 끝나도록 while(1) 안에 if(total == 0) break;를 넣는 방식도 보여줬는데, 이 구조를 조합하면 한 번에 합, 평균, min, max까지 모두 출력할 수 있더라고요.
C언어 7-9 : 단일 for문 심화 예제 · 주요 포인트 3
단일 for문으로 만드는 재미있는 출력 효과
단일 for문을 응용하면 숫자가 점점 느리게 출력되는 재미있는 효과도 만들 수 있어요.
1부터 1000까지 출력하면서 뒤로 갈수록 for문을 더 많이 돌리는 방식을 사용하면, 숫자가 화면에 나타나는 속도가 점점 느려지는 것처럼 보이죠.
예를 들어 i를 출력한 뒤 for(int j=0; j<i*10000; j++); 같은 빈 반복문을 넣으면 뒤쪽 숫자일수록 대기 시간이 길어집니다.
또 다른 팁은 백스페이스(\b)를 활용하는 거예요. 마지막에 출력되는 숫자의 자릿수만큼 \b를 넣으면 커서가 앞으로 돌아가서 같은 자리에서 숫자가 바뀌는 것처럼 보이더라고요.
4칸 정도 \b를 주면 100까지 출력해도 깔끔하게 제자리에서 바뀌는 효과가 나왔어요.
이렇게 단순한 for문 하나로도 시각적인 재미를 줄 수 있다는 게 정말 신기하지 않나요? 컴퓨터 속도를 체감할 수 있는 간단한 실험으로 활용하기에도 딱 좋습니다.
[자주 묻는 질문]
단일 for문으로 가변 개수 평균을 구할 때 sum을 어디서 초기화해야 하나요?
for문이 시작되기 직전에 sum = 0;을 넣는 게 가장 안전해요. 루프 바깥에서 한 번만 초기화하면 첫 번째 계산 이후에 값이 남아서 다음 계산이 틀어지기 쉽거든요. 영상에서도 루프 돌 때마다 새로 0으로 만드는 걸 강조했어요. 이렇게 하면 1,2 넣었다가 다시 1,2 넣어도 항상 3과 1.5가 제대로 나옵니다.
min과 max 초기값은 왜 INT_MAX와 INT_MIN을 쓰나요?
0으로 초기화하면 마이너스 숫자만 들어왔을 때 min이 잘못 잡혀요. INT_MAX로 시작하면 어떤 값이 들어와도 바로 min으로 갱신되고, INT_MIN은 max에 적합하죠. 를 include하면 바로 쓸 수 있어서 실전에서 자주 사용합니다.
for문으로 숫자를 점점 느리게 출력하려면 어떻게 하나요?
출력할 숫자 i가 커질수록 빈 for문을 더 많이 돌리면 돼요. 예를 들어 for(j=0; j