구구단을 출력하되 짝수 단(2단, 4단, 6단, 8단)만 출력되도록 하자. 또한 2단은 2 x 2까지, 4단은 4 x 4까지, 6단은 6 x 6까지, 8단은 8 x 8까지만 출력되도록 프로그램을 구현해 보자. 이렇게 어수선한 문제를 제시하는 이유는 continue
와 break
문의 사용법을 익히기 위해서다. 그러니 가급적이면 continue
와 break
문을 사용해서 이 문제를 해결하기 바란다.
도대체 어떻게 break
를 중간에 껴서 활용하는지 모르겠다. 내 상상력의 한계...
break
문 활용은 그냥 답안 코드를 보고 익히는 걸로 하고 일단 다른 걸 활용해서 문제를 풀어보기로 결심했다.
2단, 4단 등의 단을 변수 dan
으로 정하고 뒤에 곱해지는 숫자는 변수 i
로 지정한 다음 i
가 dan
보다 작게 설정하면 되는 거 아니겠는가.
그래서 나온 코드는 다음과 같다.
#include <stdio.h>
int main(void)
{
int i;
int dan = 2; // 2단부터 시작.
printf("짝수단 구구단을 출력합니다.\n");
while (dan <= 8) // 8단까지 시행
{
if (dan % 2 != 0) // 홀수면 i++ 을 통해 짝수가 되게 함.
continue;
for (i = 1; i <= dan; i++) // i는 dan보다 크면 안됨.
printf("%d x %d = %d\n", dan, i, dan * i);
dan++;
}
return 0;
}
위 코드에서 while
문 대신에 for
문을 써서
for (; dan <= 8; dan++)
{
if (dan % 2 != 0)
continue;
for (i = 1; i <= dan; i++)
printf("%d x %d = %d\n", dan, i, dan * i);
}
이렇게 사용해도 같은 결과값이 출력된다.
#include <stdio.h>
int main(void)
{
int i;
int dan;
printf("짝수단 구구단을 출력합니다.\n");
for (dan = 1; dan < 10; dan++) // 구구단 진행
{
if (dan % 2 != 0) // 홀수면 for문으로 돌아가서 dan++시행해서 짝수로 만듦.
continue;
for (i = 1; i < 10; i++)
{
if (dan < i) // dan이 i보다 작다면 for문 종료.
break;
printf("%d x %d = %d\n", dan, i, dan * i);
}
}
return 0;
}
코드를 잘 살펴보면 i
를 이용한 for
문에서 조건문인 if
문을 사용해 dan
이 i
보다 작으면 for
문의 조건을 멈출 거(break
사용)라고 설정하고 있다. 체크!
break
사용
: 반복문( while
, for
)을 중단할 때 사용!
for
문 안에서 사용하되 break
문 사용시 if
의 조건을 둬서 ~~이러한 조건일 때 빠져나오도록 사용하기.
다음 식을 만족하는 모든 A와 Z를 구하는 프로그램을 작성해보자.
AZ
+ZA
ㅡㅡㅡ
99
참고로, 가능한 모든 수의 조합을 시도하기 위해서는 반복문을 중첩시켜야 한다.
#include <stdio.h>
int main(void)
{
int A, Z;
printf("AZ+ZA = 99를 충족하는 값은\n");
for (A = 0; A < 10; A++)
{
for (Z = 0; Z < 10; Z++)
{
if ((A * 10 + Z) + (Z * 10 + A) != 99) // AZ+ZA = 99가 아닌 경우,
continue; // for 반복.
else // AZ+ZA = 99인 경우,
printf("A는 %d, Z는 %d.\n", A, Z); // 해당되는 A값과 Z값을 출력.
}
}
return 0;
}
답안 코드는 전역변수에 int result;
를 추가하고 for (Z = 0; Z < 10; Z++)
문의 내용의 내용이 다음과 같이 작성되어 있다.
for (Z = 0; Z < 10; Z++)
{
if(A==Z) // A값과 Z값이 같은 경우 반복문으로 다시 돌아감.
continue;
result = (A*10+Z)+(Z*10+A);
if(result==99) // reult가 99인 경우,
printf("%d%d+%d%d=%d \n", A, Z, Z, A, result); // 해당 값을 출력.
}