You are on page 1of 17

Review

1. 정상적으로 출력되도록 완성하기 .( 소수점 자리수 출력 주의 )


2. 아스키코드 ‘ A’ 는 10 진수로 65 이다 . ‘J’ 는 몇인가 ?
3. 5 글자를 대입하기 위한 배열 a 를 선언하시오 .
4. 산술 연산자의 종류에는 +,-,*,/,% 등이 있다 . 이 중에서 정수만
연산 되는 것을 고르시오 . _______________
5. _________ 연산자는 피연산자의 데이터 크기를 _______ 단위로
계산해준다 .
6. 큰따옴표 출력 : ____ 백슬래시 출력 : ____ % 문자 출력 :
____
구분 변환문자열 입력 형태 입력되는 변수의 자료형
7. 변환문자열 채우기
10 진수 char, short, int, long 형 변수
정수형 10 진수 ( 양수만 )
8 진수
16 진수
실수형 소수점 double 형 변수
지수형
문자형 하나의 문자 char 형 변수
문자열 하나의 문자열 char 배열
IT COOKBOOK

chapter 06.
선택문

한빛미디어㈜ -2- ehanbit.net


 선택문의 필요성 IT COOKBOOK

• 경우에 따라서 특정 문장을 선택적으로 실행시켜야 할 필요가 있다 .


- 두 정수값을 계산하여 몫을 구하는 경우 0 으로 나눌 수 없다 .

int a, b, res;

printf(“ 두 정수를 입력하세요 : ”);


scanf(“%d%d”, &a, &b);
res = a / b; // b 가 0 이 아닌 경우만 실행
printf(“a 를 b 로 나눈 몫 : %d\n”, res);

• 선택문의 조건식에는 주로 관계연산자와 논리연산자가 사용된다 .

한빛미디어㈜ -3- ehanbit.net


▶ 관계연산자 IT COOKBOOK

• 관계식은 두 값의 크기를 비교하는 연산이며 관계연산자를 사용한다 .

• 관계식의 결과는 참과 거짓이며 1 과 0 이 결과값이 된다 .

printf(“ 연산결과가 참인 경우 : %d\n”, 20>10);


printf(“ 연산결과가 거짓인 경우 : %d\n”, 10>20);

연산결과가 참인 경우 : 1
연산결과가 거짓인 경우 : 0

• 0 은 거짓 , 0 이 아닌 모든 값은 참으로 인식 .

한빛미디어㈜ -4- ehanbit.net


▶ 관계연산자 정리 IT COOKBOOK

• 관계연산자에는 다음과 같은 것들이 있다 .

관계연산자 연산 결과
> 왼쪽의 값이 오른쪽의 값보다 크면 참
< 왼쪽의 값이 오른쪽의 값보다 작으면 참
>= 왼쪽의 값이 오른쪽의 값보다 크거나 같으면 참
<= 왼쪽의 값이 오른쪽의 값보다 작거나 같으면 참
== 두 값이 같으면 참
!= 두 값이 같지 않으면 참

• 범위를 표현할 때는 논리식을 사용해야 한다 .

논리관계가 포함되어 있다 .

한빛미디어㈜ -5- ehanbit.net


▶ 논리연산자 IT COOKBOOK

• 논리연산자는 두 피연산자의 참과 거짓에 따라 연산의 결과값을


결정하며 , 연산식의 결과 역시 참과 거짓이다 .
- a 의 값이 15 일 때

• 논리연산자의 종류
논리연산자 의미 연산 결과
&& 논리곱 (and) 왼쪽과 오른쪽의 값이 모두 참일 때만 참
|| 논리합 (or) 왼쪽과 오른쪽의 값 중에서 하나라도 참이면 참

! 논리부정 (not) 피연산자가 참이면 거짓이고 , 거짓이면 참

한빛미디어㈜ -6- ehanbit.net


▶ 논리연산자의 사용 예 IT COOKBOOK

#include <stdio.h>

int main()
{
int a=10;

printf(" 논리곱 연산 : %d\n", (a>5) && (a<=15));


printf(" 논리합 연산 : %d\n", (a!=10) || (a==20));
printf(" 논리부정 연산 : %d\n", !((a-5)>0));
printf(" 피연산자가 상수인 경우 : %d\n", -3.4 && (a>0));
return 0;
}

논리곱 연산 : 1
논리합 연산 : 0
논리부정 연산 : 0
피연산자가 상수인 경우 : 1

한빛미디어㈜ -7- ehanbit.net


 if 문을 사용한 선택문 IT COOKBOOK

• if 문의 가장 기본이 되는 형태

if( 조건식 ) 실행할 문장 ;

• if~else 구문을 사용한 선택문

if( 조건식 ) 실행할 문장 1;


else 실행할 문장 2;

• if~else if~else 구문을 사용한 선택문

if( 조건식 1) 실행할 문장 1;


else if( 조건식 2) 실행할 문
장 2;
else 실행할 문장 3;
• else 의 결합 문제 (dangling else 문제 )

한빛미디어㈜ -8- ehanbit.net


▶ 가장 간단한 if 문 IT COOKBOOK

• if 문의 조건식이 참이면 실행할 문장을 실행한다 .

int a, b, res;

printf(“ 두 정수를 입력하세요 : ”);


scanf(“%d%d”, &a, &b);
if(b!=0) res = a / b; // b 가 0 이 아닌 경우만 선택적으로 실
행된다 .
printf(“a 를 b 로 나눈 몫 : %d\n”, res);
• 실행할 문장이 두 개 이상이면 중괄호로 묶어준다 .

