1장 기본 알고리즘
01-1 알고리즘이란?
// 세 값의 최댓값
int main(void)
{
int a, b, c;
int max;
printf("세 정수의 최댓값을 구합니다.\n");
printf("a의 값 : ");
scanf_s("%d", &a);
printf("b의 값 : ");
scanf_s("%d", &b);
printf("c의 값 : ");
scanf_s("%d", &c);
max = a;
if (b > max)
{
max = b;
}
if (c > max)
{
max = c;
}
printf("최댓값은 %d입니다.\n", max);
return 0;
}
순차적 구조 : 프로세스가 순차적으로 실행되는 구조
선택 구조 : 식의 평가 결과에 따라 프로그램의 실행흐름을 변경하는 if문
알고리즘의 정의
문제를 해결하기 위한 것으로, 명확하게 정의되고 순서가 있는 유한 개의 규칙으로 이루어진 집합
01-2 반복
반복 구조 : 어떤 조건이 성립하는 동안 처리를 반복하여 실행 = 루프(loop)
while문 반복
// 1부터 n까지의 정수 합 구하기 : while문
int main(void)
{
int i, n;
int sum;
puts("1부터 n까지의 합을 구합니다.");
printf("n의 값 : ");
scanf_s("%d", &n);
sum = 0;
i = 1;
while (i <= n)
{
sum += i;
i++;
}
printf("1부터 %d까지의 합은 %d입니다.\n", n, sum);
return 0;
}
특징 : 실행 전에 반복을 계속할지를 판단 = 사전 판단 반복 구조
식1;
while(식2)
{
루프 본문
식3;
}
for문 반복
// 1부터 n까지의 정수 합 구하기 : for문
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(식1; 식2; 식3)
{
루프 본문
}
do while문 반복
// 1부터 n까지의 정수 합 구하기 : do while문(양수만 입력 가능하게)
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(제어식);
구조적 프로그래밍
하나의 입구와 하나의 출구를 가진 구성 요소만을 계층적으로 배치하여 프로그램을 구성하는 방법
순차, 선택, 반복 3종류의 제어 흐름을 사용
다중 루프
반복 안에서 다시 반복하는 경우
// 곱셈표 : 이중 루프
int main(void)
{
int i, j;
printf("--------곱셈표--------\n");
for (i = 1; i < 10; i++)
{
for (j = 1; j < 10; j++)
{
printf("%3d", i * j);
}
putchar('\n');
}
}
i가 1일 때 : j를 1부터 9까지 증가하면서 1 * j를 출력 후 줄 바꿈 실행
i가 2일 때 : j를 1부터 9까지 증가하면서 2 * j를 출력 후 줄 바꿈 실행
i가 5일 때 : j를 1부터 9까지 증가하면서 5 * j를 출력 후 줄 바꿈 실행
i가 9일 때 : j를 1부터 9까지 증가하면서 9 * j를 출력 후 줄 바꿈 실행
직각 이등변 삼각형 출력
// 왼쪽 아래가 직각인 이등변 삼각형을 출력 : 이중 루프
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');
}
}
i가 1일 때 : j를 1->1로 증가하면서 *를 출력 후 줄 바꿈 실행(*)
i가 2일 때 : j를 1->2로 증가하면서 *를 출력 후 줄 바꿈 실행(**)
i가 3일 때 : j를 1->3로 증가하면서 *를 출력 후 줄 바꿈 실행(***)
i가 4일 때 : j를 1->4로 증가하면서 *를 출력 후 줄 바꿈 실행(****)
#자료구조와 함께 배우는 알고리즘 입문 C언어편 - 6 (0) | 2022.05.19 |
---|---|
#자료구조와 함께 배우는 알고리즘 입문 C언어편 - 5 (0) | 2022.05.16 |
#자료구조와 함께 배우는 알고리즘 입문 C언어편 - 4 (0) | 2022.05.12 |
#자료구조와 함께 배우는 알고리즘 입문 C언어편 - 3 (0) | 2022.05.10 |
#자료구조와 함께 배우는 알고리즘 입문 C언어편 - 2 (0) | 2022.05.04 |