GiantStepDEV
1. 조건문
 - 분기문(분기란? 실행의 흐름을 다른쪽으로 보내는 것)
   : 조건분기 (if, if-else, is-else-if)
 - 무조건 분기문
   : goto문
 - 선택문(switch)

2. 반복문(for, while, do-while)

단일 조건문

#include <stdio.h>

int main() {
	int a = 20;

	if (a > 20) {
		printf("a는 20보다 크다.\n");
	}

	if (a < 20) {
		printf("a는 20보다 작다.\n");
	}
	else {
		printf("a는 20보다 크다.\n");
	}

	// C언어에서는 정수값을 가지고 논리값을 처리하는 특성이 있어서 정수식도 가능하다.
	if (a - 20) {
		printf("a는 20이 아니다.\n");
	}
	else {
		printf("a는 20이다.\n");
	}
    
	return 0;
}

다중 조건문(조건이 여러개)

값을 조건으로 따질 때는 큰 값부터 작은 값으로 잘라서 조건을 만들지 말고
 값의 범위를 명확하게 조건으로 만드는게 좋음.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	int money = 0;

	printf("용돈 금액을 입력하세요. : ");
	scanf("%d", &money);

	if (money > 100000) {
		printf("피시방\n");
	}
	else if (money <= 100000 && money > 80000) {
		printf("영화관람\n");
	}
	else if (money <= 80000 && money > 60000) {
		printf("친구만남\n");
	}
	else if (money <= 60000 && money > 40000) {
		printf("중국집\n");
	}
	else { // 생략가능
		printf("낮잠\n");
	}

	return 0;

}

선택문(switch)

정수 값의 변화에 따라서 분기 처리할 때 사용.

if-else if 보다 가독성이 좋음.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	int buttonNum = 0;
	printf("리모컨의 번호를 입력하세요.(0:TV꺼 1:TV켜 2:볼륨업 3:볼륨다운 ): ");
	scanf("%d", &buttonNum);

	switch (buttonNum) {
	case 1:
	{
		int i = 0;
		printf("TV꺼\n");
		break;
	}
		
	case 2:
		printf("TV켜\n");
		break;

	case 3:
		printf("볼륨업\n");
		break;

	case 4:
		printf("볼륨다운\n");
		break;

	default: printf("잘못 입력하셨습니다.\n");
		break;
	}
	
	return 0;
}

* case구문 안에서 변수를 만들 때에는 중괄호 블럭 생성하고, 그 안에 변수 만들어야 함.

반복문(for문)

for문은 반복 횟수를 아는 경우에 사용하기 좋은 구조

for(초기식; 조건식; 증감식) { 
명령어
}
int main() {
	int count = 0;
	for (int i = 0; i < 10; i++) {
		printf("*");
	}
    
    printf("\n\n");
    
	// 조건식 생략 가능
	for (int i = 0; ; i++) {
		if (i > 10) break;
		printf("count = %d\n", count);
	}

	printf("\n");

	// 중첩 가능
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
			printf("*");
		} printf("\n");
	}

	printf("\n\n");

	// 초기식,조건식,증감식에 여러 변수를 넣을 수 있음
	for (int i = 0, j = 10; i < 10 && j>0; i += 2, j -= 2) {
		printf("i = %d, j = %d\n", i, j);
	}

	printf("\n\n");

	// 실수식도 가능!
	for (float a = 0.0f; a < 10.34f; a += 0.2f) {
		printf("*");
	} printf("\n");

	return 0;
}

반복문(while, do-while문)

while문은 반복횟수를 모르는 경우에 사용하기 좋은 구조
반복횟수는 모르나 while문의 소괄호 안에 조건만 만족한다면 몇 번을 반복해도 상관없을 때 사용하기 좋음.

#include <stdio.h>

int main() {
	float value = 343.34f;

	printf("while문\n\n");
	while (value > 0) {
		value -= 12.3f;
		printf("value = %f\n", value);
	}

	printf("do-while문\n\n");
	do {
		value += 11.234f;
		printf("value = %f\n", value);
	} while (value < 2000.0f);

	return 0;
}

goto문(무조건 분기)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	int number = 0;

Start: // 레이블: 프로그램의 코드 실행 위치

	printf("정수값을 입력하세요. : ");
	scanf("%d", &number); // 0보다 작은 수를 입력하면 종료

	if (number > 0) goto Start;
	else goto Exit;

	printf("종료중\n"); // 이 라인은 절대 실행되지 않음

Exit: // 레이블
	printf("종료됨\n");
	
	return 0;
}

continue문

#include <stdio.h>

int main() {

    for (int i = 0; i < 100; i++) {
        if (i % 2 == 0) { // 짝수는 건너띄고 홀수만 출력
            continue;   // 반복문에서 continue문을 만나면 continue문 이후의 코드를
            // 건너 뛰어서 실행됩니다.
        }

        printf("i = %d\n", i);
        
        return 0;
    }

flag

중첩된 반복문을 탈출할때  flag값을 사용

#include <stdio.h>

int main() {
    int count = 1000;
    int count1 = 10000;
    int count2 = 20000;

    int flag = 0;
    while (count > 0) {
        count -= 10;
        while (count1 > 0) {
            count1 -= 100;
            while (count2 > 0) {
                count2 -= 10;

                printf("count = %d, count1 = %d, count2 = %d\n", count, count1, count2);
                if (count < 100 && count1 < 100 && count2 < 100) {

                    flag = 1;
                    break;   // 가장 가까운 반복문을 탈출할 때 break문을 사용
                }
            }

            if (flag == 1) break;
        }

        if (flag == 1) break;
        
        return 0;
    }

 goto 문을 사용하여 중첩된 반복문을 한번에 탈출

#include <stdio.h>

int main() {
    count = 1000;
    count1 = 10000;
    count2 = 20000;

    while (count > 0) {
        count -= 10;
        while (count1 > 0) {
            count1 -= 100;
            while (count2 > 0) {
                count2 -= 10;

                printf("count = %d, count1 = %d, count2 = %d\n", count, count1, count2);
                if (count < 100 && count1 < 100 && count2 < 100) {

                    goto LoopExit;
                }
            }
        }
    }

LoopExit:

    return 0;
}
profile

GiantStepDEV

@kongmi

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!