54
© 2007 생능출판사 All rights reserved 쉽게 풀어쓴 C언어 Express C Express 제6장 조건문

쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

  • Upload
    others

  • View
    3

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

쉽게풀어쓴 C언어 Express

C Express제6장 조건문

Page 2: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

이번 장에서 학습할 내용

•조건문이란?•if 문•if, else 문•중첩 if 문•switch 문•break문•continue문•goto문

5장까지는문장들이

순차적으로실행된다고 하였다.

하지만 필요에따라서 조건이

만족되면 문장의실행 순서를 변경할

수 있는 기능이제공된다.

Page 3: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

조건문

문장이실행되는순서에영향을주는 문장

조건에따라서 여러개의 실행경로 가운데하나를 선택

조건에따라서 여러개의 같은처리를 반복

Page 4: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

일상생활에서의조건문의예

• 만약비가오지않으면 테니스를친다.• 만약결석이 1/3이상이면 F학점을받는다.• 만약시간이없는경우에는 택시를탄다.• 만약날씨가좋고공휴일이면 공원에산책을간다.• 점수가 60점이상이면 합격이고그렇지않으면불합격이다.

조건문은프로그램의흐름을

변경합니다.

Page 5: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

if문

• 조건에따라서결정을 내리는경우에사용

if( 조건식 )문장;

조건식이 참으로 계산되면

문장이 실행된다.

Page 6: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

if문

Page 7: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

if문의예

if( number > 0 )printf("양수입니다\n");

if ( temperature < 0 ) printf("현재영하입니다.\n"); // 조건이참일때만실행

printf("현재온도는 %도입니다.\n", temperature); // 항상실행

• if 문이끝나면 if 문다음문장이실행된다.

number가 0보다크면

“양수입니다”를출력한다.

Page 8: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

복합문

• 복합문(compound statement)• 중괄호를 사용하여 문장들을그룹핑하는것,• 블록(block)이라고도 한다. • 단일문대신들어 갈수있다.

조건식이참이면 2개의문장이묶여서실행된다.

if( score >= 60 ){

printf("합격입니다.\n");printf("장학금도받을수있습니다.\n");

}

Page 9: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

예제#include <stdio.h>

int main(void)

{

int number;

printf("정수를 입력하시오:");

scanf("%d", &number);

if( number > 0 )

printf("양수입니다.");

printf("입력된 값은 %d입니다.", number);

return 0;

}정수를입력하시오:25양수입니다.입력된값은 25입니다.

Page 10: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

// if 문을 사용하여 절대값을 구하는 프로그램

#include <stdio.h>

int main(void){

int number;

printf("정수를 입력하시오:"); scanf("%d", &number);

if( number < 0 ) number = -number;

printf("절대값은 %d 입니다.\n", number);

return 0;

}

예제

정수를 입력하시오:-5절대값은 5입니다.

만약사용자가 -5를 입력하였다면

-5 < 0이므로 해당 조건문 실행

Page 11: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

중간점검

1. 중괄호로 묶은여러개의문장을무엇이라고하는가?2. C에서참과거짓은어떤 정수로표시되는가?3. if 문안의조건식으로 많이사용되는수식의종류는무엇인가?4. if 문이끝나면어떤 문장이실행되는가?5. 조건에따라서실행되어야 하는문장이두개이상이면어떻게하여야하는가?

Page 12: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

if-else 문

날씨가 좋은가?

테니스를 친다.

거짓

공부를 한다.

if( 조건식 )문장1;

else 문장2;

조건식이 참이면 실행된다.

조건식이 거짓이면 실행된다.

Page 13: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

if-else 문

Page 14: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

if-else 문if ( score >= 60 )

printf("합격입니다.\n");else

printf("불합격입니다.\n");

score가 60이상이면실행

score가 60미만이면실행

if ( score >= 60 ) {

printf("합격입니다.\n"); printf("장학금도받을수있습니다.\n");

} else{

printf("불합격입니다.\n"); printf("공부하세요.\n");

}

score가 60이상이면실행

score가 60미만이면실행

Page 15: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

복잡한조건식도가능

• 학점 결정 코드

if( score >= 80 && score < 90 )

grade = 'B';

• 공백 문자들의 개수를 세는 코드

