2023.1.3. 최초 작성
컴퓨터 프로그램에서 반복 구조는 조건문과 함께 가장 기본적인 문법이면서 알고리즘을 구현할 때 아주 활용도가 높다.
C언어는 세 가지 반복문을 지원한다.
첫 번째는 while 문인데 if 문과 아주 유사하다.
if 문은 조건식이 참이면 중괄호 안의 내용을 실행한다. while 문도 마찬가지이다. 조건식이 참이면 괄호 안의 내용을 실행하는데 반복해서 실행한다. 조건식이 참이면 계속 반복되고 조건식이 거짓이 되면 반복이 멈추기 때문에 조건식의 구조와 조건식에서 사용한 변수의 변화가 중요하다.
#include <stdio.h>
void main() {
int n = 10;
puts("카운트 다운 시작..");
while (n >= 0) {
printf("%d\n", n--);
}
puts("발사!!!");
}
위 코드는 10부터 카운트 다운하는 반복 구조의 프로그램이다. while의 조건식에서 사용한 n이 처음에 10인데 0보다 작으면 반복이 멈추기 때문에 n의 값을 감소해야 한다. 만약 n의 값이 변하지 않거나 0 이상의 값만 가진다면 무한 반복하게 될 것이다.
두 번째 반복문인 do-while 문은 아래 코드와 같고 실행 결과는 while 문과 같다.
#include <stdio.h>
void main() {
int n = 10;
puts("카운트 다운 시작..");
do{
printf("%d\n", n--);
}while(n >= 0);
puts("발사!!!");
}
while 문과의 차이점은 while이 아래에 있고 do에서 시작된다.
do는 ~을 하다. 라는 뜻대로 do-while 문은 일단 do에서 시작하고 while에서 조건식을 확인한다.
위 코드에서 n을 –10으로 바꾸어도 do 덕분에 한 번은 실행되고, 이런 특징을 이용해서 처음에 한 번은 무조건 실행하고 그 뒤에 조건식을 입력하는 프로그램을 작성할 때 유용하다.
아래 코드는 do-while을 이용해 입력된 숫자를 누적해서 더하는 프로그램이다.
#include <stdio.h>
void main() {
int n;
int sum = 0;
do {
puts("누적해서 더할 값을 입력하세요. 종료하려면 0을 입력하세요.");
scanf("%d", &n);
sum += n;
}while(n != 0);
printf("누적된 합은 : %d입니다.\n", sum);
}
세 번째 반복문은 for 문이다.
for 문은 괄호 안에 세미콜론(;)을 구분자로 3개의 정보(초기식, 조건식, 증감식)가 들어간다.

초기식은 처음에 한 번만 실행된다.
조건식은 괄호 안의 내용을 실행할지를 판단하고 조건식이 참인 동안 반복하게 되고 조건식이 거짓이 되면 반복은 멈춘다.
증감식은 괄호 안의 내용을 실행한 후에 반복 흐름을 제어하기 위해 실행된다.
순서는 다음과 같다.
초기식 --> 조건식(참이면) --> 괄호안 내용 실행 --> 증감식 --> 조건식(참이면) --> 괄호안 내용 실행 --> 증감식 --> 조건식(참이면) --> 괄호안 내용 실행 --> 증감식 --> 조건식(참이면) --> 괄호안 내용 실행 --> 증감식 --> 조건식(거짓이면) --> 반복 종료
아래 코드는 for 문을 이용해 구구단의 2단을 출력한 프로그램이다.
#include <stdio.h>
void main() {
int i;
for (i = 1; i <= 9; i++) {
printf("2 x %d = %d\n", i, 2 * i);
}
}
반복문 안의 반복문 구조를 만들면 구구단을 2단부터 9단까지 출력할 수 있다.
#include <stdio.h>
void main() {
int i, j;
for (i = 2; i <= 9; i++) {
for (j = 1; j <= 9; j++) {
printf("%d x %d = %d\n", i, j, i*j);
}
}
}
위 코드처럼 이중 반복 구조까지는 크게 헷갈리지 않지만 3중 이상의 반복 구조를 만들면 헷갈려서 실수할 가능성이 증가하므로 너무 많은 중첩 반복을 만드는 것은 권장하지 않는다.
'프로그래밍 > C' 카테고리의 다른 글
C언어 전역변수와 지역변수의 블록 범위 (0) | 2023.01.05 |
---|---|
C언어 반복문 흐름제어(break, continue, return) (0) | 2023.01.05 |
C언어 조건문(if, switch, 3항 연산자) (0) | 2023.01.03 |
C언어 입력함수 scanf와 입력 버퍼 (0) | 2023.01.02 |
C언어 연산자 (0) | 2023.01.02 |