반응형

break

break문이 감싸고 있는 가장 가까운 반복문에서 빠져나온다.

 

continue

for(int i=1; i <=20; i++)
{
	if(i==3|| i==5) 
    	continue;  //i가 3이나 5일때는 실행하지 않고 바로 i값을 증가시킨다
        
   	printf("%d ", i);
}

위 프로그램처럼 continue문은 조건이 일치하면 continue의 밑부분을 실해하지 않고 바로 반복문의 처음 부분으로 돌아간다.

 

 

문제 1

구구단을 출력하되 짝수 단만 출력하는 프로그램 2단은 2x2까지 ~ 8단은 8x8까지 출력 

 

내가 푼 정답

#include <stdio.h>

int main()
{
	for (int i = 1; i <= 9; i++)
	{
		for (int j = 1; j <= 9; j++)
		{
			if (i % 2 == 0 )
			{
				printf("%d * %d = %d ", i, j, i * j);
				
				if (i == 2 && j == 2) {
					printf("\n");break;
				}
				
				if (i == 4 && j == 4){
					printf("\n");break;
				}
				if (i == 6 && j == 6) {
					printf("\n");break;
				}
				if (i == 8 && j == 8) {
					printf("\n");break;
				}
			}
			
		}
	}

	return 0;

}

 

 

답안지의 답

#include <stdio.h>

int main()
{
	for (int i = 1; i <= 9; i++)
	{
		if (i % 2 != 0)
			continue;
		for (int j = 1; j <= 9; j++)
		{
			if (i < j)
				break;
			printf("%d X %d = %d ", i, j, i * j);
		}
		printf("\n");
	}

	return 0;

}

i가 짝수가 아닐때 밑에 연산을 무시하도록 continue를 사용해서 효율적으로 짰다. 조건문과 break를 사용해서 간단하게 짬


문제2

다음 식을 만족하는 모든 A와 Z를 구하는 프로그램을 작성해보자

AZ+ZA=99

#include <stdio.h>

int main()
{
	int result, cnt=0;
	for (int A = 0; A <= 9; A++)
	{
		for (int Z = 0; Z <= 9; Z++)
		{
			if (A == Z)
				continue;
			result = (A * 10 + Z) + (Z * 10 + A);
			if (result == 99)
			{
				cnt++;
				printf("%d%d + %d%d = %d  %d\n", A, Z, Z, A, result,cnt);
				
			}
		}
	}

	return 0;

}

if(A == Z) 후에 continue를 하는 이유를 모르겠다. 저 부분을 빼고 실행해도 결과는 같다.

A와 Z가 같을때 99가 나오는 경우가 없기때문에 연산을 줄일려고 하는건가?

반응형

+ Recent posts