if( ch == ‘ ‘ || ch == ‘\n’ || ch == ‘\t’ )

white_space++;

Page 16: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

// if-else 문을 이용하여 홀수와 짝수를구분한다. #include <stdio.h>

int main(void){

int number;

printf("정수를 입력하시오:"); scanf("%d", &number);

if( number % 2 == 0 ) printf("입력된 정수는 짝수입니다.\n");

elseprintf("입력된 정수는 홀수입니다.\n");

return 0; }

예제 #1

정수를 입력하시오: 23입력된 정수는 홀수입니다.

2로 나누어서 나머지가 0이면 짝수이다.

Page 17: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

#include <stdio.h>int main(void){

int n1, n2, n3;

printf("정수를입력하시오: "); scanf("%d", &n1); printf("정수를입력하시오: "); scanf("%d", &n2);

if( n2 == 0 ) // 분모가 0인지검사{

printf("0으로나눌수는없습니다.\n"); } else{

n3 = n1 / n2; // 나눗셈실행printf("결과는 %d입니다.\n", n3);

} return 0;

}

예제 #2

분자를입력하시오: 5분모를입력하시오: 4결과는 1입니다.

Page 18: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

// 윤년판단프로그램#include <stdio.h>

int main(void){

int year;

printf("연도를입력하시오: "); scanf("%d", &year);

if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) printf("%d년은윤년입니다.\n", year);

elseprintf("%d년은윤년이아닙니다.\n", year);

return 0; }

예제 #3

연도를입력하시오: 20122012년은윤년입니다.

Page 19: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

중간점검

1. 변수 n의값이 100보다 크거나같으면 “large", 100보다 작으면 ”small"을출력하는 if-else 문을작성하라.

Page 20: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

• if 문에다시 if 문이 포함

중첩 if

if( 조건식1 )if( 조건식2 )

문장;

Page 21: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

중첩 ifif( score >= 80 )

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

if( score >= 80 ) if( score >= 90 )

printf("당신의학점은 A입니다.\n");else

printf("당신의학점은 B입니다.\n");

if 문안의문장자리에if문이들어간경우

if 문안의문장자리에if-else 문이들어간경우

Page 22: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

if와 else의 매칭 문제

if(score > 80)if( score >= 90)

printf(“당신의학점은 A입니다\n”);else

printf(“당신의학점은 B입니다\n”)X O

else 절은 가장 가까운 if절과 매치된다.

if( score >= 80 ) {if( score >= 90 )

printf("당신의 학점은 A입니다.\n"); } elseprintf("당신의 학점은 A나 B가 아닙니다.\n");

만약 다른 if절과 else 절을 매치시키려면중괄호를 사용하여 블록으로 묶는다.

Page 23: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

중첩 ifif( score > 80 ) {if( score > 90 )

printf("당신의학점은 A입니다.\n"); else

printf("당신의학점은 B입니다.\n"); } else{ if( score > 70 )

printf("당신의학점은 C입니다.\n"); else

printf("당신의학점은 D 또는 F입니다.\n"); }

if-else 절안에다른 if-else절이포함될수있다.

Page 24: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

연속적인 ifif( 조건식1 ) 문장1;

else if( 조건식2 ) 문장2;

else if( 조건식3 ) 문장3;

else문장4;

Page 25: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

연속적인 if

Page 26: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

#include <stdio.h>

int main(void){

int score;

printf("성적을입력하시오: "); scanf("%d", &score);

if (score >= 90) printf("합격: 학점A\n");

else if (score >= 80) printf("합격: 학점B\n");

else if (score >= 70) printf("합격: 학점C\n");

else if (score >= 60) printf("합격: 학점D\n");

elseprintf("불합격: 학점F\n");

return 0; }

학점 결정 예제

성적을입력하시오: 88학점 B

Page 27: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

// 문자들을분류하는프로그램#include <stdio.h>

int main(void){

char ch;

printf("문자를입력하시오: "); scanf("%c", &ch);

if( ch >= 'A' && ch <= 'Z' )printf("%c는대문자입니다.\n", ch);

else if( ch >= 'a' && ch <= 'z' )printf("%c는소문자입니다.\n", ch);

else if( ch >= '0' && ch <= '9' )printf("%c는숫자입니다.\n", ch);

elseprintf("%c는기타문자입니다.\n", ch);

return 0; }

