Notice
Recent Posts
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

One Step Two Step

[C언어 기초] "if", "switch" 그리고 "goto"라는 조건문 본문

복습/C언어

[C언어 기초] "if", "switch" 그리고 "goto"라는 조건문

DEVILOW 2026. 2. 27. 23:10
반응형
  • 조건문 (condition statement)
    • 프로그래머가 명시한 조건의 참·거짓에 따라 달라지는 계산 및 프로세스 상황을 수행하는 제어문
    • 3가지 제어 구조 (모든 프로그램의 흐름을 구성하는 최소 단위)

  • if
    • 조건식의 참·거짓에 따라 특정 코드 블록을 실행하는 선택 제어문
if (조건식) {
    // 조건이 참(true)일 때 실행
}
-------------------------------------------------------------------------

if(number > 0)
	printf("양수");   // number가 5라면 "양수"가 출력되고 아니라면 아무것도 출력X
  • if - else
if (조건식) {
    // 조건이 참(true)일 때 실행
} else {
	// 조건이 거짓(false)일 때 실행
}
-------------------------------------------------------------------------

// x가 0보다 크면 "양수" 출력 아니라면 "0 또는 음수" 출력
if (x > 0) {		
    printf("양수\n");		// 참일 경우 실행
} else {
    printf("0 또는 음수\n");	// 거짓일 경우 실행
}
  • if - else if - else
    • 위에서부터 순차 비교
if (조건식1) {
    문장1;
} else if (조건식2) {
	문장2;
} else if (조건식3) {
	문장3;
} else {
	문장4;
}
-------------------------------------------------------------------------

if (score >= 90) {
    grade = 'A';		// 90이상일 경우
} else if (score >= 80) {
    grade = 'B';		// 90미만 80이상일 경우
} else if (score >= 70) {
    grade = 'C';		// 80미만 70이상일 경우
} else {
    grade = 'F';		// 위 조건에 만족 X
}
  • 중첩 if
if (조건식1) {
    if (조건식2) {
    	문장1;		//조건식1과 조건식2를 만족하는 경우
    }
} 
-------------------------------------------------------------------------
if (x > 0) {
    if (x % 2 == 0) {
        printf("양수이면서 짝수\n");
    }
}
  • switch
    • 하나의 값에 따라 여러 경우(case) 중 하나를 선택해 실행하는 선택 제어문
    • if-else if를 정수/문자 기반 분기로 단순화한 구조
    • 동작 원리 
      1. switch(식)의 결과 계산
      2. 일치하는 case로 즉시 점프
      3. break를 만날 때까지 실행
      4. break 없으면 다음 case로 계속 실행 (fall-through)
    • 주의할 점: 변수, 변수가 들어간 수식, 실수, 문자열 사용 불가능 
switch (식) {
case 값1:
    // 실행 코드
    break;
case 값2:
    // 실행 코드
    break;
default:
    // 어떤 case에도 해당하지 않을 때
}
----------------------------------------------

int menu = 2;

switch (menu) {
case 1:
    printf("아메리카노\n");
    break;
case 2:
    printf("라떼\n");
    break;
case 3:
    printf("카푸치노\n");
    break;
default:
    printf("잘못된 선택\n");
}
  • goto
    • 조건없이 특정 위치로 이동
    • 사용하지 않는 것이 매우 좋음  →  보안성 ↓, 코드의 유연성 저하, c언어 절차적 특성 무시(스파케티 코드)
goto label;

/* ... */

label:
    // 이동 대상 코드
    
---------------------------------

int x = 0;

goto skip;
x = 10;

skip:
printf("%d\n", x);   // 0 출력

 

 


문제 1. 대소문자 변환 프로그램을 만드시오.

case1.
문자를 입력하시오: W
입력한 문자(W)는 대문자 입니다.
입력한 문자의 소문자는 w입니다.

case2.
문자를 입력하시오: f
입력한 문자(f)는 소문자 입니다.
입력한 문자의 대문자는 F입니다.

case3.
문자를 입력하시오: 0
영어를 입력해주세요.

더보기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
	char ch;		// 입력받을 문자 변수

	printf("문자를 입력하시오: ");
	scanf("%c", &ch);
	if (65 <= ch && ch <= 90) {		//아스키 코드 값 비교
		printf("입력한 문자(%c)는 대문자 입니다.\n", ch);
		printf("입력한 문자의 소문자는 %c 입니다.\n", ch + 32);
	}
	else if (97 <= ch && ch <= 122) {
		printf("입력한 문자(%c)는 소문자 입니다.\n", ch);
		printf("입력한 문자의 소문자는 %c 입니다.\n", ch - 32);
	}
	else
		printf("영어를 입력해주세요. \n");

	return 0;
	
}
반응형