사자자리

[C언어] 4주차 제어문 본문

C언어/C언어 이론

[C언어] 4주차 제어문

renne 2022. 5. 14. 01:25

제어문

조건문 if, switch
반복문 for, while, do while
분기문 break, continue, return, goto

 

조건문 if

#include <stdio.h>
int main(){
    int score;
    scanf("%d", &score);
    
    if (score < 0 || score > 100) printf("잘못 입력하셨습니다.");
    else{
        if (score >= 90) printf("A");
        else if (score >= 80) printf("B");
        else if (score >= 70) printf("C");
        else printf("D");
    }
    return 0;
}

 

조건문 switch

 - 형식이 균일하고, 처리할 조건이 많을 때 사용한다.

 - switch (정수식)에서 정수식의 값이 case에 지정한 값과 같으면 해당 코드를 실행한다.

 - 아무 case에도 해당되지 않으면 default의 코드를 실행한다. default는 생략 가능하다. (조건문 if의 else같은 역할)

#include <stdio.h>
int main(){
    int menu;
    printf("1. 에스프레소\n");
    printf("2. 아메리카노\n");
    printf("3. 카페라떼\n");
    printf("4. 카페모카\n");
    printf("메뉴를 고르세요: ");
    scanf("%d", &menu);
    
    switch (menu){
    case 1:
        printf("3,000원입니다.");
        break;
    case 2:
        printf("4,000원입니다.");
        break;
    case 3:
        printf("4,500원입니다.");
        break;
    case 4:
        printf("5,000원입니다.");
        break;
    default:
        printf("잘못 입력했습니다.");
        break;
    }
    return 0;
}

 

 - break를 작성하지 않으면, 해당 case와 그 밑의 case, default가 모두 실행된다.

#include <stdio.h>
int main(){
    int num;
    printf("1 이상 5 이하의 정수를 입력하세요: ");
    scanf("%d", &num);
    
    switch (num) {
    case 1:
        printf("2보다 작다.\n");
    case 2:
        printf("3보다 작다.\n");
    case 3:
        printf("4보다 작다.\n");
    case 4:
        printf("5보다 작다.\n");
    case 5:
        printf("6보다 작다.\n");
    }
    return 0;
}

 

 - switch (정수식)에는 정수 자료형만 사용할 수 있다. 문자 자료형(char)은 정수 자료형이므로 사용할 수 있다.

#include <stdio.h>
int main(){
    char grade;
    scanf("%c", &grade);

    switch (grade){
    case 'A':
        printf("90점 초과 100점 이하입니다.");
        break;
    case 'B':
        printf("80점 초과 90점 이하입니다.");
        break;
    case 'C':
        printf("70점 초과 80점 이하입니다.");
        break;
    default:
        printf("70점 이하입니다.");
        break;
    }
    return 0;
}

 

반복문 for

초기식 int i = 0

 - 정수형 변수 i: 루프 인덱스. index의 첫 알파벳인 i를 주로 사용한다. for문 밖에서 선언해도 된다.

 

조건식 i < 3

 - 조건식일 참일 동안 반복하고, 거짓일 때 끝낸다.

 

변화식 i++

 - 반복문이 한 번 실행될 때마다 수행하는 식

#include <stdio.h>
int main(){
    for (int i = 0; i < 3; i++){
        printf("Regulus Black\n");
    }
    return 0;
}

 

 - 초기식, 조건식, 변화식, 반복할 문장은 각각 생략 가능하다.

 - 무한 루프에서 빠져나오려면 Ctrl + c

#include <stdio.h>
int main(){

    //초기식 생략
    int i = 0;
    for ( ; i < 3; i++) printf("%d\n", i);

    //조건식 생략(무한 루프)
    for (int j = 0; ; j++) printf("%d\n", j);

    //변화식 생략(무한 루프)
    for (int k = 0; k < 3; ) printf("%d\n", k);
    
    //초기식, 조건식, 변화식 생략(무한 루프)
    for ( ; ; ) printf("Regulus\n");

    //반복할 문장 생략
    for (int l = 0; l < 3; l++);

    return 0;
}

 

 - 중첩해서 사용할 수 있다.

#include <stdio.h>
int main(){
    //구구단
    for (int i = 2; i <= 9; i++){
        for (int j = 1; j <= 9; j++){
        	printf("%d X %d = %2d\n", i, j, i*j);
        }
    	printf("\n");
    }
    return 0;
}

 

반복문 while

 - while (조건식)에서 조건식이 참일 동안 반복한다.

 - 중괄호 {} 안에 변화식을 입력한다. 변화식이 없으면 무한 루프가 된다.

#include <stdio.h>
int main(){
    int i = 0;
    while (i < 3){
        printf("Regulus Black\n");
        i++;
    }
    return 0;
}

 

 - 무한 루프를 만들기 편하다.

#include <stdio.h>
int main(){
    //조건식에 true를 입력하는 방법
    while (true) printf("Regulus Black\n");
    //조건식에 1을 입력하는 방법
    while (1) printf("Regulus Black\n");
    return 0;
}

 

반복문 do while

 - 반복문 for와 while은 조건식을 먼저 검사하고, 조건식이 참인 경우에만 문장을 수행한다.

 - 반복문 do while은 일단 먼저 문장을 수행한 다음에 조건식을 검사한다. 따라서 문장이 적어도 한 번은 수행된다.

#include <stdio.h>
int main(){
    int i = 100;
    do {
        printf("Regulus Black\n");
        i++;
    } while (i < 50);
    return 0;
}

 

분기문 break

 - 가까운 반복문을 탈출한다.

 

분기문 continue

 - 가까운 반복문의 시작 부분으로 이동한다.

 

분기문 return

 - 함수를 호출한 곳으로 돌아간다.

 - main 함수 안에서 return을 만나면 프로그램이 종료된다.

#include <stdio.h>
int main(){
    for (int i = 1; i <= 10; i++){
        if (i == 5) return 0;
        else printf("%d\n", i);
    }
    printf("이 문장은 출력되지 않습니다.");
    return 0;
}

 

분기문 goto

 - 별다른 제약 없이, 프로그램 수행 중 특정 위치로 이동한다.

 - 제어의 흐름을 갑자기 바꾸면 프로그램을 이해하기 어려워지므로 사용을 자제하는 것이 좋다.

 - 이동할 문장을 가리키는 레이블(lable)을 지정해서 사용한다. 레이블은 " : "을 붙여서 만든다.

#include <stdio.h>
int main(){
    for (int i = 1; i <= 10; i++){
        if (i == 5) goto exit;
        else printf("%d\n", i);
    }
    exit:
    printf("이 문장은 출력됩니다.");
    return 0;
}

 


 

[백준] 1009번 분산처리

 

 

#include <stdio.h>
int main(){
    int t, a, b, num;
    scanf("%d", &t);
	
    for (int i = 0; i < t; i++){
        scanf("%d %d", &a, &b);
        
        num = 1;
        for (int j = 0; j < b; j++){	//제곱을 하기 위한 반복문
            num = (num*a)%10;		//1의 자리 수만 알면 되므로 10으로 나눈 나머지를 구한다.
        }
        
        if (num == 0) num = 10;
        printf("%d\n", num);
    }
    return 0;
}

 

 

'C언어 > C언어 이론' 카테고리의 다른 글

[C언어] 5주차 배열과 문자열  (0) 2022.05.20
[C언어] 4주차 함수  (0) 2022.05.14
[C언어] 3주차 연산자  (0) 2022.05.06
[C언어] 2주차  (0) 2022.04.29
[C언어] 1주차 #include <stdio.h>  (0) 2022.04.02
Comments