문자 분류 예제

문자를입력하시오: cc는소문자입니다.

Page 28: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

실습: 이차방정식1. 사용자에게이차방정식의계수 a, b, c를입력하도록한다. 2. 만약 a가 0이면근은 -c/b이다.3. 판별식 ("#−4&')가음수이면실근은존재하지않는다.4. 위의조건에해당되지않으면다음과같은공식을이용하여실근을구한다.

) = −" ± "# − 4&'2&

Page 29: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

실행결과

계수 a를입력하시오: 1계수 b를입력하시오: -4계수 c를입력하시오: 3방정식의근은 3.000000입니다.방정식의근은 1.000000입니다.

Page 30: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

알고리즘

사용자로부터 a, b, c를 읽는다.if a == 0이면

일차 방정식의 근을 구한다.실근을 출력한다.

else 판별식을 계산한다.if 판별식 >= 0

근의 공식을 이용하여 실근을 구한다. 실근을 출력한다.

else 실근은 없다는 메시지 출력

Page 31: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

소스#include <stdio.h>

#include <math.h>

int main(void)

{

double a, b, c, dis;

printf("계수 a를 입력하시오: ");

scanf("%lf", &a);

printf("계수 b를 입력하시오: ");

scanf("%lf", &b);

printf("계수 c를 입력하시오: ");

scanf("%lf", &c);

Page 32: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

소스if( a == 0 )

printf("방정식의 근은 %f입니다.", -c/b);else{

dis = (b*b - 4.0*a*c);if( dis >= 0 ){

printf("방정식의 근은 %f입니다. \n", (-b+sqrt(dis))/(2.0*a));printf("방정식의 근은 %f입니다. \n", (-b-sqrt(dis))/(2.0*a));

}else

printf("실근이 존재하지 않습니다");}return 0;

} 계수 a를입력하시오: 1계수 b를입력하시오: -4계수 c를입력하시오: 3방정식의근은 3.000000입니다.방정식의근은 1.000000입니다.

Page 33: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

실습: 산술계산기

수식을입력하시오(예: 2 + 5)>>2 + 52 + 5 = 7

Page 34: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

#include <stdio.h>

int main(void){

char op;int x, y, result;

printf("수식을 입력하시오");printf("(예: 2 + 5) ");printf(">>");

scanf("%d %c %d", &x, &op, &y);

소스

Page 35: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

if( op == '+' )result = x + y;

else if( op == '-' )result = x - y;

else if( op == '*' )result = x * y;

else if( op == '/' )result = x / y;

else if( op == '%' )result = x % y;

elseprintf("지원되지 않는 연산자입니다. ");

printf("%d %c %d = %d ", x, op, y, result);return 0;

}

소스

수식을입력하시오(예: 2 + 5)>>2 + 52 + 5 = 7

Page 36: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

중간점검

1. n의값이각각 -1, 0, 5인경우에다음의코드에의하여생성되는출력은무엇인가?

2. 컵의사이즈를 받아서 100ml미만은 small, 100ml이상 200ml미만은medium, 200ml이상은 large라고출력하는연속적인 if-else 문을 작성하시오.

if( n == 0 )printf("A");

else if( n > 3 ) printf("B");

else printf("C");

Page 37: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

• 여러가지경우중에서 하나를선택하는데사용

switch 문

switch(조건식) {

case c1: 문장1; break;

case c2: 문장2; break;

...

... case cn: 문장n; break;

default: 문장d; break;

}

제어식의 값이 c1이면 실행된다.

제어식의 값이 c2이면 실행된다.

일치하는 값이 없으면 실행된다.

Page 38: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

switch 문의순서도

case c1case c1문장1문장1 breakbreak

case c2case c2문장2문장2 breakbreak

case cncase cn문장n문장n breakbreak

...

defaultdefault

거짓참

거짓

거짓

Page 39: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

예제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;

} }

정수를입력하시오: 1하나

Page 40: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

사용자가 1을입력하는경우

switch(number) {case 0:

printf("없음\n"); break ;

case 1: printf("하나\n"); break ;

case 2: printf("둘\n"); break ;

default: printf("많음\n"); break;

} }

1

Page 41: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

break가생략되는경우

break를만날때까지계속문장을실행합니다.

