7장 반복문의 기본문법 이해

JongseokLee·2021년 7월 30일
0

C 프로그래밍 기초

목록 보기
7/15
post-thumbnail

7장 반복문의 기본문법 이해

1. for 반복문 이해하기

1) 반복문이란?

  • 반복적으로 명령문을 실행시킬 수 있는 문장(중복성 제거, 간결해짐)
  • 반복문 내부에 또 다른 반복문을 사용할 수 있음(중첩 사용)

2) 반복문의 예

  • 반복문을 사용하지 않는 경우(중복성, 비효율성)
  • 반복문을 사용하는 경우(중복성 회피, 간결해짐)

3) 반복문의 종류

  • for문 : 반복 횟수가 정해져 있는 경우
  • while문, do~while문 : 반복 횟수가 정해지지 않는 경우

4) 무한반복

  • 반복문이 종료되지 않고 지속적으로 반복되는 현상
    • 반복을 종료하는 명령문 : break
    • 반복을 건너뛰는 명령문 : continue

5) for 반복문의 개요

  • 초기식 : 반복문 처음에 한번만 실행됨
  • 조건식 : 참인 동안 반복
  • 증감식 : 반복할 명령문들이 실행된 후 실행됨

6) for 반복문 구조

for(초기식;조건식;증감식)
	{
    	반복할 명령문들;
    }

7) for 반복문 동작순서

  • [초기식] - [조건식] - [증감식] - [반복할 명령문들] - [조건식]으로 반복됨

2. while 반복문 이해하기

1) 반복횟수가 미리 정해지지 않은 경우 주로 사용
2) 조건식이 참인 동안 실행되는 반복문
3) 초기식은 while 반복문이 시작되기 전에 선언
4) 증감식은 while 반복문의 중괄호({})의 마지막에 선언
5) 초기식과 증감식은 필요에 따라 생략가능

6) while 반복문 구조

초기식;
	while(조건식) {
    	반복할 명령문들;
        증감식;
        }

7) while 반복문 동작 순서

  • [초기식] - [조건식] - [증감식] - [반복할 명령문들] - [조건식]으로 반복됨

3. do~while 반복문 이해하기

1) 반복횟수가 미리 정해지지 않은 경우 주로 사용
2) 초기식은 do~while 반복문이 시작되기 전에 선언
3) 증감식은 do~while 반복문의 중괄호({})의 마지막에 선언
4) 초기식과 증감식은 필요에 따라 생략가능
5) 조건식과 상관없이 중괄호({}) 내부의 명령문들이 먼저 한번 실행된 후 조건식이 실행됨(while 반복문과의 차이점)

6) do~while 반복문 구조

초기식;
	do {
    	반복할 명령문들;
        증감식;
        }while(조건식)

7) while 반복문 동작순서

  • [초기식] - [조건식] - [증감식] - [반복할 명령문들] - [조건식]으로 반복됨

4. 단원 실습

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
profile
DataEngineer Lee.

0개의 댓글