목차
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;
}
선생님 전 둘다 졸려요 ㅠ