switch(number) {case 0:

printf("없음\n"); break ;

case 1: printf("하나\n");

case 2: printf("둘\n"); break ;

default: printf("많음\n"); break;

} }

1

Page 42: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

의도적인 break생략switch(number)

{ case 0:

printf("없음\n"); break;

case 1: printf("하나\n"); break;

case 2: case 3:

printf("두서너개\n"); break;

default: printf("많음\n"); break;

}

2개의경우를하나로묶어서처리하기위하여이러한기법을사용

Page 43: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

default 문

switch(number) {case 0:

printf("없음\n"); break ;

case 1: printf("하나\n"); break ;

case 2: printf("둘\n"); break ;

default: printf("많음\n"); break;

} }

5

어떤case문과도일치되지않는경우에선택

Page 44: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

switch 문과 if-else 문

int main(void) { int number; scanf("%d", &number);

if( number == 0 ) printf("없음\n");

else if( number == 1 ) printf("하나\n");

else if( number == 2 ) printf("둘\n");

elseprintf("많음\n");

}

switch(number) {

case 0: printf("없음\n"); break;

case 1: printf("하나\n"); break;

case 2: printf(“둘\n"); break;

default: printf("많음\n"); break;

}

Page 45: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

switch 문에서주의할점switch(number)

{

case x: // 변수는 사용할 수 없다.

printf("x와 일치합니다. ");

break;

case (x+2): // 변수가 들어간 수식은 사용할 수 없다.

printf("수식과 일치합니다. ");

break;

case 0.001: // 실수는 사용할 수 없다.

printf("실수");

break;

case “001”: // 문자열은 사용할 수 없다.

printf("문자열");

break;

}

Page 46: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

예제// 달의 일수를 계산하는 프로그램#include <stdio.h>

int main(void){

int month, days;

printf("달을 입력하시오: "); scanf("%d", &month);

Page 47: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

예제switch(month) {

case 2: days = 28; break;

case 4: case 6: case 9: case 11:

days = 30; break;

default: days = 31; break;

} printf("%d월의 일수는 %d입니다.\n", month, days); return 0;

}

달을입력하시오: 1212월의일수는 31입니다.

Page 48: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

실습: 산술계산기#include <stdio.h>

int main(void)

{

char op;

int x, y, result;

printf("수식을 입력하시오");

printf("(예: 2 + 5) ");

printf(">>");

scanf("%d %c %d", &x, &op, &y);

Page 49: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

실습: 산술계산기switch(op){

case '+':result = x + y;break;

case '-':result = x - y;break;

…default:

printf("지원되지 않는 연산자입니다. ");break;

}printf("%d %c %d = %d ", x, op, y, result);return 0;

}

수식을입력하시오(예: 2 + 5)>>2 + 52 + 5 = 7

Page 50: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

도전문제

• 위의프로그램은 단순히 산술연산자만을처리한다. 비트연산자(&, |, ^)을추가하여 보자. 비트연산자인경우에는 16진수로입력값과결과값을 출력하여 보자.

Page 51: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

중간점검

1. case 절에서 break 문을 생략하면 어떻게 되는가?2. 변수 fruit의 값이 각각 1, 2, 5일 때, 다음의 코드의 출력을 쓰시오.

switch(fruit) {case 1:

printf("사과“); break;

case 2: printf(“배“);

case 3: printf("바나나“); break;

default: printf(“과일“); break;

}

Page 52: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

Goto문

• 조건없이 어떤위치로 점프• 사용하지 않는것이 좋음

Page 53: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

예제// 구구단출력프로그램#include <stdio.h>

int main(void){

int i = 1;

loop: printf("%d * %d = %d \n", 3, i, 3 * i); i++; if( i == 10 ) goto end; goto loop;

end: return 0;

}

3 * 1 = 33 * 2 = 63 * 3 = 93 * 4 = 123 * 5 = 153 * 6 = 183 * 7 = 213 * 8 = 243 * 9 = 27

Page 54: 쉽게풀어쓴C언어Express - Seoul National Universitydcslab.snu.ac.kr/courses/ic2019s/Lab6.pdf · 2019-03-27 · 1.사용자에게이차방정식의계수a, b, c를입력하도록한다

© 2007 생능출판사 All rights reserved

Q & A