본문 바로가기
C언어/Do it! 개념 정리

#1-2. 반복

by 가으더 2021. 12. 31.
728x90

반복 알고리즘 ->while, for, do while 와 같은 반복문법을 사용한다.

 

while문

- 실행 전 반복할지 판단 = '사전 판단 반복 구조'

 

형태

while(조건) {

    명령문

}

for문

- 하나의 변수를 사용할 때는 while보다 for문이 좋다.

 

형태

for(초기값: 조건값: 증감값) {

    명령문

}

 

Q7: n에 따라 1부터 n까지의 합을 출력하는 프로그램 만들기.

ex) if n = 4, 1 + 2 + 3 + 4 = 10 형태로 출력

int main(void) {
	int N;
	int sum = 0;

	scanf("%d", &N);

	for (int i = 1; i < N; i++) {
		printf("%d", i);
		printf(" + ");
		sum += i;
	}

	printf("%d = %d\n",N, sum + N);

	return 0;
}

 

Q8: 가우스 덧셈으로 sum = (a + b)/ (b/2) 형태로 a, b에 값을 넣으면 된다.

Q9: 정수 합을 구하는 함수 만들기 -> 가우스 덧셈으로도 만들 수 있지만 for문으로 만들면 다음 코드와 같다.

int sumof(int a, int b) {
	int sum = 0;
	if (a < b) {
		for (int i = a; i <= b; i++) {
			sum += i;
		}
	}
	else {
		for (int i = b; i <= a; i++) {
			sum += i;
		}
	}

	return sum;
}

 

do while문

- 사후 판단 반복문

- while과 차이점: do while은 반드시 한번은 실행된다.

 

형태

do {

    명령문

} while(조건)

 

Q11. 양의 정수를 입력하고, 자릿수 출력하는 프로그램 작성.

int main(void) {
	int n;
	int cnt = 0;

	scanf("%d", &n);

	do {
		n = n / 10;
		cnt++;
	} while (n > 0);

	printf("%d", cnt);
}

 

다중 루프

루프를 중첩시키는 것

 

이중 for 문일 때) 바깥 for문은 행, 안쪽 for문을 열이다. -> 배열에서도 중요하게 사용

 

Q15: 높이, 너비에 맞는 직사각형을 * 기호로 출력하기.

위에서 말했던 것처럼 높이는 행, 너비는 렬으로 따진다면 바깥 for문에 높이, 안쪽 for문에 너비를 넣으면 된다.

int main(void) {
	int h, w;

	scanf("%d", &h);
	scanf("%d", &w);

	for (int i = 0; i < h; i++) {
		for (int j = 0; j < w; j++) {
			printf("*");
		}
		printf("\n");
	}

	return 0;
}

 

Q17: n단 피라미드 함수 만들기.

오랜만이라 조금 어려웠다. 공백인 구간을 설정할 때, 그림을 그려서 활용했다. 다음 행으로 갈 때마다 공백이 하나씩 주는 것을 참고해서 if문을 만들었다.

void spira(int n) {
	// i는 층수
	for (int i = 1; i <= n; i++) {
		// j는 같은 층에서 별 놓을 자리
		// cnt는 별을 놓은 개수, max는 그 층에 최대 놓을 수 있는 별의 개수
		int cnt = 0;
		int max = (i - 1) * 2 + 1;
		for (int j = 0; j < (n - 1)*2 + 1; j++) {
			if (j < (n - i)) {
				printf(" ");
			}
			else {
				if (cnt < max) {
					printf("*");
					cnt++;
				}
				else {
					break;
				}
			}
		}
		printf("\n");
	}
}

Q18: Q17과 비슷하게 풀면 될 것 같다.

'C언어 > Do it! 개념 정리' 카테고리의 다른 글

#2-1. 기본 자료구조 - 배열(소수의 나열)  (0) 2022.02.20
#2-1. 기본 자료구조 - 배열 (1)  (0) 2022.01.08
#1-1. 기본 알고리즘  (0) 2021.12.28
#0. 시작  (0) 2021.12.28