C++의 반복문(for문)

강상은·2023년 12월 27일

C++

목록 보기
3/5

개요

1. 반복이란?

같은 처리 과정을 여러 번 되풀이하는 것

2. 반복 구조의 필요성

printf("Hello World!\n")
printf("Hello World!\n")
printf("Hello World!\n")
printf("Hello World!\n")
printf("Hello World!\n")
printf("Hello World!\n")

위와 같은 코드를 아래처럼 간단하게 입력이 가능하다

for(int i=1; i<=10; i++)
printf("Hello World!\n")

반복문

1. 반복문의 종류

for문

반복 횟수를 정확히 알고 있을 때 사용

while 문

반복 횟수를 정확히 알지 못할 때 사용

do~while 문

무조건 한 번은 수행 후 제시한 조건을 판별하는 while문

2. for문

2-1. for문의 기본 형식과 동작 순서

반복 순서

①은 처음 한번만 수행
②를 수행 후, 조건식이 참일 동안 ③,④,②를 반복 수행하고, 조건식이 거짓이면 반복 종료

기본 형식 예시

for문의 동작 순서도를 표현

for문의 동작 순서

#include <stdio.h>
int main(void){
	
	int i;
	
	for(i=0; i<5; i++)
		printf("Hello World!\n");
		
	return 0;
}

출력 결과

2-2. 예제) 정수의 합을 구하는 프로그램

#include <stdio.h>
int main(void){
	
	int i, sum;
	
	for(i=1; i<=10; i++)
		sum += i;
		
		printf("1부터 10까지의 정수의 합= %d\n",sum);
	
		
	return 0;
}

오류 발생 원인

sum이 초기화되지 않았음

쓰레기 값의 이해

  • 변수 안에 이미 다른 값이 있는 상태로 연산을 수행함으로써 비정상적인 결과 값이 출력됨
  • 프로그램 내에서 변수가 초기화되지 않은 것이 원인
  • 누적값을 표현하는 변수의 초기화를 수행함으로써 문제 해결

int sum = 0;

2-3. 블록 사용

  • 문장 이상을 반복문에 포함시킬 경우, 중괄호를 사용하는 블록은 필수
  • 1~100까지 3의 배수의 개수와 5의 배수의 개수 구하기
#include <stdio.h>
int main(void){
	
	int i, count_3 =0, count_5=0;
	
	for(i=1; i<=100; i++) {
		
		if(i%3 == 0)
			count_3++;
		if(i%5 == 0)
			count_5++;
	}
	
	printf("\n3의 배수의 갯수:%d", count_3);
	printf("\n5의 배수의 갯수:%d", count_5);
		
	return 0;
}

2-4. 예제) 팩토리얼 구하기

팩토리얼(factorial)은 양의 정수 n에 대해 n!로 나타내며, 1부터 n까지의 모든 양의 정수를 곱한 값을 의미합니다. 수학적으로는 다음과 같이 표현됩니다

예를 들어, 5!는 다음과 같이 계산

5!=5×4×3×2×1=120

#include <stdio.h>
int main(void){
	
	long fact =1; 
	int i,n;
	
	printf("정수를 입력하시요 : ");
	scanf("%d",&n);
	
	for(i=1;i<=n;i++)
		fact = fact *i;
		
	printf("%d!은 %d입니다.\n",n,fact);
	
	return 0;
}

2-5. 예제) 1부터 입력한 수까지 3의 배수 합

#include <stdio.h>
int main(void){
	
	
	int i,n,sum=0;
	
	printf("몇까지 합을 구할까요: ");
	scanf("%d",&n);
	
	for(i=1;i<=n;i++)
		if(i%3==0)
			sum+=n;
	printf("1~%d까지 3의 배수의 합: %d\n",n,sum);
	
	return 0;
}

2-6. 예제) 구구단 2단 출력

#include <stdio.h>
int main(void){
	int i, dan;
	
	printf("\t출력할 구구단은? ");
	scanf("%d",&dan);
	
	printf("\n\t*%d단*\n\n",dan);
	
	for(i=1; i<=9; i++)
		printf("\t%dX%d=%d\n",dan,i,2*i);
	
	return 0;
}

2-7. 다양한 증감수식의 형태

뺄셈

for(int i=10; i>0; i--)
printf("Hello World!\n");

2씩증가

for(int i=0; i<10; i+=2)
printf("Hello World!\n");

for(int i=1; i<10; i*=2)
printf("Hello World!\n");

어떤 수식이라도 가능

for(int i=0; i<100; (i*i)+2)
printf("Hello World!\n");

무한 반복 루프

for(;;)
printf("Hello World!\n");

식의 조건 중 한 부분이 없을 수도 있음

for(;i<100;i++)
printf("Hello World!\n");

2개 이상의 변수 초기화

for(i=0,k=0; i<100; i++)
printf("Hello World!\n");

어떤 수식도 가능
for(printf("반복시작"), i=0; i<100; i++)
printf("Hello World!\n");

2.8 무한루프

  • for문에서 초기값,조건식,증감식을 모두 지운 형태
  • 사용자가 어떤 작업을 계속 반복하고자 할 때 사용
  • 사용자가 Ctrl+C를 눌러야 중단됨

0개의 댓글