본문 바로가기
카테고리 없음

C언어 기본] 선택문

by redcubes 2024. 3. 14.

목차

A. if 문

B. if 활용과 switch~case

C. 요약 및 확인

A. if 문

- 제어문에는 선택 반복 분기가 있다. 그리고 if 와 swich~case가 선택문이다.

____1. 기본 형식

if(a > 10)
{
	b = a;
}

실행문이 한 문장일 때만 중괄호 생략 가능(하지만 일관성 있게 통일해야 가독성 있음)

____2. if~else문

if(a >= 0)
{
	a = 1;
}
else
{
	a = -1;
}

역시 실행문이 한 문장일 때만 중괄호 생략 가능(하지만 일관성 있게 통일해야 가독성 있음)

____3. if~else if~else문

if(a > 0)
{
	a = 1;
}
else if (a == 0)
{
	a = 2
}
else
{
	a = 3;
}

 

B. if 활용과 switch~case

-

 

____1.  if문 중첩

- if문 안에 중첩된 if~else는 한 문장으로 취급해서 중괄호 생략 가능하지만... 쓰는 게 나아보임.

- 선행조건이 있을 때 중첩하면 조건검사를 줄일 수 있음.

- 선행조건이 없어도 평균조건검사 횟수를 줄이기 위해 쓸 수 있음.
(예) 1인가? 2인가? 3인가? 4인가? 5인가? 6인가? 를 검사하는 것보다 3보다 큰가 아닌가로 나눈 뒤 그 안에서 if~else if~else를 쓰는 게 빠름(분할정복)

____2. else결합

- 컴파일러는 if문이 중첩된 경우 가장 가까운 if와 연결= 중괄호 써라.

____3. swich~case

- 조건식으로 정수만, 범위 조사에는 적합하지 않음.

- 케이스는 break기본 포함.(의도적으로 생략한 코드를 만들 때는 주석으로 자세히 이유를 써야 오류로 오해받지 않아요.)

- case와 default는 예전 GOTO문법 시대의 레이블 역할을 하므로 중괄호 없음. 블록 내 위치 상관 없음.

#include <stdio.h>

int main(void)
{
	int rank = 2, m = 0;

	switch (rank)		// rank의 값이 얼마인지 확인
	{
	case 1:				// rank가 1이면
		m = 300;		// m = 300을 수행하고
		break;			// 블록을 벗어나 22행으로 이동
	case 2:				// rank가 2면
		m = 200;		// m = 200을 수행하고
		break;			// 블록을 벗어나 22행으로 이동
	case 3:				// rank가 3이면
		m = 100;		// m = 100을 수행하고
		break;			// 블록을 벗어나 22행으로 이동
	default:			// rank와 일치하는 case의 값이 없으면
		m = 10;			// m = 10을 수행하고
		break;			// 블록을 벗어나 22행으로 이동
	}

	printf("m : %d\n", m);

	return 0;
}

 

 

C. 요약 및 확인

____1. 요약

- 중괄호 써라.

____2 .확인문제

#include <stdio.h>

int main(void) {
  double height = 179.5;
  double weight = 75.0;
  if (height <= 187.5 && weight < 80.0) {
    printf("ok\n");
  } else {
    printf("cancle\n");
  }
  return 0;
}
/*calculator*/
#include <stdio.h>

int main(void) {
  int a,b;
    char op;
    printf("이항 사칙연산 입력(정수): ");
    scanf("%d %c %d",&a,&op,&b);
    switch(op)
        {
            case '+':
                printf("%d + %d = %d",a,b,a+b);
                break;
            case '-':
                printf("%d - %d = %d",a,b,a-b);
                break;
            case '*':
                printf("%d * %d = %d",a,b,a*b);
                break;
            case '/':
                printf("%d / %d = %d",a,b,a/b);
                break;
            default:
                printf("잘못된 연산자 입니다.");            
        }
  return 0;
}

https://youtu.be/W3L692ZiYZI

프레젠테이션이 아닙니다. 우리에게 익숙한 칠판 강의라서 졸리지 않습니다!

선생님 전 둘다 졸려요 ㅠ