C언어에서 프로그램의 흐름을 제어하는 대표적인 의사결정(조건 판단) 문장은 다음과 같습니다.
- 단순 if 문(simple – if statement)
- if – else 문
- 중첩 if – else 문(nested if-else)
- else – if 사다리(ladder)
- switch 문
1. 단순 if 문(Simple if Statement)
'if' 키워드는 주어진 논리 조건이 참(True)일 때 특정 문장 블록을 실행하기 위해 사용됩니다. 조건이 거짓(False)이면 해당 블록은 건너뛰고 다음 문장으로 넘어갑니다.
문법(Syntax)
if (condition){
Statement(s)
}

예제
다음 예제는 입력받은 숫자가 50보다 큰지를 검사하는 프로그램입니다.
#include<stdio.h>
main (){
int a;
printf ("enter any number:\n");
scanf ("%d", &a);
if (a>50)
printf ("%d is greater than 50", a);
}
실행 결과(Output)
1) enter any number: 60 60 is greater than 50. 2) enter any number: 20 (출력 없음)
2. if – else 문
if – else 문은 조건이 참일 때와 거짓일 때 각각 다른 코드 블록을 실행합니다. 즉, 두 가지 경우 중 반드시 하나가 실행된다는 점이 단순 if 문과의 가장 큰 차이입니다.
문법(Syntax)
if (condition){
True block statement(s)
}
else{
False block statement(s)
}
순서도(Flowchart)

예제
다음은 입력받은 수가 짝수인지 홀수인지 판별하는 프로그램입니다.
#include<stdio.h>
main (){
int n;
printf ("enter any number:\n");
scanf ("%d", &n);
if (n%2 ==0)
printf ("%d is even number", n);
else
printf ("%d is odd number", n);
}
실행 결과(Output)
enter any number: 10 10 is even number
3. 중첩 if – else 문(Nested if-else)
중첩 if – else 문은 하나의 'if'(또는 'else') 블록 안에 또 다른 if 문이 포함된 형태로, 여러 조건을 단계적으로 검사해야 할 때 유용합니다.
문법(Syntax)
if (condition1){
if (condition2)
stmt1;
else
stmt2;
}
else{
if (condition3)
stmt3;
else
stmt4;
}
순서도(Flowchart)

예제
다음 예제는 입력받은 세 개의 숫자 중 가장 큰 값을 찾아 출력하는 프로그램입니다.
#include<stdio.h>
main (){
int a,b,c;
printf ("enter 3 numbers");
scanf ("%d%d%d", &a, &b, &c);
if (a>b){
if (a>c)
printf ("%d is largest", a);
else
printf ("%d is largest", c);
} else {
if (b>c)
printf ("%d is largest", b);
else
printf ("%d is largest", c);
}
}
실행 결과(Output)
enter 3 numbers = 10 20 30 30 is largest
4. else – if 사다리(Else-if Ladder)
else – if 사다리는 다방향(multi-way) 의사결정 구조입니다. 위에서부터 차례대로 조건을 검사하며, 처음으로 참이 되는 조건의 블록만 실행하고 나머지는 모두 건너뜁니다.
문법(Syntax)
if (condition1) stmt1; else if (condition2) stmt2; - - - - - else if (condition n) stmt n; else stmt x;
순서도(Flowchart)

예제
다음 예제는 이차방정식 ax² + bx + c = 0의 근을 판별식(d = b² − 4ac)을 이용해 구하는 프로그램입니다.
#include <math.h>
main (){
int a,b,c,d;
float r1, r2;
printf ("enter the values a b c");
scanf ("%d%d%d", &a, &b, &c);
d= b*b - 4*a*c ;
if (d>0){
r1 = (-b+sqrt(d)) / (2*a);
r2 = (-b-sqrt(d)) / (2*a);
printf ("root1 ,root2 =%f%f", r1, r2);
}
else if (d== 0){
r1 = -b / (2*a);
r2 = -b/ (2*a);
printf ("root1, root2 = %f%f", r1, r2);
}
else
printf ("roots are imaginary");
}
실행 결과(Output)
enter the values of a b c : 1 4 3 Root 1 = -1 Root 2 = -3
5. switch 문
switch 문은 여러 가지 선택지 중 하나를 고를 때 유용하게 사용됩니다. 표현식(expression)의 값과 일치하는 case 라벨의 문장을 실행하며, 각 case 끝에는 break 문을 두어 블록을 빠져나오게 합니다.
문법(Syntax)
switch (expression){
case value1 : stmt1;
break;
case value2 : stmt2;
break;
- - - - - -
default : stmt-x;
}
순서도(Flowchart)

예제
#include<stdio.h>
main (){
int n;
printf ("enter a number");
scanf ("%d", &n);
switch (n){
case 0 : printf ("zero");
break;
case 1 : printf ("one");
break;
default : printf ("wrong choice");
}
}
실행 결과(Output)
enter a number 1 one
이처럼 C언어의 의사결정 문장들은 상황에 맞게 적절히 활용하면 프로그램의 흐름을 유연하고 효율적으로 제어할 수 있습니다. 조건의 개수와 복잡도에 따라 단순 if, if-else, 중첩 구조, else-if 사다리, switch 문 중 알맞은 형태를 선택하는 것이 좋은 코드 작성의 첫걸음입니다.