다들 반복문 글에서 다룬 예제는 풀어보셨나요?? 다들 해결하셨을 거라 믿을게요 ㅎㅎ
#include <stdio.h>
int main(void) {
for (int i = 0; i < 5; i++) {
for (int j = 0; j <= i; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
2022.07.09 - [프로그래밍언어/c언어] - C언어 독학 #9. 반복문
조건문이란?
우리는 보통 어떤 선택에 있어서 기준을 정하고, 이러한 기준을 바로 조건이라고 합니다.
이전 글에서 다룬 반복문에서도 반복을 하기 위해 조건식이라는 것을 사용하여 조건을 충족시키면 반복을 시켰는데, 이것이 바로 조건문입니다.
횟수가 60회 미만 -> 팔굽혀펴기 1회 더 실시
횟수가 60회 이상 -> 팔굽혀펴기 완료
바로 팔굽혀펴기 횟수가 60회 이상이 맞는지가 조건이 됩니다. 이해가 되시나요??
팔굽혀펴기 예시처럼 조건을 단순히 두 가지 분기로 나누는 것 말고도 위와 같이 세 가지 이상의 조건들로도 표현할 수 있습니다. 점수 범위에 따라 점수가 90점 이상이면 A학점, 80~90점이면 B학점, 80점 미만이면 C학점을 받게 됩니다. 이때 이 범위들이 기준이며 조건이 됩니다! 참고로 F 학점은 슬퍼서 넣지 않았습니다.. 하하
if 문
if는 c언어에서 조건문을 사용하기 위한 키워드 중 하나로 프로그램의 실행 흐름을 분기하는 조건을 나타냅니다.
if 키워드 옆에 있는 소괄호 안에 조건식을 입력하고, 조건이 참이면 중괄호 안에 있는 내용을 수행하게 합니다. 만약 참일 때 수행하는 내용이 한 문장으로 쓰일 수 있다면 중괄호를 쓰지 않아도 됩니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int score;
printf("점수를 입력하세요:");
scanf("%d", &score);
if (score >= 90)
printf("A학점입니다.\n");
return 0;
}
위의 코드는 점수를 입력받아서 점수가 90점 이상이면 A학점이라는 것을 출력해주는 코드입니다.
위와 같이 실행하여 90 이상인 92를 입력하게 되면 'A학점입니다.'라는 문구를 출력한 뒤 종료됩니다.
만약 90 미만인 점수를 입력하면 조건을 만족하지 않기 때문에 위와 같이 아무것도 출력하지 않고 종료됩니다.
만약 90점 아래의 점수를 입력했을 때 즉, 조건을 만족하지 않은 값을 입력했을 때에도 흐름을 제어하고 싶으면 어떻게 해야 할까요?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int score;
printf("점수를 입력하세요:");
scanf("%d", &score);
if (score >= 90)
printf("A학점입니다.\n");
else
printf("B학점입니다.\n");
return 0;
}
바로 위와 같이 else라는 키워드를 사용하여 제어할 수 있습니다. 위와 같이 else 키워드를 사용하면 87을 입력하면 'B학점입니다.'라는 문구를 출력한 뒤 종료됩니다.
위와 같은 흐름으로 프로그램이 동작하며 else라는 키워드는 if 키워드가 있어야만 사용할 수 있습니다. 위의 코드는 90점을 기준으로 두 가지 분기로 나뉜 코드인데 그렇다면 또 다른 조건을 주려면 어떻게 해야 할까요?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int score;
printf("점수를 입력하세요:");
scanf("%d", &score);
if (score >= 90)
printf("A학점입니다.\n");
else if (score >= 80)
printf("B학점입니다.\n");
else
printf("C학점입니다.\n");
return 0;
}
바로 위의 코드와 같이 else if 키워드를 사용하면 됩니다! else if 문은 if의 조건을 만족하지 않으면서 또 다른 조건식을 부여하여 그 조건이 참이면 해당 내용을 수행하게 됩니다.
따라서 만약 85를 입력하면 if 문의 조건에 만족하지 않으므로 else if 문의 조건을 검사하고, 85는 80이상의 수가 맞기 때문에 해당 내용인 'B학점입니다.'라는 문구를 출력한 뒤 종료됩니다.
만약 75를 입력하면 if문의 조건에 만족하지 않고, else if문의 조건에도 만족하지 않으므로 else 문의 내용인 'C학점입니다.'라는 문구를 출력한 뒤 종료합니다.
switch~case 문
switch~case 문도 if문과 마찬가지로 c언어에서 조건문을 사용하기 위한 키워드입니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
char grade;
printf("학점을 입력하세요:");
scanf("%c", &grade);
switch (grade)
{
case 'A':
printf("점수는 100점 이하 90점 이상입니다.\n");
break;
case 'B':
printf("점수는 90점 미만 80점 이상입니다.\n");
break;
default:
printf("점수는 80점 미만입니다.\n");
break;
}
return 0;
}
이번에는 학점을 입력받아서 그 학점의 점수 범위는 어떻게 되는지 알아보기 위한 코드를 작성했습니다. 학점을 입력받은 문자 grade를 switch문에 전달하고, grade에 저장된 값에 따라 case를 나눕니다.
만약 grade에 저장된 값이 문자 A이면, '점수는 100점 이하 90점 이상입니다.'라는 문구를 출력하고 break 문을 수행합니다. 이때 break 키워드는 다른 case를 실행하지 않도록 switch문을 종료해주는 키워드입니다. 따라서 문구를 출력 후 프로그램이 종료됩니다.
grade에 저장된 값이 문자 B이면 '점수는 90점 미만 80점 이상입니다.'라는 문구를 출력 후 마찬가지로 break문을 수행해 프로그램이 종료됩니다. case로 지정된 A, B를 제외한 경우는 default문으로 처리합니다. if문으로 비유하면 else문과 유사한 기능입니다. 따라서 grade에 문자 C가 저장되어있으면 default문으로 '점수는 80점 미만입니다.'를 출력 후 프로그램은 종료됩니다.
만약 분기의 수가 많아지면 switch~case문을 사용하는 것이 가독성 면에서는 좋을 수 있지만, switch~case 문에서는 비교 연산자를 사용할 수 없기 때문에 한계가 있다는 단점이 있습니다. 또한 자료형도 int형, char형만 사용할 수 있고, 다른 자료형은 사용할 수 없습니다.
예제 풀어보기
세 자리 자연수를 입력받아 각 자리의 숫자가 각각 짝수인지 홀수인지 출력하는 프로그램 작성
<실행 결과 예시>
정답은 다음글에!
'프로그래밍언어 > c언어' 카테고리의 다른 글
C언어 독학 #9. 반복문 (2) | 2022.07.09 |
---|---|
C언어 독학 #8. 자료형 (0) | 2020.07.18 |
C언어 독학 #7. 비트 체계와 비트 연산자 (0) | 2020.07.17 |
C언어 독학 #6. 연산자 (0) | 2020.05.13 |
C언어 독학 #5. 상수 변하지 않는 데이터 (2) | 2020.05.12 |