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 로 구구단을 끝낼 수 있게 되는 것이다.
그 외에는 평범하게 반복문을 이용하여 구구단을 출력하는 과정과 동일하다.
실행결과
'Study (etc) > C' 카테고리의 다른 글
[정렬]버블 정렬 (0) | 2019.02.03 |
---|---|
[포인터]함수의 인자로 배열 전달하기 (1) (0) | 2019.02.03 |
[함수]세 변수에 저장된 값 바꾸기 (0) | 2019.02.03 |
[배열]배열의 최솟값, 최댓값, 합 (0) | 2019.01.28 |
[반복문] 팩토리얼 (계승) 구하기 (0) | 2019.01.07 |