본문 바로가기

Computer Engineering/Data Structures Using C

[C언어 자료구조] 01-2. 반복

반응형

1부터 n까지의 정수 합 구하기

#include <stdio.h>

int main(void)
{
	int n;

	printf("정수를 입력하세요. :");
	scanf_s("%d", &n);
	if (n > 0)
		printf("이 수는 양수입니다.\n");
	else if (n < 0)
		printf("이 수는 음수입니다.\n");
	else
		printf("이 수는 0입니다.\n");

	return 0;
}

while문 반복

1부터 n까지의 합을 구하는 순서도와 변수의 변화

 

 

  1. 합을 저장하는 변수 sum을 0, 반복을 제어하기 위한 변수 i를 1로 초기화
  2. 변수 i의 값이 n이하인 동안 i의 값을 1씩 증가하면서 명령문을 n회 반복 실행

for문 반복

 

하나의 변수를 사용하는 반복문에서 사용

 

#include <stdio.h>

int main(void)
{
	int i, n;
	int sum;
	puts("1부터 n까지의 합을 구합니다.");
	printf("n값 :");
	scanf_s("%d", &n);
	sum = 0;
	for (i = 1; i <= n; i++)
	{
		sum += i;
	}
	printf("1부터 %d까지의 합은 %d입니다. \n", n, sum);

	return 0;
}

for문의 형식

for(식1;식2;식3)명령문

 

식1 : 처음 한 번만 실행

식2: 0이 아닌 경우 반복하여 실행

식3: 평가

 

for문과 while문의 차이

  1. for(식1; 식2; 식3)
    루프 본문
  2. 식1;
    while(식2)

    {
     루프 본문
     식3;
    }

양수만 입력하기

n에 -값을 넣는 경우 올바르지 않은 결과가 나온다.

 

#include <stdio.h>

int main(void)
{
	int i, n;
	int sum;
	puts("1부터 n까지의 합을 구합니다.");
	do {
		printf("n값 :");
		scanf_s("%d", &n);
	} while (n <= 0);
	sum = 0;
	for (i = 1; i <= n; i++)
	{
		sum += i;
	}
	printf("1부터 %d까지의 합은 %d입니다. \n", n, sum);
	
	return 0;
}

 

do-while문을 이용해 n이 0이하의 값을 입력하면 다시 입력할 것을 요구하도록 작성하였다.

 

do-while문은 루프 본문을 한 번 실행한 다음에 계속 반복할 것인지를 판단하는 사후 판단 반복문이다.

 

사전 판단 반복문 (while문, for문) 사후 판단 반복문 (do-while문)
처음에 제어식이 0이면 루프 본문을 한번도 실행하지 않음 제어식과 상관없이 루프 본문이 반드시 한 번은 실행

 

 


구조적 프로그래밍

하나의 입구와 하나의 출구를 가진 구성 요소만을 계층적으로 배치해 프로그램을 구성하는 방법

 

구조적 프로그래밍의 제어 흐름

  1. 순차
  2. 선택
  3. 방법

 


다중 루프

곱셈표

#include <stdio.h>

int main(void)
{
	int i, j;
	printf("-----곱셈표-----\n");
	for (i = 1; i <= 9; i++)
	{
		for (j = 1; j <= 9; j++)
		{
			printf("%3d", i * j);// i*j를 3자리로 출력

		}
		putchar('\n'); //열 루프 종료 후 줄 바꿈 문자의 출력
	}
	return 0;
}
  • i가 1일 때 : j를 1 ->9 증가시키면서 1*j를 출력합니다. 그리고 줄 바꿈합니다.
  • i가 2일 때 : j를 1 ->9 증가시키면서 2*j를 출력합니다. 그리고 줄 바꿈합니다.
  • i가 3일 때 : j를 1 ->9 증가시키면서 3*j를 출력합니다. 그리고 줄 바꿈합니다.
  • i가 9일 때 : j를 1 ->9 증가시키면서 9*j를 출력합니다. 그리고 줄 바꿈합니다.

 

직각 이등변 삼각형 출력

 

#include <stdio.h>

int main(void)
{
	int i, j, n;
	do {
		printf("몇 단 삼각형입니까? :");
		scanf_s("%d", &n);
	} while (n <= 0);

	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= i; j++)
		{
			putchar('*');
		}
		putchar('\n');
	}
	return 0;
}
  • i가 1일 때 : j를 1 ->1 증가시키면서 *를 출력합니다. 그리고 줄 바꿈합니다.
  • i가 2일 때 : j를 1 ->2 증가시키면서 *를 출력합니다. 그리고 줄 바꿈합니다.
  • i가 3일 때 : j를 1 ->3 증가시키면서 *를 출력합니다. 그리고 줄 바꿈합니다.
  • i가 4일 때 : j를 1 ->4 증가시키면서 *를 출력합니다. 그리고 줄 바꿈합니다.
  • i가 5일 때 : j를 1 ->5 증가시키면서 *를 출력합니다. 그리고 줄 바꿈합니다.

 

반응형