모두CBT

25-1화이트박스 테스트를 위해 아래 C 함수의 제어 흐름을 순서도로 … | 2025년 정보처리기사실기 1회차 기출문제 상세 페이지

4

25-1

화이트박스 테스트를 위해 아래 C 함수의 제어 흐름을 순서도로 옮겼다. 순서도의 노드와 연결 관계는 표와 같다.

int scan(int v[], int n, int lim) {
    int k = 0;
    while (k < n && v[k] != lim) {
        if (v[k] > lim)
            v[k] = lim;
        k++;
    }
    return k;
}
노드형태다음 노드
①처리②
②판단참 → ③, 거짓 → ⑥
③판단참 → ④, 거짓 → ⑤
④처리⑤
⑤처리② (반복)
⑥종료—

(1) 노드 ①~⑥에 들어갈 코드(문장 또는 조건식)를 각각 적으시오.

(2) 모든 문장을 한 번 이상 실행하는 문장(구문) 커버리지 100% 경로를 완성하시오.
① → ② → ( ) → ( ) → ( ) → ( ) → ( )

해설

(1) ① int k = 0

② k < n && v[k] != lim

③ v[k] > lim

④ v[k] = lim

⑤ k++

⑥ return k

(2) ③ → ④ → ⑤ → ② → ⑥


[해설]

초기화가 처리 노드 ①, while 조건이 첫 판단 노드 ②, if 조건이 둘째 판단 노드 ③이다. ③이 참일 때만 ④를 거치고, 참·거짓 모두 ⑤(k++)로 모여 ②로 되돌아간다.

문장 커버리지는 모든 문장을 최소 한 번 실행하면 되므로, if가 참인 반복을 한 번 거친 뒤 루프를 빠져나오면 된다.

  • ① → ② 참 → ③ 참 → ④ → ⑤ → ② 거짓 → ⑥
  • 예: v = {9}, n = 1, lim = 5이면 9 > 5라 ④가 실행되고, k=1이 되어 루프를 끝낸다.

정답 경로는 ①→②→③→④→⑤→②→⑥이다. ③의 거짓 분기까지 요구하는 것은 문장이 아니라 분기(결정) 커버리지다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.