1. if문
if문은 내부의 조건을 검사해서 프로그램의 진행 경로를 결정합니다. 또한 조건의 개수가 많지 않을 때 사용하는 것이 적합합니다. if문은 아래와 같은 형식으로 작성됩니다.
if (조건1) {
// 조건1에 부합할 때
}
else if (조건2) {
// 조건1에 부합하지 않지만 조건2에 부합할 때
}
else {
// 위 조건들에 모두 부합하지 않을 때
}
예제를 통해서 if문이 어떻게 돌아가는지 알아보겠습니다.
1.1. 예제 1
가게에 손님이 왔을 때 2명 이하는 2인석으로, 3명 또는 4명일 때는 4인석으로, 5명 이상은 대형석으로 안내해주는 프로그램을 만들어 보겠습니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
printf("몇 명이세요? ");
int a;
scanf("%d", &a);
if (a == 1 || a == 2) {
printf("2인석으로 안내합니다.\n");
}
else if (a == 3 || a == 4) {
printf("4인석으로 안내합니다.\n");
}
else if (a > 4) {
printf("대형석으로 안내합니다.\n");
}
else {
printf("숫자가 잘못 입력되었습니다.\n");
}
system("pause");
}
결과:
몇 명이세요? 3
4인석으로 안내합니다.
계속하려면 아무 키나 누르십시오 . . .
마지막 else에는 양의 정수가 아닌 수를 입력했을 때를 고려하여 넣었습니다. 양의 정수가 아닌 수를 입력했을 때 다시 "몇 명이세요?"를 묻는 질문으로 돌아가지는 않고 프로그램은 종료됩니다.
1.2. 예제 2
사용자로부터 메인 메모리의 크기를 입력받아 16gb 이상이면 크기가 충분하다는 문장을 출력하도록 하고 16gb 미만이라면 메모리를 증설하라는 메시지를 출력할 수 있도록 합니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int a;
printf("메인 메모리의 크기를 입력하세요.(GB) ");
scanf("%d", &a);
if (a >= 16) {
printf("메인 메모리의 크기가 충분합니다.\n");
}
else {
printf("메인 메모리를 증설하세요.\n");
}
system("pause");
}
결과:
메인 메모리의 크기를 입력하세요.(GB) 64
메인 메모리의 크기가 충분합니다.
계속하려면 아무 키나 누르십시오 . . .
위 코드에서 if문을 여러 번 작성하려면 반드시 논리적으로 오류가 없는 조건을 입력해야 합니다. 만약 else문을 넣지 않고 if문으로 대체하여 if (size <= 16)을 넣게 되면, 16을 입력했을 때 두 개의 조건을 모두 충족하기 때문에 모든 조건의 출력문을 출력하게 됩니다.
2. switch문
switch문은 다양한 조건이 존재할 때 사용하면 소스코드를 짧게 유지할 수 있다는 장점이 있습니다. 형식은 아래와 같습니다.
switch (확인 대상) {
case 값1:
// 값1에 부합할 때
case 값2:
// 값2에 부합할 때
Default:
// 모든 경우
}
다만, switch문은 특정한 케이스가 만족되면 그 아래쪽으로 쭉 수행이 된다는 특징이 있습니다. (조건에 부합하는 경우 아래쪽의 case도 모두 만족) 따라서 각각의 case를 분리하기 위해서는 case문 마지막에 break를 넣어 특정 부분만 실행할 수 있도록 합니다.
또한, switch에서 판별할 변수는 정수 자료형과 문자 자료형을 사용할 수 있습니다. 문자 자료형을 사용할 때는 case에 'a' 처럼 작은따옴표를 사용하여 문자를 지정해줍니다. 단 C언어에서는 "Hello"와 같은 문자열은 사용이 불가능합니다.
2.1. 예제1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
printf("월(Month)을 입력하세요. ");
int a;
scanf("%d", &a);
switch (a) {
case 1:
case 2:
case 3:
printf("봄입니다.\n");
break;
case 4:
case 5:
case 6:
printf("여름입니다.\n");
break;
case 7:
case 8:
case 9:
printf("가을입니다.\n");
break;
case 10:
case 11:
case 12:
printf("겨울입니다.\n");
break;
default:
printf("월을 제대로 입력하세요. 1부터 12사이의 숫자만 가능합니다.\n");
}
system("pause");
}
결과:
월(Month)을 입력하세요. 4
여름입니다.
계속하려면 아무 키나 누르십시오 . . .
2.2. 예제2
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
printf("학점을 입력하세요. ");
char a;
scanf("%c", &a);
switch (a) {
case 'A':
printf("A 학점입니다.\n");
break;
case 'B':
printf("B 학점입니다.\n");
break;
case 'C':
printf("C 학점입니다.\n");
break;
default:
printf("학점을 바르게 입력하세요.\n");
}
system("pause");
}
결과:
학점을 입력하세요. A
A 학점입니다.
계속하려면 아무 키나 누르십시오 . . .