정보처리기사

[정보처리기사] C언어 특강 13 ~ 17강 정리(삼항연산자, 제어문, 반복문)

jaeheon0520 2024. 10. 1. 23:44

삼항연산자

조건에 따라서 다른 명령을 수행하는 연산자

구조: 조건 ? 참 : 거짓

 

int a = 10 > 5 ? 10 : 5;
printf("%d", a); // 10

 

연습문제

#include <stdio.h>

void main() {
    int a, b;
    a = 20;
    b = (a > 10) ? a+a : a*a;
    printf("b=%d\n", b); // b=40
}

 

if 문

조건에 따라서 다른 명령어들을 수행

 

switch 문

주어진 값에 맞는 명령어들을 수행

 

연습문제

#incldue <stdio.h>
int main() {
    int a = 0, b = 1;
    switch(a) {
	case 0 : printf("%d\n", b++); break; // 1
        case 1 : printf("%d\n", ++b); break;
        default : printf("%d\n", b); break;
    }
    return 0;
}

 

만약 위 연습문제에서 break; 가 없다면?

해당 case 로 들어온 다음 그 아래에 case 문을 모두 들어가게 됨.

 

ex) a = 0 인데 break 가 없다면

1

3

3

이 출력됨

 

ex) a = 1 인데 break 가 없다면

case 0은 안들어가고, 바로 1로 들어감

2

2

가 출력됨

 

헷갈리게 내면 break를 쓰고 안쓰고 이런식으로 장난질을 많이 침. break 를 만날때까지 쭉 실행해줄 것.

 

반복문

(1) for : 정해진 횟수만큼 반복

(2) while: 조건이 만족하는 동안 반복

(3) do ~ while: 무조건 한번 수행 후 조건이 만족하는 동안 반복

 

연습문제

#include <stdio.h>

int main() {
	int j;
    int sum = 0;
    for ( j = 2; j <= 70; j += 5)
    	sum += 1;
	printf("%d", sum); // 14, j = 72
}

// j = 72 까지 올라감을 명심하자!, 72까지 올라가니까 반복문을 빠져 나올수 있었던 것

 

while 문

int j = 0;
while (i < 3)
{
    printf("i = : %d\n", i); // 0 1 2
    i++;
}
printf("sum = : %d\n", i); // 3

// i++가 마지막까지 실행됨 주의!

 

연습문제

#include <stdio.h>
int main() {
    int count = 2;
    int sum = 0;
    while (count <= 10) {
    	sum += count; // 2 6 12 20 30
        count += 2; // 4 6 8 10 12
    }
    printf("%d", sum); // 30
}

// 조건에 맞으면 반복문 끝까지 수행하기, 써보면서 풀기

 

do while 연습문제

int i = 3;
do
{
	printf("i = %d\n", i); // 3
    i++;
} while(i<3);
printf("sum = %d\n", i); // 4 

// 제발 반복문 끝까지 수행하기 (i++ 결과를 반영하기), 만약 while 문이었으면 sum = 3 만 출력

 

연습문제

#incldue <stdio.h>
void main() {
	int a, b;
    a = 2;
    while (a-- > 0) { // 후치증감연산자 -> 일단 2가 0보다 큰지 먼저 비교하고 -- 수행, 마지막으로 a-- > 0 을 비교할때 -- 이 수행되니까 a = -1인 상태로 반복문 빠져나옴
    	printf("a = %d\n", a); // a = 1, a = 0
    }
    // a = -1
    for (b = 0; b < 2; b++) { 
    	printf("a = %d\n", a++); // 후치증감연산자 이므로 a 값을 먼저 출력하고 ++ 수행
    }
    // a = 1, b = 2
}

// 1
// 0
// -1
// 0