[C언어 코드업 문제풀이] CodeUp 1071 : [기초-반복실행구조] 0 입력될 때까지 무한 출력하기1(설명)

코드업 1071번 [기초-반복실행구조] 0 입력될 때까지 무한 출력하기1 문제 풀이 해답입니다.

 

1. 문제 설명

 

정수가 순서대로 입력된다.
-2147483648 ~ +2147483647, 단 개수는 알 수 없다.

0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자.
while( ), for( ), do~while( ) 등의 반복문을 사용할 수 없다.


참고
goto 명령문을 사용하면 간단한 반복 실행을 만들 수 있다.
반복 실행 부분을 빠져나오기 위해(즉 무한 반복을 방지하기 위해)
반복 실행 되는 도중에 조건을 검사해야 한다.

goto 이름:
이 명령은 이름: 이 작성된 곳으로 프로그램의 실행 흐름을 바꾸어 준다.

"이름:" 과 같이 콜론(:)이 붙어있는 부분을 이름표(label, 레이블)라고 한다.
레이블은 특별한 선언 없이 사용할 수 있으며 언더바(_)나 영문자로 시작하면 된다.
레이블은 한 단어처럼 공백없이 모두 붙여 써야 한다.

switch( ) ... case ... : ... break; 에서
case ... : 도 일종의 레이블이라고 생각할 수 있다.

goto 레이블:
명령을 사용하면 반복되는 부분을 여러 개 자유롭게 만들 수 있다.

goto 명령은 반복 실행을 만들어낼 수 있는 가장 간단한 명령이지만,
복잡하게(스파게티 코드) 사용하는 경우, 이해가 어렵고 오류가 생기기 쉽다.


예시
  int n;
reload: //레이블은 콜론(:)으로 끝내고, 일반적으로 들여쓰기를 하지 않는다.
  scanf("%d", &n);
  printf("%d", n);
  if(n!=0) goto reload; //reload라고 적혀있는 레이블로 실행 이동 

 

2. 입력

 

정수가 순서대로 입력된다.
-2147483648 ~ +2147483647, 단 개수는 알 수 없다. 

 

3. 출력

 

입력된 정수를 줄을 바꿔 하나씩 출력하는데, 0이 입력되면 종료한다.
(0은 출력하지 않는다.) 

 

4. 입력 예시

 

7 4 2 3 0 1 5 6 9 10 8

 

5. 출력 예시

 

7

4

2

3

 

 

6. 문제 풀이

 

#include <stdio.h>
 
 
int main (void)
{
    
    int num1;
replay:
    scanf("%d",&num1);
    
    if(num1 != 0){
        printf("%d\n",num1);
        goto replay;
        
    }
    
    return 0;
}

 

goto문을 사용하여 풀어야[풀라고] 하는 문제입니다.

 

goto문은 goto 명령이 가르키는 위치의 실행문으로 돌아가 실행을 합니다.

위 코드를 보면 goto replay면 replay쪽으로 가서 실행이 됩니다.

댓글()