Post

Chapter 3. 조건문

Chapter 3. 조건문

‘쉽게 풀어쓴 C언어 Express - 천인국’ 6장 학습 내용

소스코드

1절. 조건문

조건문

  • 프로그램의 선택 구조
  • 제어문에 속하며, 제어문은 조건문과 반복문을 가지고 있다.

제어구조

selection

2절. if문 (if … else …)

if 문

IF

if 문 예제

// 양수 판단 예제
if (number > 0)						// 변수 number이 0보다 크다면
	printf("양수입니다.\n");		    		// "양수입니다." 를 출력
// 온도 체크 예제
if (temperature < 0)					// 변수 temperature이 0보다 낮다면
	printf("현재 온도는 영하입니다.\n");		// "현재 온도는 영하입니다." 를 출력한다.
printf("현재 온도는 %lf도 입니다.\n", temperature); 

오류 주의

error_if

실수 비교

compare_int

복합문 (compound statement)

  • 중괄호를 사용하여 문장들을 그룹핑
    • 블록(block)이라고도 한다.
    • 단일문 대신 들어갈 수 있다.
if (score >= 60)
{
      printf("Pass\n");
      printf("장학금도 받을 수 있다.\n");
      // 조건식이 참이라면, if 문 안의 명령어는 모두 실행
}

if-else 문

if-else

if-else 문 예제

if (score >= 60)
      	printf("Pass\n");
else	// score < 60
	printf("NONE-Pass\n");
	
// = "(score >= 60)? printf("Pass\n"): printf("NONE-Pass\n");" 
if (score >= 60){
      	printf("합격입니다.\n");
	printf("장학금을 받을 수 있습니다.\n");
}
else{
	printf("불합격입니다.\n");
	printf("다시 도전하세요.\n");
}

중첩 if

  • if 문에 다시 if 문이 포함된다.
    if-if

중첩 if 문 예제

// if -> if
if (score >= 80)
	if (score >= 90)
		printf("당신의 학점은 A입니다.\n");
// if -> if...else...
if (score >= 80)
	if (score >= 90)
		printf("당신의 학점은 A입니다.\n");
	else
		printf("당신의 학점은 B입니다.\n");

연속적 if

if-if-if

3절. 조건연산자

조건연산자 ?

  • 간단한 if - else 문은 조건연산자를 사용하여 표현할 수도 있다.
    (score >= 60)? printf("합격입니다.\n"): printf("불합격입니다\n.");
    
    bonus = ((years > 30) ? 500 : 300);
    

복잡한 조건식

if (score >= 80 && score < 90)
	grade = 'B';
// 공백 문자들의 개수를 세는 코드
if (ch == '' || ch == '\n' || ch == '\t')
	White_space++;

4절. switch문

switch문

  • 제어식의 값에 따라서 여러 경로 중에서 하나를 선택할 수 있는 제어 구조 switch

switch문 예제

int main(void){ 
	int number; 
	printf("정수를 입력하시오:"); 
	scanf("%d", &number); 
	
	switch(number){
		case 0: 
			printf("없음\n"); 
			break;
		case 1: 
			printf("하나\n"); 
			break;
		case 2: 
			printf("둘\n"); 
			break;
		default: 
			printf("많음\n"); 
			break;
	} 
} 

break가 생략되는 경우

delbreak1

break가 의도적으로 생략되는 경우

delbreak2

default

default

switch문 주의할 점

  • 제어식의 값은 반드시 정수형으로 계산한다.
  • 수식의 값이 정수형으로 나오지 않는다면 switch 문을 사용할 수 없다.
  • case 절에 실수, 변수, 수식, 문자열을 사용하면 컴파일 오류
  • 다만 문자는 아스키코드로 표현되고, 아스키코드는 정수이므로 사용 가능하다.
  • 단, 문자열은 사용할 수 없다.

switch문 사용 오류 예제

switch(number) {
	case x: 					// 변수는 사용할 수 없다.
		printf("없음\n"); 
		break ;
	case (x+2):					// 변수가 들어간 수식은 사용할 수 없다.		 
		printf("하나\n"); 
		break ;
	case 0.001:					// 실수는 사용할 수 없다. 
		printf("둘\n"); 
		break ;
	case "001":					// 문자열은 사용할 수 없다. 
		printf("많음\n"); 
		break; 
} 

5절. if문과 switch문

if-else문과 switch문

switch_if-else

This post is licensed under CC BY 4.0 by the author.