반응형
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가 나오는 경우가 없기때문에 연산을 줄일려고 하는건가?
반응형
'언어공부 > C언어' 카테고리의 다른 글
(열혈 C프로그래밍) 도전 ! 프로그래밍 1 (0) | 2021.01.05 |
---|---|
다양한 함수 정의하기 (0) | 2020.12.28 |
( 열혈 C 프로그래밍) 조건문 예제 (0) | 2020.12.25 |
(열혈 C프로그래밍)for문의 활용 문제 (0) | 2020.12.25 |
(열혈 C프로그래밍) while문과 do~while문 예제 (0) | 2020.12.25 |