티스토리 뷰
2021.10.05 - [코딩 공부/C 언어] - [C언어 기초] 조건문 if
안녕하세요~!
오늘은 조건문 if에 이어 if ~ else문과 else if문에 대해 알아볼 거에요.
저번 포스트에서 설명했던 if문을 마스터하셨으면 이번 주제도 쉽습니다.
1. if ~ else |
if ~ else는 if에서 하나가 더 추가된 것입니다.
우리가 if문을 할 때엔 어떤 조건이 충족되었을 때에만 해야 할 행동을 정해줬었잖아요?
근데 이 조건에 만족하지 않으면 다른 행동을 했으면 할 수도 있잖아요...
프로그래밍을 하다 보면 좀 더 다양하게 시켜야 할 필요가 많이 생깁니다.
A 조건에 맞으면 밥을 먹어
그런데 A 조건에 맞지 않으면 국물도 없으니까 방에 들어가!
이런 식으로요.
그럴 때 쓰면 좋은 것이 if ~ else 입니다.
바로 위와 같은 과정을 거쳐 실행됩니다.
그럼 비주얼 스튜디오를 켜서 아래 코드를 적어봅시다.
#include<stdio.h>
void main()
{
int age;
printf("나이를 입력하시오 : ");
scanf("%d", &age);
if (age < 20)
{
printf("미성년자입니다.\n");
}
else
{
printf("성인입니다.\n");
}
}
실행해보면 이런 결과를 얻을 수 있습니다.
앞전에 if문을 이용했을 때와 똑같은 결과지만 코드가 좀 더 단순화되었죠?
어떤 조건에서 처리해야 하는 행동이 2가지 뿐이라면 if ~ else를 쓰면 좀 더 간편하게 쓸 수 있습니다.
좀 더 있어보이죠~~~?
#include<stdio.h>
void main()
{
int Num1, Num2, Max, Min;
printf("정수 두 개를 입력하시오 : ");
scanf("%d%d", &Num1, &Num2);
if (Num1 > Num2)
{
Max = Num1;
Min = Num2;
}
else
{
Max = Num2;
Min = Num1;
}
printf("\n Max = %d Min = %d", Max, Min);
}
이렇게도 써 볼까요?
우리가 정한 조건대로 숫자를 잘 판별하는 것을 볼 수 있습니다.
여기서 막간 퀴즈!
만약 여기서 정수 3개를 입력받아서 가장 큰 값과 가장 작은 값을 구한다면 어떻게 해야 할까요?
숫자가 하나 더 늘어났는데 if else는 두갠데?
.
.
.
지금까지 배운 조건문 if와 if ~ else문을 사용해
먼저 풀어보신 다음에 아래의 예시 코드를 참고해주세요.
#include<stdio.h>
void main()
{
int Num1, Num2, Num3, Max, Min;
printf("정수 세 개를 입력하시오 : ");
scanf("%d%d%d", &Num1, &Num2, &Num3);
if (Num1 > Num2 && Num1 > Num3)
{
Max = Num1;
if (Num2 > Num3)
Min = Num3; //종속문장이 한 줄일땐 중괄호 {} 생략 가능
else
Min = Num2;
}
if (Num2 > Num1 && Num2 > Num3)
{
Max = Num2;
if (Num1 > Num3)
Min = Num3;
else
Min = Num1;
}
if (Num3 > Num1 && Num3 > Num2)
{
Max = Num3;
if (Num1 > Num2)
Min = Num2;
else
Min = Num1;
}
printf("\n Max = %d Min = %d", Max, Min);
}
if와 if ~ else만을 사용해 이 문제를 푼다면 위와 같이 작성할 수 있습니다.
출력 잘 되네용~
제 코드가 정답은 아니고 예시 풀이 정도로 참고해 주세요.
코딩에 정해진 정답은 없거든용..ㅎㅎ
여기까지 하셨으면 if ~ else의 사용법은 어느정도 익히셨을거라 생각합니다.
2. else if |
그럼 이번에는 else if에 대해 알아봅시다.
이름 보면 대충 아시겠지만 if ~ else와 비슷한데 아주 조금 디테일함이 추가되었어요.
else if를 쓰면 조건문이 2개 이상일 때 하나만 실행하게 할 수 있어요.
아무래도 좀 더 많은 기능을 가진 프로그램을 만들다 보면 써야 할 조건이 2개, 3개 이상 늘어나는 경우가 많을거잖아요?
그 때 사용하면 아주 적절합니다.
아래 코드를 적어봅시다.
#include<stdio.h>
void main()
{
int Kor, Eng, Math;
printf("세과목의 성적을 입력하시오\n");
printf("국어 : ");
scanf("%d", &Kor);
printf("수학 : ");
scanf("%d", &Math);
printf("영어 : ");
scanf("%d", &Eng);
float Avg = static_cast<float>((Eng + Kor + Math) / 3.0);
if (Avg < 70)
printf("불합격!");
else if (Kor < 60)
printf("불합격!");
else if (Math < 60)
printf("불합격!");
else if (Eng < 60)
printf("불합격!");
else
printf("합격!!");
}
static_cast 키워드는 이번 한 번만 일시적으로 <> 내의 자료형으로 바꿔줍니다.
(float)(Eng+Kor+Math)/3.0
이런 식으로 써도 되긴 한데 좀 옛날 스타일이고
요즘 스타일은 강제 형변환보다는 키워드를 통한 형변환을 권장하기 때문에 형변환을 할 일이 있으면 static_cast<> 키워드를 쓰는 것을 추천드립니다.
형변환을 하는 이유는 int 자료형보다 float의 표현 범위가 더 넓어서 그렇습니다.
그래서 만약 형변환을 하지 않고 그냥 평균을 구하면 int 자료형으로 계산되기 때문에 소수점은 표현되지 않아요...
그래서 이번만 계산값을 일시적으로 float 자료형으로 바꿔주어서 소수점까지 살리는 것이죠~
2021.02.06 - [코딩 공부/C 언어] - C언어 기초 : 암시적 형변환과 명시적 형변환
관련해서 더 궁금하시면 위 글을 참조하세요~
자료형 크기에 대한 기본적인 개념을 익힐 수 있습니다.
다시 본론으로 돌아와서 위 코드를 실행해서 테스트해보면 우리가 의도한대로 동작하는 것을 볼 수 있습니다.
이제 우리가 만든 프로그램이 좀 더 다양한 조건을 사용해서 판단을 내릴 수 있게 되었어요!
많이 똑똑 해졌는걸~~~
그럼 오늘 내용을 복습하는 차원에서 간단한 문제를 풀어봅시다.
1. 세 과목의 성적을 입력 받아 합계와 평균을 구하고 평균이 90이상이면 “A”, 80이상이면 “B”, 70 이상이면 “C”, 60 이상이면 “D”, 60미만이면 “F”를 출력하시오. 2. 유원지에서 말을 태워주는데 처음 30분의 기본요금은 1인당 3000원이다. 이후에는 10분당 500원씩의 추가 요금을 받는다. 말을 탄 시간을 입력 받아서 전체 금액을 계산하는 프로그램을 작성하여라. 3. 배달 도시락을 주문하는데 10개까지는 개당 2500원이고 10개를 초과하는 양에 대해서는 개당 2400원이다. 배달 도시락의 개수를 입력 받아서 금액을 계산하는 프로그램을 작성하라. 4. 디스켓 1통에 5000원한다. 그런데 한번에 10통 이상을 사면 전체 금액의 10%를 할인하여준다. 그리고 100통 이상을 사면 전체 금액의 12%를 할인하여 준다. X통의 디스켓을 사려면 얼마가 있어야 하는가 |
간단한 수학과 저번 시간에 배운 조건문 if, 오늘 배운 if ~ else, else if 를 사용하면 충분히 풀 수 있는 문제들입니다.
최대한 구글 검색 없이 스스로 풀어보시고
만약 피드백이 필요하시다면 언제든 댓글로 남겨주세요~
예습복습 열심히 하시고 다음 포스트에서 만나요!
'코딩 공부 > C 언어' 카테고리의 다른 글
[C언어 기초] 반복문 while (0) | 2021.10.24 |
---|---|
[C언어 기초] 조건문 switch (0) | 2021.10.16 |
[C언어 기초] 조건문 if (0) | 2021.10.05 |
C 언어로 만든 미로찾기 소스 (6) | 2021.04.18 |
C 언어 기초 : 연산자 3 - 비트 연산자 (0) | 2021.04.16 |
- Total
- Today
- Yesterday
- 깊이우선탐색
- 캐나다생활
- 백준
- 해커랭크
- 컴퓨터공부
- 프로그래밍
- C언어기초
- 프로그래머스
- 컴퓨터
- 알고리즘
- 코딩공부
- 하드웨어
- dp
- 너비우선탐색
- 컴퓨터사이언스
- DFS
- c언어
- 문제풀이
- hackerrank
- 그리디
- 아이패드
- 캐나다
- 다이나믹프로그래밍
- 스위프트플레이그라운드
- 영어공부
- 기초
- c++
- 애플
- BFS
- greedy
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |