5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자
제어문의 종류 제어문의 종류 종류 선택 제어 반복제어 무조건 분기 제어문 if if ~ else if ~ else ~ if switch while for do ~ while goto 보조 제어문 break continue return
if 선택문의 종류 02 if 선택문의 종류 if (조건식) 문장; if (조건식) 문장 1 else 문장 2 문장 1 else 문장 2 if (조건식 1) else if (조건식 2) else if (조건식 3) 문장 3 else 문장 4 if (조건식 2) 문장 1
【예제 5-1】Ex1.c 02 If ~ else 문 예제 01 #include <stdio.h> 02 int main(void) 03 { 04 int input; 05 printf("양수를 입력하세요.\n"); 06 scanf("%d", &input); 07 if (input % 2 == 0) 08 printf("입력한 수 %d는 짝수입니다.\n", input); 09 else 10 printf("입력한 수 %d는 홀수입니다.\n", input); 11 return 0; 12 } 표준입력 스트림
【예제 5-2】Ex2.c 02 01 #include <stdio.h> 02 int main(void) 03 { 03 { 04 int jumsu; 05 printf("0점에서 100점수 사이의 점수를 입력하세요.\n"); 06 scanf("%d", &jumsu); 07 if(jumsu >= 0 && jumsu <= 100) 08 printf("입력한 점수는 %d입니다.\n", jumsu); 09 else{ 10 printf("0점에서 100점사이를 입력하세야 합니다.\n"); 11 return 0; 12 } 13 if (jumsu >= 0 && jumsu < 60) 14 printf("%d점은 F학점입니다.\n", jumsu); 15 else if(jumsu >= 60 && jumsu < 70) 16 printf("%d점은 D학점입니다.\n", jumsu); 17 else if(jumsu >= 70 && jumsu < 80) 18 printf("%d점은 C학점입니다.\n", jumsu); 19 else if(jumsu >= 80 && jumsu < 90) 20 printf("%d점은 B학점입니다.\n", jumsu); 21 else if(jumsu >= 90 && jumsu <= 100) 22 printf("%d점은 D학점입니다.\n", jumsu); 23 return 0; 24 }
【예제 5-3】Ex3.c 02 다중 If 문 예제 01 #include <stdio.h> 02 int main(void) 03 { 04 int input; 05 printf("양수를 입력하세요.\n"); 06 scanf("%d", &input); 07 if(input >= 0){ 08 if (input % 2 == 0) 09 printf("입력한 수 %d는 짝수입니다.\n", input); 10 else 11 printf("입력한 수 %d는 홀수입니다.\n", input); 12 } 13 else{ 14 printf("입력한 수 %d는 음수입니다.\n", input); 15 } 16 return 0; 17 }
【예제 5-4】Ex4.c 02 다중 If 문을 사용하지 않은 예제 01 #include <stdio.h> 02 int main(void) 03 { 04 int input; 05 printf("양수를 입력하세요.\n"); 06 scanf("%d", &input); 07 if( input >= 0 && input % 2 == 0) 08 printf("입력한 수 %d는 양수이며 짝수입니다.\n", input); 09 10 else if ( input >= 0 && input % 2 != 0) 11 printf("입력한 수 %d는 양수이며 홀수입니다.\n", input); 12 13 else 14 printf("입력한 수 %d는 음수입니다.\n", input); 15 return 0; 16 }
switch문의 기본형식 03 switch문의 기본형식 switch (조건식) { case 상수값 1 : 명령문 블록 1 명령문 블록 1 break; case 상수값 2 : 명령문 블록 2 ......... default : 명령문 블록 1 break; }
【예제 5-5】Ex5.c 02 switch~case 문 기본 예제 01 #include <stdio.h> 02 int main(void) 03 { 04 int input; 05 printf("영어로 인사하는 법을 배우겠습니다.\n"); 06 printf("아침 인사는 1번을 누르세요.\n"); 07 printf("점심 인사는 2번을 누르세요.\n"); 08 printf("저녁 인사는 3번을 누르세요.\n"); 09 scanf("%d", &input); 10 switch(input){ 11 case 1: 12 printf("Good Morning!!\n"); 13 break; 14 case 2: 15 printf("Good Afternoon!!\n"); 16 break; 17 case 3: 18 printf("Good Night!!\n"); 19 break; 20 } 21 return 0; 22 } 표준입력 스트림
【예제 5-6】Ex6.c 02 switch~case 문 default 사용 예제 01 #include <stdio.h> 02 int main(void) 03 { 04 int input; 05 printf("영어로 인사하는 법을 배우겠습니다.\n"); 06 printf("아침 인사는 1번, 점심인사는 2번, 저녁인사는 3번을 누르세요.\n"); 07 scanf("%d", &input); 08 switch(input){ 09 case 1: 10 printf("Good Morning!!\n"); 11 break; 12 case 2: 13 printf("Good Afternoon!!\n"); 14 break; 15 case 3: 16 printf("Good Night!!\n"); 17 break; 18 default: 19 printf("잘못 입력하였습니다. 1~3사이의 숫자를 입력하세요.\n"); 20 } 21 return 0; 22 }
【예제 5-7】Ex7.c 02 break 문 활용 예제 01 #include <stdio.h> 02 int main(void) 03 { 04 int input; 05 printf("영어로 인사하는 법을 배우겠습니다.\n"); 06 printf("아침 인사는 1번을 누르세요.\n"); 07 printf("점심 인사는 2번을 누르세요.\n"); 08 printf("저녁 인사는 3번을 누르세요.\n"); 09 scanf("%d", &input); 10 switch(input){ 11 case 1: 12 printf("Good Morning!!\n"); 13 case 2: 14 printf("Good Afternoon!!\n"); 15 case 3: 16 printf("Good Night!!\n"); 17 break; 18 default: 19 printf("잘못 입력하였습니다. 1~3사이의 숫자를 입력하세요.\n"); 20 } 21 return 0; 22 }
【예제 5-8】Ex8.c 02 break 문 활용 예제 01 #include <stdio.h> 02 int main() 03 { 04 int input; 05 printf("평점이 4.2이상 4.3미만이면 1번을 누르세요.\n"); 06 printf("평점이 4.3이상 4.4미만이면 2번을 누르세요.\n"); 07 printf("평점이 4.4이상이면 3번을 누르세요.\n"); 08 scanf("%d", &input); 09 switch (input) 10 { 11 case 3: 12 printf("해외연수기회가 주어집니다.\n"); 13 case 2: 14 printf("장학금을 받습니다.\n"); 15 case 1: 16 printf("겨울특강수강자격을 받습니다.!!\n"); 17 break; 18 default: 19 printf("잘못 입력하였습니다. 1~3사이의 숫자를 입력하세요.\n"); 20 } 21 return 0; 22 }
【예제 5-9】Ex9.c 02 switch 문으로 수식이 사용된 예제 01 #include <stdio.h> 02 int main(void) 03 { 04 int score; 05 06 printf("당신의 점수를 입력하세요 :"); 07 scanf("%d", &score); 08 switch(score/10) 09 { 10 case 10 : 11 case 9 : printf("점수는 %d 이고 성적은 %c 입니다.\n", score, 'A'); break; 12 case 8 : printf("점수는 %d 이고 성적은 %c 입니다.\n", score, 'B'); break; 13 case 7 : printf("점수는 %d 이고 성적은 %c 입니다.\n", score, 'C'); break; 14 case 6 : printf("점수는 %d 이고 성적은 %c 입니다.\n", score, 'D'); break; 15 default : printf("점수는 %d 이고 성적은 %c 입니다.\n", score, 'F'); break; 16 } 17 return 0; 18 }
【예제 5-10】Ex10.c 02 switch 문으로 사칙연산 예제 01 #include <stdio.h> 02 int main(void) 03 { 04 int num1, num2; 05 char arithmetic; 06 printf("두 수와 연산자를 입력하세요 \n"); 07 printf("연산자는 아래와 같습니다. \n"); 08 printf("더하기 : + 빼기 : - 곱하기 : * 나누기 : / \n"); 09 printf("입력순서 : 정수1 연산자 정수2 \n"); 10 scanf("%d %c %d", &num1, &arithmetic, &num2); 11 switch(arithmetic) 12 { 13 case '+' : 14 printf("%d %c %d = %d \n", num1, arithmetic, num2, num1 + num2); 15 break; 16 case '-' : 17 printf("%d %c %d = %d \n", num1, arithmetic, num2, num1 - num2); 18 break; 19 case '*' : 20 printf("%d %c %d = %d \n", num1, arithmetic, num2, num1 * num2); 21 break; 22 case '/' : 23 printf("%d %c %d = %d \n", num1, arithmetic, num2, num1 / num2); 24 break; 25 default : 26 printf("연산자를 잘못 입력했습니다.\n"); 27 break; 28 } 29 return 0; 30 }
【예제 5-11】Ex11.c 02 If문을 이용한 사칙연산 01 #include <stdio.h> 02 int main(void) 03 { 04 int num1, num2; 05 char arithmetic; 06 printf("두 수와 연산자를 입력하세요 \n"); 07 printf("연산자는 아래와 같습니다. \n"); 08 printf("더하기 : + 빼기 : - 곱하기 : * 나누기 : / \n"); 09 printf("입력순서 : 정수1 연산자 정수2 \n"); 10 scanf("%d %c %d", &num1, &arithmetic, &num2); 11 switch(arithmetic) 12 { 13 case '+' : 14 printf("%d %c %d = %d \n", num1, arithmetic, num2, num1 + num2); 15 break; 16 case '-' : 17 printf("%d %c %d = %d \n", num1, arithmetic, num2, num1 - num2); 18 break; 19 case '*' : 20 printf("%d %c %d = %d \n", num1, arithmetic, num2, num1 * num2); 21 break; 22 case '/' : 23 printf("%d %c %d = %d \n", num1, arithmetic, num2, num1 / num2); 24 break; 25 default : 26 printf("연산자를 잘못 입력했습니다.\n"); 27 break; 28 } 29 return 0; 30 }
조건 연산자 04 조건 연산자 조건 연산자는 제어문이 아니고 연산자이다. C언어에서 유일하게 세 개의 피연산자를 갖는 삼항 연산자이다. ? 와 : 연산자를 이용해서 제어문의 역할을 하게 된다. 문장 1의 내용이 참이면 문장 2를 실행하고 거짓이면 문장 3의 내용을 실행한다. max = ( x > y ) ? x : y ;
【예제 5-12】Ex12.c 02 조건 연산자 사용 예제 01 #include <stdio.h> 02 int main(void) 03 { 04 int min, max; 05 int x = 10, y = 20; 06 max = ( x > y ) ? x : y; 07 min = ( x > y ) ? y : x; 08 printf("두 수 %d 와 %d 중에 큰 수는 %d 이다.\n", x, y, max); 09 printf("두 수 %d 와 %d 중에 작은 수는 %d 이다.\n", x, y, min); 10 11 return 0; 12 }
【예제 5-13】Ex13.c 02 조건 연산자 사용 예제 01 #include <stdio.h> 02 int main(void) 03 { 04 int x; 05 printf("양수를 입력하세요.\n"); 06 scanf("%d", &x); 07 ( x >= 0 ) ? printf("x는 유효한 값입니다.\n") 08 : printf("x는 유효한 값이 아닙니다.\n"); 09 10 return 0; 11 }