대학교/C언어

C언어 - (5) 반복문

매 석 2023. 4. 14. 13:09
반응형

- 반복문

 

- 반복 구조 : 어떤 조건이 만족될 때까지 루프를 도는 구조

- 반복문의 종류 : while(do_while), for 문이 있다.

 

 

- while문

while(반복 조건)
{
      반복문장
}

 

반복문은 무한 루프 문제가 발생할 수 있기에

반복이 종료되는지 확인해야 한다.

- if문과 while문의 차이점

if문은 조건이 만족되면 1회만 실행되나, while문은 여러 번 시행한다.

EX) 최대 공약수 찾기 (유클리드 호제법)

#include <stdio.h>
int main(void)
{ 
     int x, y, r; 
     printf("두 개의 정수를 입력하시오(큰수, 작은수): "); 
     scanf_s("%d%d", &x, &y); 
     while (y != 0) 
     { 
          r = x % y; 
          x = y; 
          y = r; 
     } 
     printf("최대 공약수는 %d입니다.\n", x); 
     return 0; 
}

 

- do_while문

do
{
     반복문장
} while (조건);

 

​최소 1회 반복한다는 특징이 있다.

 

EX) 정수의 합 구하기

#include <stdio.h>
int main(void)
{
     int number, sum = 0;
     do
     {
          printf("정수를 입력하시오: ");
          scanf_s("%d", &number);
          sum += number;
     } while (number != 0);
     printf("숫자들의 합 = %d \n", sum);
     return 0;
}

 

+ 난수 함수(rand)

srand((unsigned)time(NULL)); //난수 발생기 시드 설정 <time.h>
rand()%100; // 0~99까지 난수 발생 <stdlib.h>

 

 

- for문

for(초기식;조건식;증감식){
    반복문장
}

 

초기식 : 반복루프를 시작하기 전에 한번만 실행된다. 변수 값을 초기화하는 용도로 사용된다.

조건식 : 반복의 조건을 검사하는 수식이다. 거짓이면 반복이 중단된다.

증감식 : 한 번의 루프 실행이 끝나면 증감식이 실행된다.

EX) 1~10까지의 정수의 합계

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

 

- while과 for의 관계

- for의 다양한 증감수식의 형태

for(int i=10;i>0;i--)
for(int i=0;i<10;i+=2)
for(int i=0;i<100;i=(i*i)+2)
for(; ; ) //무한 반복 루프
for(;i<100;i++) //초기화 부분 생략
for(i=0,k=0;i<100;i++) //2개 이상의 변수 초기화
for(printf("반복"),i=0;i<100;i++)
for(i=0;i<100&&sum<2000;i++)

 

- 무한루프 해결

continue: 다음 반복을 시작한다.

break : 반복을 중단한다. (하나의 루프만 벗어날 수 있다.)

goto : 여러 개의 루프를 한번에 벗어날 수 있다.