1. C 언어의 기본적인 흐름 제어
1.1 문장(Statement)
- C 프로그램의 기본 실행 단위
- 선언문: 변수, 자료형 등을 선언 → 예: int a;
- 실행문: 실제 동작 수행 → 예: a += 10;
- 실행문은 함수 안에서만 작성 가능
- 세미콜론(;) 으로 끝나야 함
- 기본 실행 순서는 순차적이지만, 흐름 제어문으로 변경 가능
1.2 흐름 제어 구조의 3가지 형태
- 순차 제어: 위에서 아래로 순서대로 실행
- 선택 제어: 조건에 따라 분기
- 반복 제어: 일정 조건 동안 반복
2. 선택 제어문 (Selection Statements)
2.1 종류
- if 문
- switch 문
2.2 if문
(1) 단순 if문
if (조건식)
실행문;
- 조건식이 참(true) 이면 실행, 거짓이면 건너뜀
- 여러 문장을 하나로 묶으려면 블록 { ... } 사용
if (a < b) {
int tmp = a;
a = b;
b = tmp;
}
printf("max = %d, min = %d\n", a, b);
(2) if ~ else 문
if (조건식)
참일 때 실행문;
else
거짓일 때 실행문;
예시:
int a, b, max;
scanf("%d %d", &a, &b);
if (a >= b)
max = a;
else
max = b;
printf("max = %d\n", max);
(3) 다중 if문 (Nested if)
if (조건1)
if (조건2)
문장1;
else
문장2;
else
문장3;
예시:
int a;
scanf("%d", &a);
if (a >= 0)
if (a == 0)
printf("입력된 값은 0\n");
else
printf("입력된 값은 양수\n");
else
printf("입력된 값은 음수\n");
주의: else는 항상 “가장 가까운 if”와 짝을 이룸.
(4) 다중 if ~ else if ~ else 문
if (조건1)
문장1;
else if (조건2)
문장2;
else if (조건3)
문장3;
else
문장4;
예시:
int score;
scanf("%d", &score);
if (score >= 90)
printf("학점은 A\n");
else if (score >= 80)
printf("학점은 B\n");
else if (score >= 70)
printf("학점은 C\n");
else if (score >= 60)
printf("학점은 D\n");
else
printf("학점은 F\n");
2.3 switch문
(1) 기본 구조
switch (식) {
case 상수1:
문장1;
break;
case 상수2:
문장2;
break;
...
default:
기본문장;
}
- 식은 정수형 (int, char, enum 등) 이어야 함
- case는 반드시 상수값만 사용 가능
- break가 없으면 다음 case로 계속 실행됨 (fall-through)
(2) 예시
int score;
scanf("%d", &score);
switch (score / 10) {
case 10:
case 9:
printf("학점은 A\n");
break;
case 8:
printf("학점은 B\n");
break;
case 7:
printf("학점은 C\n");
break;
case 6:
printf("학점은 D\n");
break;
default:
printf("학점은 F\n");
}
3. 반복 제어문 (Loop Statements)
3.1 반복문의 종류
- for 문: 반복 횟수가 명확할 때
- while 문: 조건이 참인 동안 반복
- do ~ while 문: 한 번은 실행 후 조건 검사
3.2 for문
(1) 형식
for (초기식; 조건식; 증감식)
실행문;
- 초기식: 반복 제어 변수 초기화
- 조건식: 참이면 반복, 거짓이면 종료
- 증감식: 제어 변수 변화
(2) 예시
int i, sum = 0;
for (i = 1; i <= 10; ++i)
sum = sum + i;
printf("1부터 %d까지의 합 = %d\n", i - 1, sum);
(3) 중첩 for문
for (a = 1; a <= 3; ++a) {
printf("a=%d\n", a);
for (b = 0; b < 4; b++)
printf("b=%d ", b);
putchar('\n');
}
3.3 while문
(1) 형식
while (조건식)
실행문;
- 조건이 참이면 계속 반복, 거짓이면 종료
- 반복 전 조건 검사
(2) 예시
int i = 1, sum = 0;
while (i <= 10) {
sum = sum + i;
i++;
}
printf("1부터 %d까지의 합 = %d\n", i - 1, sum);
3.4 do ~ while문
(1) 형식
do {
실행문;
} while (조건식);
- 최소 한 번은 반드시 실행됨 (조건 검사 전에 실행)
(2) 예시
int i = 1, n, sum = 0;
printf("n = ");
scanf("%d", &n);
do {
sum = sum + i;
i++;
} while (i <= n);
printf("1부터 %d까지의 합 = %d\n", i - 1, sum);
4. 기타 제어문
4.1 break문
- switch나 반복문을 강제로 종료
- 가장 가까운 블록만 빠져나옴
int num, sum = 0;
while (1) {
printf("num(끝이면 0 입력): ");
scanf("%d", &num);
if (num == 0)
break;
sum += num;
}
printf("sum = %d\n", sum);
4.2 continue문
- 반복문 내에서 아래 부분을 건너뛰고 조건 검사로 복귀
int num;
do {
printf("num = ");
scanf("%d", &num);
if (num < 0) {
printf("음수의 제곱근은 계산 불가\n");
continue;
}
printf("%d의 제곱근 = %f\n", num, sqrt(num));
} while (num != 0);
4.3 goto문
- 지정된 label로 무조건 이동 (비권장)
- 가독성과 유지보수성 저하 위험
goto skip;
printf("이 문장은 건너뜁니다.\n");
skip:
printf("goto로 점프했습니다.\n");
함수 밖이나 블록 밖으로는 이동 불가.
'C' 카테고리의 다른 글
| 배열과 포인터 (1) | 2025.11.11 |
|---|---|
| 함수와 기억 클래스 (0) | 2025.11.11 |
| 입.출력 함수와 연산자 (0) | 2025.10.22 |
| 자료형과 선행처리기 (0) | 2025.10.13 |
| C 언어의 개요 (1) | 2025.08.27 |