제어문
- 프로그램의 실행을 인위적으로 조절할 수 있는 문장
제어문의 종류
IF / IF ~ Else문
Example 1
#include <stdio.h>
int main() {
int input;
printf("양수를 입력하세요. \n");
scanf("%d", &input);
if (input % 2 == 0)
printf("입력한 수 %d는 짝수입니다.\n", input);
else
printf("입력한 수 %d는 홀수입니다.\n", input);
return 0;
}
// 프로세스가 시작되었습니다..
> 양수를 입력하세요.
100
입력한 수 100는 짝수입니다.
// 프로세스가 종료되었습니다.
Example 2
#include <stdio.h>
int main() {
int number;
printf("정수를 입력하세요 :");
scanf("%d", &number);
if (number % 5==0)
printf("%d는 5의 배수입니다.\n", number);
else
printf("%d는 5의 배수가 아닙니다.\n", number);
return 0;
}
// 프로세스가 시작되었습니다..
> 정수를 입력하세요 :25
25는 5의 배수입니다.
// 프로세스가 종료되었습니다.
Example 3
#include <stdio.h>
int main() {
int min, max, x, y;
printf("숫자 2개를 입력하세요.\n");
scanf("%d %d", &x, &y);
if (x>y) {
max = x;
min = y;
}
else{
max = y;
min = x;
}
printf("두 수 %d와 %d 중 큰 수는 %d이다.\n", x, y, max);
printf("두 수 %d와 %d 중 작은 수는 %d이다.\n", x, y, min);
return 0;
}
// 프로세스가 시작되었습니다..
> 숫자 2개를 입력하세요.
20 10
두 수 20와 10 중 큰 수는 20이다.
두 수 20와 10 중 작은 수는 10이다.
// 프로세스가 종료되었습니다.
Example 4
#include <stdio.h>
int main() {
int jumsu;
printf("0점에서 100점 사이의 점수를 입력하세요.\n");
scanf("%d", &jumsu);
if (jumsu >= 0 && jumsu <= 100)
printf("입력한 점수는 %d점 입니다.\n", jumsu);
else
printf("0점에서 100점 사이를 입력하셔야 합니다.\n");
if (jumsu >= 90 && jumsu <= 100)
printf("%d점은 A학점입니다.\n", jumsu);
else if (jumsu >= 80 && jumsu < 90)
printf("%d점은 B학점입니다.\n", jumsu);
else if (jumsu >= 70 && jumsu < 80)
printf("%d점은 C학점입니다.\n", jumsu);
else if (jumsu >= 60 && jumsu < 70)
printf("%d점은 D학점입니다.\n", jumsu);
else if (jumsu >= 0 && jumsu < 60)
printf("%d점은 F학점입니다.\n", jumsu);
return 0;
}
// 프로세스가 시작되었습니다..
> 0점에서 100점 사이의 점수를 입력하세요.
85
입력한 점수는 85점 입니다.
85점은 B학점입니다.
// 프로세스가 종료되었습니다.
다중 if 문
Example 1
#include <stdio.h>
int main() {
int input;
printf("양수를 입력하세요.\n");
scanf("%d", &input);
if (input >= 0)
{
if (input % 2 == 0)
printf("입력한 수 %d은 짝수입니다.\n", input);
else
printf("입력한 수 %d은 홀수입니다.\n", input);
}
else
{
printf("입력한 수 %d은 음수입니다.\n", input);
}
return 0;
}
// 프로세스가 시작되었습니다..
> 양수를 입력하세요.
77
입력한 수 77은 홀수입니다.
// 프로세스가 종료되었습니다.
Example 2
#include <stdio.h>
int main() {
int input;
printf("양수를 입력하세요.\n");
scanf("%d", &input);
if (input >=0 && input % 2 == 0)
printf("입력한 수 %d은 양수이며 짝수입니다.\n", input);
else if (input >= 0 && input % 2 != 0)
printf("입력한 수 %d은 양수이며 홀수입니다.\n", input);
else
printf("입력한 수 %d은 음수입니다.\n", input);
return 0;
}
// 프로세스가 시작되었습니다..
> 양수를 입력하세요.
77
입력한 수 77은 양수이며 홀수입니다.
// 프로세스가 종료되었습니다.
Example 3
#include <stdio.h>
int main() {
int input;
printf("양수를 입력하세요.\n");
scanf("%d", &input);
if (input % 3 == 0 && input%6 == 0)
printf("입력한 수 %d은 3의 배수이며, 6의 배수입니다.\n", input);
else if (input % 3 == 0 && input%6 != 0)
printf("입력한 수 %d은 3의 배수이며, 6의 배수가 아닙니다.\n",input);
else if (input % 3 != 0 && input%6 == 0)
printf("입력한 수 %d은 3의 배수가 아니며, 6의 배수입니다.\n",input);
else
printf("입력한 수 %d은 3의 배수도 6의 배수도 아닙니다.\n",input);
return 0;
}
// 프로세스가 시작되었습니다..
> 양수를 입력하세요.
9
입력한 수 9은 3의 배수이며, 6의 배수가 아닙니다.
// 프로세스가 종료되었습니다.
Example 4
#include <stdio.h>
int main() {
int num1, num2;
char arithmetic;
printf("숫자 2개와 연산자를 입력하세요.\n\n");
printf("연산자는 아래와 같습니다.\n");
printf("더하기:+, 빼기:-,곱하기:*,나누기:/\n");
printf("입력 순서:정수1 연산자 정수2\n\n");
scanf("%d %c %d", &num1, &arithmetic, &num2);
if (arithmetic == '+')
printf("%d %c %d = %d\n", num1, arithmetic, num2, num1+num2);
else if (arithmetic == '-')
printf("%d %c %d = %d\n", num1, arithmetic, num2, num1-num2);
else if (arithmetic == '*')
printf("%d %c %d = %d\n", num1, arithmetic, num2, num1*num2);
else if (arithmetic == '/')
printf("%d %c %d = %f\n", num1, arithmetic, num2, (double)num1/num2);
else
printf("연산자를 잘못 입력했습니다.\n");
return 0;
}
// 프로세스가 시작되었습니다..
> 숫자 2개와 연산자를 입력하세요.
연산자는 아래와 같습니다.
더하기:+, 빼기:-,곱하기:*,나누기:/
입력 순서:정수1 연산자 정수2
1/2
1 / 2 = 0.500000
// 프로세스가 종료되었습니다.
Switch ~ case문
switch문
- 조건식을 먼저 평가한 뒤, 그 식의 값이 case 상수와 일치하는 쪽으로 분기하여 해당 명령문을 수행
Default 문
- 예외처리를 위한 문장
Break 문
- 제어문 강제 종료
- Break가 없다면 선택적 문장만 실행시킬 수 없다.
1, 2에서 break가 없기 때문에 case 1 경우에 3까지 실행되고 탈출한다.
Problem 1
#include <stdio.h>
int main() {
int input;
printf("영어로 인사하는 법을 배우겠습니다.\n");
printf("아침 인사는 1번을 누르세요.\n");
printf("점심 인사는 2번을 누르세요.\n");
printf("저녁 인사는 3번을 누르세요.\n");
scanf("%d", &input);
switch (input) {
case 1:
printf("Good Morning!!\n");
break;
case 2:
printf("Good Afternoon!!\n");
break;
case 3:
printf("Good Night!!\n");
break;
default:
printf("잘못 입력했습니다. 1~3사이의 숫자를 입력하세요.\n");
}
return 0;
}
// 프로세스가 시작되었습니다..
> 영어로 인사하는 법을 배우겠습니다.
아침 인사는 1번을 누르세요.
점심 인사는 2번을 누르세요.
저녁 인사는 3번을 누르세요.
2
Good Afternoon!!
// 프로세스가 종료되었습니다.
Problem 2
#include <stdio.h>
int main() {
int score;
printf("당신의 점수를 입력하세요 : ");
scanf("%d",&score);
switch (score/10)
{
case 10:
case 9:
printf("점수는 %d점이고 성적은 %c입니다.\n",score, 'A');
break;
case 8:
printf("점수는 %d점이고 성적은 %c입니다.\n",score, 'B');
break;
case 7:
printf("점수는 %d점이고 성적은 %c입니다.\n",score, 'C');
break;
case 6:
printf("점수는 %d점이고 성적은 %c입니다.\n",score, 'D');
break;
default:
printf("점수는 %d점이고 성적은 %c입니다.\n",score, 'F');
break;
}
return 0;
}
// 프로세스가 시작되었습니다..
> 당신의 점수를 입력하세요 : 93
점수는 93점이고 성적은 A입니다.
// 프로세스가 종료되었습니다.
Problem 3
#include <stdio.h>
int main() {
int num1, num2;
char arithmetic;
printf("숫자 2개와 연산자를 입력하세요.\n\n");
printf("연산자는 아래와 같습니다.\n");
printf("더하기:+, 빼기:-,곱하기:*,나누기:/\n");
printf("입력 순서:정수1 연산자 정수2\n\n");
scanf("%d %c %d", &num1, &arithmetic, &num2);
switch (arithmetic)
{
case '+':
printf("%d %c %d = %d\n", num1, arithmetic, num2, num1+num2);
break;
case '-':
printf("%d %c %d = %d\n", num1, arithmetic, num2, num1-num2);
break;
case '*':
printf("%d %c %d = %d\n", num1, arithmetic, num2, num1*num2);
break;
case '/':
printf("%d %c %d = %f\n", num1, arithmetic, num2, (double)num1/num2);
break;
default:
printf("연산자를 잘못 입력했습니다.\n");
break;
}
return 0;
}
// 프로세스가 시작되었습니다..
> 숫자 2개와 연산자를 입력하세요.
연산자는 아래와 같습니다.
더하기:+, 빼기:-,곱하기:*,나누기:/
입력 순서:정수1 연산자 정수2
1/2
1 / 2 = 0.500000
// 프로세스가 종료되었습니다.
조건 연산자
- 유일하게 피연산자가 3개인 삼항 연산자
- 선택문(if)문과 같이 행동함
작성형식
- 문장 1이 참이면 문장 2 수행
- 문자 1이 거짓이면 문장 3 수행
Problem 1
- 두 수중 큰 값을 출력해라
- 두 수중 작은 값을 출력해라
- x가 0이 아니면 1, 0이면 0
Problem 2
#include <stdio.h>
int main() {
int min, max;
int x = 10, y = 20;
max = (x>y) ? x : y;
min = (x>y) ? y : x;
printf("두 수 %d과 %d 중에 큰 수는 %d이다.\n", x, y, max);
printf("두 수 %d과 %d 중에 작은 수는 %d이다.\n", x, y, min);
return 0;
}
// 프로세스가 시작되었습니다..
> 두 수 10과 20 중에 큰 수는 20이다.
두 수 10과 20 중에 작은 수는 10이다.
// 프로세스가 종료되었습니다.
Problem 3
#include <stdio.h>
int main() {
int x;
printf("정수를 입력하세요.\n");
scanf("%d", &x);
(x>0) ? printf("x는 양수입니다.\n"):printf("x는 양수가 아닙니다.\n");
return 0;
}
// 프로세스가 시작되었습니다..
> 정수를 입력하세요.
55
x는 양수입니다.
// 프로세스가 종료되었습니다.
실습
Problem 1
#include <stdio.h>
int main() {
int a,b,c;
int max, mid;
printf("세 정수를 입력하세요.\n");
scanf("%d %d %d", &a, &b, &c);
if (a>b) {
mid = a;
if (mid > c)
max = mid;
else
max = c;
}
else {
mid = b;
if (mid > c)
max = mid;
else
max = c;
}
printf("최대값은 %d이다.", max);
return 0;
}
// 프로세스가 시작되었습니다..
> 세 정수를 입력하세요.
5 9 3
최대값은 9이다.
// 프로세스가 종료되었습니다.
Problem 2
#include <stdio.h>
int main() {
int a,b,c;
int max, mid;
printf("세 정수를 입력하세요.\n");
scanf("%d %d %d", &a, &b, &c);
mid = (a>b)?a:b;
max = (mid>c)?mid:c;
printf("최대값은 %d이다.", max);
return 0;
}
// 프로세스가 시작되었습니다..
> 세 정수를 입력하세요.
5 9 3
최대값은 9이다.
// 프로세스가 종료되었습니다.
Problem 3
#include <stdio.h>
int main() {
int x, y;
printf("x, y 좌표를 입력하세요 :");
scanf("%d %d", &x, &y);
if (x>0) {
if (y>0)
printf("좌표값(%d, %d)는 %d사분면에 있습니다.", x, y, 1);
else if (y<0)
printf("좌표값(%d, %d)는 %d사분면에 있습니다.", x, y, 4);
}
else if (x<0) {
if (y>0)
printf("좌표값(%d, %d)는 %d사분면에 있습니다.", x, y, 2);
else if (y<0)
printf("좌표값(%d, %d)는 %d사분면에 있습니다.", x, y, 3);
}
return 0;
}
// 프로세스가 시작되었습니다..
> x, y 좌표를 입력하세요 :3 -1
좌표값(3, -1)는 4사분면에 있습니다.
// 프로세스가 종료되었습니다.