본문 바로가기
PROGRAMMING/C

[POSTECH MOOC] 컴퓨터공학 입문Ⅱ - 1

by 안녕나는현서 2021. 4. 6.
728x90

본 내용은 POSTECH '청년 AI · Big Data 아카데미 온라인 기초과정'을 수강하며 정리한 내용입니다.

 

Ⅴ 조건문

 

<조건문(if)과 문제 해결 예제 (성적처리)>

 

- 프로그램의 흐름 : 제어문

  • Sequence (순차)
  • Selection (선택) - 조건문
    • branch : if, if-else
    • cases : switch-case
  • Repetition (반복) - 반복문
    • loop : for, while, do-while

- 조건문(if)

  • 조건의 결과(참 또는 거짓)에 따라 프로그램의 흐름을 제어하는 문장
  • 어떠한 조건을 만족하면 그에 해당하는 일이 처리되는 문장
if (expression)
    statement1;

next_statement;

 

- 조건문(if-else)

  • if에서 결과가 거짓인 경우 수행해야 할 문장이 있다면 키워드 else를 사용
if (expression)
{
    statement_true;
}
else
{
    statement_false;
}

next_statement;

 

- if-else예제

  • 값을 입력 받아 짝수와 홀수 판별
#include <stdio.h>

int main(void)
{
	int a;
	
	printf("정수 1개을 입력하세요 : ");
	scanf("%d", &a);
	
	if (a%2 == 0)
		printf("입력한 %d는 짝수입니다 \n", a);
		
	else
		printf("입력한 %d는 홀수입니다 \n", a);
		
 
	return 0;	
}

  • 2개의 값을 입력 받아 큰 값(max)을 출력
#include <stdio.h>

int main(void)
{
	int a, b, max;
	
	printf("Input two integers : ");
	scanf("%d %d", &a, &b);
	
	if (a>b)
		max=a;
		
	else
		max=b;
		
	printf("The maximum value is %d", max); 
	return 0;	
}

  • 3개의 값을 입력 받아 가장 작은 값(min)을 출력
#include <stdio.h>

int main(void)
{
	int a, b, c, min;
	
	printf("Input three integers : ");
	scanf("%d %d %d", &a, &b, &c);
	
	if (a<b)
		min=a;
		
	else
		min=b;
		
	if (c<min)
		min=c;
		
	printf("The minimum value is %d", min); 
	return 0;	
}

- 조건문(else if)

  • 조건 여러 개를 비교하여 조건에 맞는 문장을 수행
  • 중첩된 if문에서 else 이후에 if문을 실행하는 구문 이용
if (expression1)
{
    statement1;
}
else if (expression2)
{
    statement2;
}
else if (expression3)
{
    statement3;
}
else
{
    statement4;
}
next_statement

 

- 예제 : 성적처리

#include <stdio.h>

int main(void)
{
	int score;
	char grade;
	
	printf("컴퓨터공학입문 점수를 입력하세요 : ");
	scanf("%d", &score);
	
	if (score>=90)
		grade = 'A';
	else if (score>=80)
		grade = 'B';
	else if (score>=70)
		grade = 'C';
	else if (score>=60)
		grade = 'D';
	else
		grade = 'F';
		
	printf("컴퓨터공학입문 학점은 %c입니다. \n", grade);
	printf("수고많으셨습니다! \n");
	
	return 0;
}

- 예제 : 성적처리 확장

#include <stdio.h>

int main(void)
{
	int math, english;
	float sum,  ave;
	char grade;
	
	printf("수학 점수를 입력하세요 : ");
	scanf("%d", &math);
	
	printf("영어 점수를 입력하세요 : ");
	scanf("%d", &english);
	
	sum = math+english;
	ave = sum/2;
	printf("평균 : %f \n", ave);
		
	if (ave>=90)
		grade = 'A';
	else if (ave>=80)
		grade = 'B';
	else if (ave>=70)
		grade = 'C';
	else if (ave>=60)
		grade = 'D';
	else
		grade = 'F';
		
	printf("학점 : %c \n", grade);

	return 0;
}

 

<조건문(switch)과 문제 해결 예제(윤년 계산)>

 

-  조건문(swich)

  • 선택해야 할 조건이 여러 개 있을 경우 조건에 맞는 문장을 선택하여 수행
switch (expression)
{
    case value1 :
           statement1;
           break;

    case value2 :
           statement2;
           break;

    default :
           statement;
           break;
}
next_statement;
  • expression, value : 정수 또는 정수 수식이어야 함
  • swich case : 필수 항목
  • break, default : 선택 항목
  • swich(표현식)의 값을 case 상수식과 차례로 비교하여 표현식의 값과 일치하는 상수식이 있는 case문의 문장을 수행하고 break문을 만나면 swich문을 종료
  • case문 안에 break문을 지정하지 않으면 최초로 break문이 나올 때까지 현재 실행된 문장 이후의 모든 상수식의 문장들을 실행

- 윤년 계산하는 방법

  • 기원 연수가 4로 나누어 떨어지는 해는 우선 윤년
    • year%4 == 0
  • 그중에서 100으로 나누어 떨어지는 해는 평년
    • year%100 != 0
  • 다만 400으로 나누어 떨어지는 해는 다시 윤년으로 정함
    • year%400 == 0
  • 연결하면
    • (year%4 ==0) && (year%100 != 0) || (year%400 == 0)
    • 위의 조건식이 참이면 윤년

- switch예제 : 윤년 계산

#include <stdio.h>

int main(void)
{
	int year, month, maxDay;
	
	printf("년과 월을 입력 하세요 : ");
	scanf("%d %d", &year, &month);
	
	switch(month)
	{
		case 1 :
		case 3 :
		case 5 :
		case 7 :
		case 8 :
		case 10 :
		case 12 :
			maxDay = 31;
			break;
			
		case 4 :
		case 6 :
		case 9 :
		case 11 :
			maxDay = 30;
			break;
		
		case 2 :
			if ((year%4 == 0)&&(year%100 != 0)||(year%400 == 0))
			{
				maxDay = 29;
				break;
			}
			else
			{
				maxDay = 28;
				break;
			}			
		default :
			printf("입력이 잘못 되었습니다! \n");
	}
	
	printf("%d년 %d월의 말일은 %d일 입니다. \n", year, month, maxDay);
	
	return 0;
}

728x90

댓글