한빛미디어㈜ -9- ehanbit.net


▶ if~else 구문을 사용한 선택문 IT COOKBOOK

• 조건식의 참 , 거짓에 따라 각각 실행할 문장이 있을 때 사용한다 .

• 조건식이 거짓일 때 실행할 문장이 여러 개라면 역시 중괄호를 사


용하여 묶어 준다 .

한빛미디어㈜ - 10 - ehanbit.net
▶ if~else 구문을 사용한 비만도 검사 프로그램 IT COOKBOOK

- BMI 는 체중을 키의 제곱으로 나눈다 ( 단위가 체중은 kg, 키는 m).


- BMI 가 20 미만 : 저체중 , 20~24.9 : 표준체중 , 25 이상 : 과체중

#include <stdio.h>

int main()
{
double weight, height; // 몸무게와 키를 입력할 변
double bmi; 수
// bmi 의 결과를 저장할 변
printf(" 몸무게를 입력하세요 (kg) : ");

scanf("%lf", &weight);
printf(" 키를 입력하세요 (cm) : ");
scanf("%lf", &height);
height = height / 100; // 키를 m 단위로 환산
bmi = weight / (height * height);
printf(" 당신의 BMI 는 : %.1lf 입니다 .\n", bmi);
if(bmi>=20.0 && bmi<25.0)
printf(" 표준체중 입니다 .\n");
else
printf(" 체중관리가 필요합니다 .\n");
return 0;
}

한빛미디어㈜ - 11 - ehanbit.net
▶ if~else if~else 구문을 사용한 선택문 IT COOKBOOK

• 조건에 따라 선택한 문장이 많은 경우에 사용한다 .


- 표준체중이 아닌 경우에 저체중과 과체중을 구분하는 예

if(bmi>=20.0 && bmi<25.0)


① printf(“ 표준체중입니다 .\n”);
else
if(bmi<20)
② printf(“ 저체중입니다 .\n”);
else
③ printf(“ 과체중입니다 .\n”);

if(bmi>=20.0 && bmi<25.0)


1, 2, 3 번이 모두 배타적으로
printf(“ 표준체중입니다 .\n”);
실행될 때 들여쓰기를 맞춰서 else if(bmi<20)
사용한다 . printf(“ 저체중입니다 .\n”);
else
printf(“ 과체중입니다 .\n”);

한빛미디어㈜ - 12 - ehanbit.net
▶ if~else if~else 구문을 사용한 학점계산 프로그램
예 IT COOKBOOK

- 평균점수는 실수값으로 입력된다 .


- 평균이 90 점 이상은 A, 90 점 미만 80 점 이상이면 B, 80 점 미만 70 점 이
상이면 C,
그 외는 F
#include <stdio.h>

int main()
{
double avg;
char grade;

printf(" 평균점수를 입력하세요 : ");


scanf("%lf", &avg);

if(avg>=90.0) grade='A';
else if(avg>=80.0) grade='B';
else if(avg>=70.0) grade='C';
else grade='F';

printf(" 학점은 %c 입니다 .\n", grade);

return 0;
}

한빛미디어㈜ - 13 - ehanbit.net
▶ else 의 결합 문제 (dangling else 문제 ) IT COOKBOOK

• if~else 문에서 조건식이 참인 경우에 실행할 문장이 if 문이면


예상치 못한 else 가 달라 붙는 문제가 발생한다 .

else 가 안쪽의 if 문과 결합한다 !

• 이 경우에 안쪽에 중첩된 if 문이 하나의 문장일지라도 중괄호


를 사용하여 구분해준다 .
if( 조건식 1){
if( 조건식 2) 실행할 문장 1;
}
else
실행할 문장 2;

한빛미디어㈜ - 14 - ehanbit.net
 switch~case 문을 사용한 선택문 IT COOKBOOK
• 조건에 따라 선택할 문장이 많은 경우에 사용한다 .
• 조건식은 정수식을 사용하며 case 의 일치하는 문장을 실행한다 .

실행할 문장 1-1

반드시 있어야 하는 것 아님 .

• 실행해야 할 문장이 많을 때는 차례로 작성해주며 , if 문과는 달리


중괄호를 사용할 필요는 없다 .
한빛미디어㈜ - 15 - ehanbit.net
▶ switch~case 구문을 사용한 추첨 프로그램 IT COOKBOOK

#include <stdio.h>

int main()
{
int lot;

printf(" 당첨 번호를 입력하세요 : ");


scanf("%d", &lot);

switch(lot){
case 1: // 당첨번호가 1 이면
printf(" 김서방 "); // 김서방을 출력하고
break; // switch~case 의 블록을 빠져나간다 .
case 2:
printf(" 홍가네 ");
break;
case 3:
printf(" 안산댁 ");
break;
default: // 일치하는 당첨번호가 없으면 실행한다
printf(" 당첨자가 없습니다 . !");
break;
}

return 0;
}

한빛미디어㈜ - 16 - ehanbit.net
▶ break 가 없으면 switch~case 문은 분기문이다 . IT COOKBOOK

• break 이 switch~case 문을 선택문으로 사용할 수 있도록 한다 .

• break 문이 하나도 없고 2 번이 당첨되었다면 ?

한빛미디어㈜ - 17 - ehanbit.net

You might also like