본문 바로가기
Study (etc)/C

[반복문]continue, break의 활용

by Haren 2019. 1. 7.

C언어 성취도 기록을 위한 두 번째 포스팅이다.

윤성우 저 '열혈 C 프로그래밍' 교재에서 Chapter 08 조건에 따른 흐름의 분기의 if, if~else 그리고 continue와 break를 공부하고 있었고,

교재에서 제시된 문제 하나를 자력으로 풀게 되어서 아직 모범 정답을 확인하지 않은 채로 블로그에 글을 작성해본다.


▶ 문제 

구구단을 출력하되 짝수 단(2단, 4단, 6단, 8단)만 출력되도록 하자. 또한 2단은 2×2까지, 4단은 4×4까지, 6단은 6×6까지, 8단은 8×8까지만 출력되도록 프로그램을 구현해 보자.


이러한 문제이다. continue문과 break문을 사용해야 하며, 조건이 매우 복잡하여 고민을 하는데 많은 시간이 소요되었다.

구구단을 출력하는 것까지는 반복문을 이용해 해낼 수 있었지만 조건이 붙어있다.


먼저, 직접 작성한 소스 코드이다. 


소스코드

#include <stdio.h>

int main()
{
	int cur, is;

	for (cur=2; cur < 10; cur++)
	{
		if (cur % 2 != 0)
			continue;

		for (is=1; is < 10; is++)
		{
			if (cur < is)
				break;

			printf("%d x %d = %d \n", cur, is, cur*is);
		}
		printf("\n");
	}
	return 0;
}

반복문으로 사용한 for문의 형태는 일반적으로 구구단을 출력할 때와 동일한 초기식, 조건식, 증감식이다.


단 수를 결정하는 cur 반복문을 보자. 

if문을 이용해서 단수가 2로 나눴을 때 0이 아니면 if문의 조건을 다시 확인하도록 하였다. 즉, 3, 6, 9처럼 2로 나눈 나머지가 0이 아닌 홀수 단이 나오면, for문에서 cur를 다시 1 증가시킨 뒤 if문의 조건을 다시 검사하게 된다.

곱하는 수를 결정하는 is 반복문에서는 단 수 cur와 곱하는 수 is를 비교한다.

곱하는 수 is가 단 수 cur보다 커질 경우. 그러니까 예를 들면 2(cur) × 3(is)이 되는 경우 break 이하의 코드를 실행하지 않고 반복을 중단시킨다.

그렇게 하여 2×2, 4×4 로 구구단을 끝낼 수 있게 되는 것이다.


그 외에는 평범하게 반복문을 이용하여 구구단을 출력하는 과정과 동일하다.


실행결과