완숙의 블로그

선택문 본문

Programing Language/C

선택문

완숙 2019. 1. 3. 16:37

제어문

  • 프로그램의 실행을 인위적으로 조절할 수 있는 문장

제어문의 종류

2019-01-03 12 42 27

 

IF / IF ~ Else문

2019-01-03 1 38 25

 

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 상수와 일치하는 쪽으로 분기하여 해당 명령문을 수행

2019-01-03 3 22 09

2019-01-03 3 24 16

 

Default 문

  • 예외처리를 위한 문장

 

Break 문

  • 제어문 강제 종료
  • Break가 없다면 선택적 문장만 실행시킬 수 없다.

2019-01-03 3 44 16

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)문과 같이 행동함

 

작성형식

2019-01-03 3 46 52

 

  • 문장 1이 참이면 문장 2 수행
  • 문자 1이 거짓이면 문장 3 수행

 

Problem 1

  • 두 수중 큰 값을 출력해라

2019-01-03 3 50 09

 

  • 두 수중 작은 값을 출력해라

2019-01-03 3 50 20

 

  • x가 0이 아니면 1, 0이면 0

2019-01-03 3 50 29

 

 

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사분면에 있습니다.
// 프로세스가 종료되었습니다.

'Programing Language > C' 카테고리의 다른 글

반복문 2  (0) 2019.01.08
반복문 1  (0) 2019.01.07
중간 예제  (0) 2019.01.02
연산자 (operator)  (0) 2018.12.31
표준 입출력 함수  (0) 2018.12.28
Comments