정보처리기사

[정보처리기사] C언어 특강 18 ~ 1강 정리(복잡한 제어문, 반복문 )

jaeheon0520 2024. 10. 3. 12:43

연습문제

#include <stdio.h>

int main() {
    int a = 120, b = 45;
    while (a != b) {
    	if (a > b) a -= b; // a = 75 b = 45, a = 30 b = 45, a = 30 b = 15, a = 15 b = 15
        else b =- a;
    }
    printf("%d", a); // 15
}

 

반복문 옵션

(1) continue : 더이상 아래 문장을 실행하지 않고, 반복문 처음으로 돌아감

(2) break: 반복문을 빠져나감

 

#include <stdio.h>
int main() {
    int i, sum = 0;
    for (i = 1; i <= 10; i +=2) { // 1, 3, 5, 7, 9 중에
		if (i % 2 && i % 3) continue;
        sum += i; // 12
    }
    printf("%d", sum); // 12
    return 0;
}

 

for (int i = 0; i < 2; i++) {
	for (j = 0; j < 2; j++) {
    	printf("i: %d, j: %d", i, j);
    }
}

// 0 0
// 0 1
// 1 0
// 1 1

// 반복문 밖에 저장되어 있는 i,j 는 모두 2

 

for (i = 0; i < 3; i++) {
    if(i == 1) continue;
    sum++;
}

// sum = 2
// i = 3

 

for (i = 0; i < 3; i++) {
    if(i == 1) break;
    sum++;
}

// sum = 1;
// i = 1

 

연습문제 ( 주의! )

#include <stdio.h>
void main() {
    int i, j, sum = 0;
    for (i = 1; i < 10; i++) {
    	for(j = 1; j < 10; j++) {
	    if (j % 3 == 0) continue; // (9 - 3) * 7 = 42
            if (i % 4 == 0) break;
            sum++;
        }
    }
    printf("%d", sum); // 42
}

// continue와 break는 포함되어 있는 반복문 하나만 빠져나온다, 이중 반복문을 모두 빠져나오는게 아니다