1) 반복문이란?
- 반복적으로 명령문을 실행시킬 수 있는 문장(중복성 제거, 간결해짐)
- 반복문 내부에 또 다른 반복문을 사용할 수 있음(중첩 사용)
2) 반복문의 예
- 반복문을 사용하지 않는 경우(중복성, 비효율성)
- 반복문을 사용하는 경우(중복성 회피, 간결해짐)
3) 반복문의 종류
- for문 : 반복 횟수가 정해져 있는 경우
- while문, do~while문 : 반복 횟수가 정해지지 않는 경우
4) 무한반복
- 반복문이 종료되지 않고 지속적으로 반복되는 현상
- 반복을 종료하는 명령문 : break
- 반복을 건너뛰는 명령문 : continue
5) for 반복문의 개요
- 초기식 : 반복문 처음에 한번만 실행됨
- 조건식 : 참인 동안 반복
- 증감식 : 반복할 명령문들이 실행된 후 실행됨
6) for 반복문 구조
for(초기식;조건식;증감식) { 반복할 명령문들; }
7) for 반복문 동작순서
- [초기식] - [조건식] - [증감식] - [반복할 명령문들] - [조건식]으로 반복됨
1) 반복횟수가 미리 정해지지 않은 경우 주로 사용
2) 조건식이 참인 동안 실행되는 반복문
3) 초기식은 while 반복문이 시작되기 전에 선언
4) 증감식은 while 반복문의 중괄호({})의 마지막에 선언
5) 초기식과 증감식은 필요에 따라 생략가능
6) while 반복문 구조
초기식; while(조건식) { 반복할 명령문들; 증감식; }
7) while 반복문 동작 순서
- [초기식] - [조건식] - [증감식] - [반복할 명령문들] - [조건식]으로 반복됨
1) 반복횟수가 미리 정해지지 않은 경우 주로 사용
2) 초기식은 do~while 반복문이 시작되기 전에 선언
3) 증감식은 do~while 반복문의 중괄호({})의 마지막에 선언
4) 초기식과 증감식은 필요에 따라 생략가능
5) 조건식과 상관없이 중괄호({}) 내부의 명령문들이 먼저 한번 실행된 후 조건식이 실행됨(while 반복문과의 차이점)
6) do~while 반복문 구조
초기식; do { 반복할 명령문들; 증감식; }while(조건식)
7) while 반복문 동작순서
- [초기식] - [조건식] - [증감식] - [반복할 명령문들] - [조건식]으로 반복됨
1) 작업선택 : 구구단(1), 누적합계(2), 종료(3)
2) 구구단(1) 선택시 입력 받은 단수에 맞는 구구단 출력
3) 누적합계(2) 선택시 1부터 입력 받은 값까지의 누적합계 출력
4) 종료(3) 선택시 프로그램 종료
5) 작업선택 및 구구단, 누적합계 모두 반복 입력 동작
#include <stdio.h>
int main()
{
int sum = 0, num = 0, dan = 0, job = 0, cnt=0;
char go = 'Y';
do {
printf("작업 선택 : 구구단(1), 누적합계(2), 종료(3) = ");
scanf_s("%d", &job);
getchar();
if (job < 1 || job > 3) {
printf("1번에서 3번을 선택하세요!\n");
continue;
}
if (job == 1) { // 구구단 선택
do {
printf("단(2~9)을 입력하세요 = ");
scanf_s("%d", &dan);
getchar();
if (dan < 2 || dan > 9) {
printf("2~9사이를 입력하세요!\n");
continue;
}
for (int i = 0; i <= 9; i++) {
printf("%d * %d = %d\n", dan, i, dan * i);
}
printf("다시 하시겠습니까(Y/N) ? = ");
scanf_s("%c", &go, sizeof(char));
getchar();
} while (go == 'Y' || go == 'y');
}
else if (job == 2) { // 누적합계
do {
printf("누적합계를 원하는 숫자를 입력하시오 = ");
scanf_s("%d", &num);
getchar();
sum = 0;
cnt = 1;
while (cnt <= num) {
sum += cnt;
cnt++;
}
printf("%d 까지의 누적 합계는 %d 입니다.\n", num, sum);
printf("다시 하시겠습니까(Y/N) ? = ");
scanf_s("%c", &go, sizeof(char));
getchar();
} while (go == 'Y' || go == 'y');
}
else break; //job이 3인경우 종료
} while(1);
}
<Result>
작업 선택 : 구구단(1), 누적합계(2), 종료(3) = 4
1번에서 3번을 선택하세요!
작업 선택 : 구구단(1), 누적합계(2), 종료(3) = 1
단(2~9)을 입력하세요 = 12
2~9사이를 입력하세요!
단(2~9)을 입력하세요 = 3
3 * 0 = 0
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
다시 하시겠습니까(Y/N) ? = n
작업 선택 : 구구단(1), 누적합계(2), 종료(3) = 2
누적합계를 원하는 숫자를 입력하시오 = 10
10 까지의 누적 합계는 55 입니다.
다시 하시겠습니까(Y/N) ? = y
누적합계를 원하는 숫자를 입력하시오 = 100
100 까지의 누적 합계는 5050 입니다.
다시 하시겠습니까(Y/N) ? = n
작업 선택 : 구구단(1), 누적합계(2), 종료(3) = 3