작성일 : 13-09-03 10:53
이문제가 안풀려요..ㅠㅠ 간단하게라도 설명부탁드립니다.
 글쓴이 : 우근영(orange7619)
조회 : 4,038  

30.다음 프로그램의 출력 결과는 무엇인가?

int a[15] = {0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1};

void f(int n) {
    if (n >= 15) return;
    if (a[n] != 1) return;
    a[n] = 2;
    f(n + 1);
}
int main() {
  int i, g;
  g = 0;
  for (i = 0; i < 15; i++) {
      if (a[i] == 1) {
           f(i);
           g = g + 1;
       }
    }
   
printf("%d\n", g);
    return 0;
}

너무 궁금해서잠도 못자겠어요 ㅠㅠ 간략하게라도 설명좀 부탁드립니다.


컴스쿨 13-09-03 15:29
 
#include <stdio.h>

int a[15] = {0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1};

void f(int n) {
    if (n >= 15) return; //범위를 벗어나면 중단
    if (a[n] != 1) return; //해당 위치가 1이 아니면 중단
    a[n] = 2; //1을 2로 바꾸고
    f(n + 1); //다음의 위치 호출
}
int main() {
  int i, g;
  g = 0;
  for (i = 0; i < 15; i++) {
      if (a[i] == 1) {
          f(i);
          g = g + 1;
      }
    }
    printf("%d\n", g);
    return 0;
}

a 배열에서 연속된 1의 묶음이 몇개인지 구하는 프로그램입니다.

i가 1일때 f(1)을 호출하게 되면 a[1]을 2로 바꾸고
다시 f(2)를 호출하여 a[2]를 2로 바꾸고
다시 f(3)을 호출하는데 a[3]은 1이 아니므로 return 하여 중단하게 됩니다.
그리고 g는 1이 증가하여 한 묶음을 표시합니다.

i가 2일때에는 이미 a[2]가 2로 바뀌어 있으므로 함수를 호출하지 않습니다.
그리고 i가 4일때 a[4]는 1이므로 함수를 호출하게 됩니다.

같은 방법으로 i가 7,9,13일때 각각 함수를 호출하여 처리한후 g가 증가하게 됩니다.
따라서 g에는 앞에서 연속되지 않은 1의 개수를 구하게 되는 것이며 위의 경우에는 5가 출력되게 됩니다.
우근영 13-09-03 15:35
 
너무 감사합니다 ㅠㅠ
 
 

Total 644
번호 제   목 글쓴이 날짜 조회
164 초등부 예선 답안지 (1) 이신영 09-15 5457
163 결제오류건 (1) 김효중 09-11 4017
162 자기주도 C언어 책을 구매해 강의를 듣고 싶은데 번호가 누락… (1) 양성철 09-10 4207
161 자기주도 c언어 프로그래밍 2단원 형성평가문제 1번 답이 궁금 (1) 우강민 09-08 9241
160 기출문제 정답지 (1) 이신영 09-08 4616
159 일련번호 누락;; 재질문 (1) 신웅환 09-08 4129
158 이문제가 안풀려요..ㅠㅠ 간단하게라도 설명부탁드립니다. (2) 우근영 09-03 4039
157 일련번호 누락 (1) 신웅환 08-25 4084
156 자기주도 c 언어 결제요 (1) 양찬우 08-08 4356
155 2012년 전국 본선문제 관련 Q. (1) 이윤상 07-23 4401
154 이해가안되서 질문드립니다ㅠㅜ (4) 양창욱 07-15 4566
153 자기주도 c언어 일련번호&내용 관련 문의 입니다. (1) 안상재 07-14 4742
152 질문입니다.~ (1) 신철 07-04 4399
151 이것도 이해가 안됩니다.ㅠ.ㅠ (1) 신철 07-04 4400
150 안녕하세요~올림피아드 문제는 아니구요~ 풀다가 이해가 안되네… (1) 신철 07-04 4635
149 자가진단과 형성평가 소스는 없나요? (1) 박대성 06-25 5431
148 정보올림피아드 지역본선에서요~ (1) 최원미 06-20 4984
147 자기주도 C에서 4강이 안 열려요 (1) 박대성 06-16 4414
146 정보올림피아드 2012년 소스파일은 없나요? (1) 최원미 06-14 5545
145 자기주도 C에서 (1) 황준수 06-06 4352
 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30    

회사소개 | 개인정보처리방침 | 이용약관 | 찾아오시는 길 | 이메일주소 무단수집거부 | 사업자정보확인
경기도 안양시 동안구 호계동 1065-10 협성골드프라자 601호 한컴에듀케이션(주) TEL : 031-388-8840 FAX : 031-388-0996
대표자 : 김동규 사업자번호 : 130-86-02870 통신판매업신고번호 : 제 2010-경기안양-888호
COPYTIGHT(C) 한컴에듀케이션(주), ALL RIGHT RESERVED.
담은강좌 : 0