[정보처리기사] 유튜브 두목넷 정보처리기사 실기를 위한 C 특강(5강 제어문-반복구조)

728x90

CH05 제어문-반복구조

 

1. C언어는

  • 구조화된 프로그래밍
  • 블록 제어구조 {}
    • 순차(seauence) 제어구조
    • 선택(select) 제어구조
    • 반복(looping) 제어구조

 

제어문

제어구조 제어문
순차구조 int a;                 # 변수 선언문;
a = 10 + 20;     # 변수 대입문;
선택구조 if문
switch ~ case 문
반복구조 while문
do ~ while문
for문
제어명령문; break
continue
go to

 

2. while문

 

형식

제어변수 초기화;
while(조건식)
{
	반복 수행문;
    	제어변수 증값식;
}
#while문 예시

#include <stdio.h>
void main()
{
	int i;
    i = 1;
    while(i<=5)
    {
    	printf("합격!");
        i++;
    }
}
  1. while 반복문 조건식은 변수 i가 5 이하일 때까지 반복
  2. { printf("합격!"); i++; }:  "합격!" 문자열을 출력하고, i 값을 1씩 증가
  3. 변수 i가 5보다 큰 경우 반복문을 종료

 

# while문 예시2

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

 

  1. while 반복문은 변수 i가 10 이하일 때까지 반복
  2.  sum 변수에 i 값을 누적하고, i 값을 1씩 증가
  3. printf("1부터 10까지의 합: %d", sum);: 반복문이 종료된 후, 변수 sum에 저장된 값을 출력 

 

3. do ~ while문

# do ~ while문 예시

#include <stdio.h>
void main()
{
	int i; int sum = 0
    i = 1;
    do
    {
    	sum += i;
        i++;
    }while(i<=10)

    printf("1부터 10까지의 합: %d", sum);

 

4. for문 VS while문

형식

for(제어변수 초기화; 조건식; 증감값)
{
	반복 수행문;
}
# for문 예시

#include <stdio.h>
void main()
{
	int i; int j;
    for(i=2; i<10; i++)
    {
    	for(j=1; j<10; j++)
        {
        	printf("%d * %d = %2d", i, j, i*j);
        }
     }
 }
  1. 정수형 변수 i와 j를 선언
  2. for(i=2; i<10; i++): 외부 반복문으로, i가 2부터 시작하여 9까지 1씩 증가
  3. for(j=1; j<10; j++): 내부 반복문으로, j가 1부터 시작하여 9까지 1씩 증가
  4. 현재의 i와 j 값을 사용하여 구구단을 계산하고 출력 "%2d" 형식 지정자는 이 형식 지정자는 정수를 출력할 때 사용되며, 출력되는 숫자를 최소한 2자리로 표시하되, 공백을 채워서 오른쪽 정렬
  5. 바깥쪽 for 반복문이 종료될 때까지 내부의 for 반복문이 실행되며, 결과적으로 2단부터 9단까지의 구구단이 출력

 

5. 무한 반복

 

while문

while(1)
{
	반복대상;
}

 

for문

for(;;)
{
	반복대상;
}

 

6. break문

# break문 예시

#include <stdio.h>
void main()
{	int num, sum=0;
	while(1)
    {
    	printf("정수 입력(끝:0));
        scanf("%d", &num);
        if(num==0)
        	break;
        sum += num;
    }
    printf("입력한 정수의 합계: %d", sum);
}
  1. while(1): 조건식으로 1을 사용하였기 때문에 무한히 반복된다.
  2. scanf("%d", &num);: 사용자로부터 정수를 입력받는다.
  3. 입력받은 정수가 0인 경우, 즉 사용자가 반복을 끝내길 원하는 경우 무한 루프를 탈출하기 위해 break 문을 사용한다.
  4. sum += num;: 0이 아닌 정수가 입력되면, 해당 정수를 sum에 더한다.
  5. 무한 루프를 탈출한 후, 입력받은 정수들의 합을 출력한다.

 

7. continue문

# continue문 예시

#include <stdio.h>
void main()
{	int i;
	for(i=1; i<=10; i++)
    {
    	if(i%2 == 0)
        	continue;
        printf("%d", i)
    }
}
  1. if문은 i를 2로 나눈 나머지가 0인 경우(즉, 짝수인 경우) continue 문을 사용하여 반복문의 다음 반복으로 넘어간다. 이는 짝수일 경우 아래의 printf 문을 실행하지 않고 반복문의 다음 반복으로 넘어가게 한다.
  2. 홀수값 출력

 

8. goto문

  • 무조건분기 goto문
  • 잘 사용하지는 않지만 유용한 경우가 있어 C언어에는 존재한다  
# goto문 예시

#include <stdio.h>
void main()
{	int i;
	START:
    
    	printf("문자 하나를 입력 (Q:종료) :);
        scanf("%c", &ch);
        if( ch == 'Q')
        	goto END;
        else
        	goto START;
             
    END:	printf("종료");
}
  1. START:: 레이블(label)인 START를 정의합니다. 이는 goto 문에서 이동할 위치를 나타낸다.
  2. if( ch == 'Q') goto END;: 입력받은 문자가 'Q'인 경우에는 END로 이동한다.
  3. else goto START;: 그렇지 않은 경우에는 START로 이동하여 다시 반복한다.
  4. END:: 레이블(label)인 END를 정의합니다. 'Q'를 입력하면 이 위치로 이동하여 프로그램이 종료된다.

 

728x90