프로그램은 연산 결과나 입력값에 따라 처리 방법을 바꿔야 할 때가 많다. 그래서 조건에 따라 실행 문장을 선택할 수 있는 구문이 필요하다. 선택문은 조건문이라고도 한다.
전제인 조건식과 조건을 만족해야 수행되는 실행문으로 구성
기본 if문은 조건식을 만족하면 실행문을 실행하고, 만족하지 않으면 실행하지 않고 지나간다.
#include <stdio.h>
int main(void)
{
int a = 20;
int b = 0;
if(a > 10)
{ // 조건식 a 는 10보다 크므로 참
b = a; // 대입문 실행
}
printf("a : %d, b : %d\n", a, b);
return 0;
}
조건문이 참이고 실행문이 실행되면서 a : 20, b : 20 로 결과가 나온다.
규칙1
if문은 중괄호{ }를 사용하고 들여쓰기해 실행문을 명확히 구분하는 것이 좋다.
심지어 중괄호를 쓰지 않고도 실행이 되지만 실행문이 한 문장일 때만 중괄호를 사용하지 않을 수 있다.
규칙2
실행한 문장이 두 문장 이상이면 반드시 중괄호로 묶어야 한다.
조건을 만족하지 못할 때 수행되는 실행문을 작성하기 위해 if ~ else문을 쓴다.
#include <stdio.h>
int main(void)
{
int a = 10;
if(a >= 0) {
a = 1; // a가 0보다 크거나 같으면 a에 1저장
} else {
a = -1; // a가 0보다 작으면 a에 -1 저장
}
printf("a : %d\n", a);
return 0;
}
결국 두 실행문 중 하나만 실행되며, 반드시 하나는 실행되는 구조를 갖는다.
3개 이상의 실행문에서 반드시 하나를 선택하는 경우의 코드를 작성할 땐 if ~ else if ~ else문을 사용한다.
#include <stdio.h>
int main(void)
{
int a = 0, b = 0;
if (a > 0){ // if 조건식
b = 1; // 실행문 1
} else if (a == 0) { // else if 조건식
b = 2; // 실행문 2
} else {
b = 3; // 실행문 3
}
printf("b : %d\n", b);
return 0;
}
키가 187.5cm 이상이고 몸무게가 80kg 미만이면 ok를 출력하고 그 이외의 경우에는 cancel을 출력하는 프로그램이 완성되도록 하시오(키는 179.5 몸무기는 75.0으로 double형 변수에 초기화합니다.)
나의 시도
#include <stdio.h>
int main(void)
{
double height = 179.5;
double weight = 75.0;
if ((height >= 187.5) && (weight < 80.0)) {
printf("ok\n");
} else {
printf("cancel\n");
}
return 0;
}
여기서 발전해서 유저가 직접 입력하고 결과가 자동으로 나오게 하는 프로그램을 작성할 수 없을까 하는 생각을 해보았고, 직접 작성해보았다. 또한 앞에 배운 bmi 수치를 활용해보았다.
bmi 20.0이상, 25미만이면 "표준입니다", 아니면 "체중관리가 필요합니다" (bmi는 체중 / 키의제곱(m))
#include <stdio.h>
int main(void)
{
double height, weight, bmi;
printf("당신의 키와 체중을 순서대로 입력해주세요 : ");
scanf_s("%lf %lf", &height, &weight);
height = height / 100.0;
bmi = weight / (height * height);
if ((bmi >= 20) && (bmi < 25)) {
printf("표준입니다\n");
} else {
printf("체중관리가 필요합니다\n");
}
return 0;
}