자격증/정보처리기사

정보처리기사 개정후 코드해석 문제들 해설집 별도모음: 21년3회~ (합격해서 작업 중단.)

공시탈출넘버원 2022. 4. 18. 01:45

코드 해석이 이해가 안가면, online '컴퓨터언어' compiler 로 구글검색하여, 나오는 온라인 코드입력기에 넣고 돌려보면 그나마 이해가 빠르다. 코드 넣을 줄 모르면 정처기 붙기 힘들테니 그정도는 하겠지

온라인 컴파일러 사이트 한곳씩 연결해놨다.

 

(chatGPT 사용해서 도움을 받는게 좋다. 나도 23년에 프로그래밍하면서 함수 분석해달라고 요청하거든)

 

2021년 3회: 63, 64, 66, 71, 73. 총5문제

63번

더보기

63. 다음 파이썬(Python) 프로그램이 실행되었을 때의 결과는?

① 45 ② 55
● 66 ④ 78


<문제 해설>
range(시작, 끝, 간격) 이다. '시작'과 '간격'은 생략 가능하나 시작만 생략할 수는 없다.

 

준식은

s = 0

for i in range(12):

    s += i

return s

로 해석된다. (num 이 원문에서 사용한 변수인데 그냥 보기 좋으라고 i로 바꿔놨다.)

 

range의 끝값인 12는 포함하지 않으므로, 0~11까지의 숫자의 합 0+1+2+3+4+5+6+7+8+9+10+11 = 66

64번

더보기

64. 다음 C언어 프로그램이 실행되었을 때의 결과는?

① nation ● nationalter
③ alter ④ alternation


<문제 해설>
string.h 라이브러리에 있는 strcat 함수는, 문자열을 이어 붙여준다.

p2 가 문자열 포인터 변수로 저장되는데, 이건 큰 상관없는듯.

strcat(str, p2)는 str안에 든 문자열과 p2 안에 든 문자열을 이어 붙여 str에 저장한다.

따라서 str 값은 nation 에서 nationalter로 바뀌어 저장된다.

이후에 이 값을 출력하므로 nationalter가 정답이다.

66번

더보기

66. 다음 C언어 프로그램이 실행되었을 때의 결과는?

① 0 ② 1
● 2 ④ 3


<문제 해설>
논리 연산자(or || 랑 and && 랑)는 결과가 거짓/0이면 0을, 참/자연수(?) 이면 1의 결과값을 반환.

연산 결과는 아래와 같다.

r1

= 4 <= 4 || 2 == 2

= 1 or 1

= 1
r2

= (3 >0) && (4 <5)

= 1 and 1

= 1
r3

= not 2

=0

r1 + r2 + r3 = 1+1+0 = 2

71번. 아직.

더보기

71. 다음 C언어 프로그램이 실행되었을 때의 결과는?

① 0 ② 4
● 8 ④ 12


<문제 해설>

1) &n

== 변수 n의 주소값.

예를들면 이번 문제에서는 0987654 라고 가정한다.

2)

*pt

== 포인터 변수 pt가 가리키고 있는 주소에 저장된 값

== 변수 n의 값.

지문에 나온대로면 n = 4이다.
3) *&pt

== *(&pt)

== (포인터 pt의 주소값)이 가리키고 있는 주소에 저장된 값

== 변수 n의 주소값

1)에서 지정한 예문을 가져오면, 이 주소값은 0987654 이다.

 

따라서 준식:

&n + *pt - *&pt + n
= *pt + n
= 4 + 4
= 8

73번

더보기

73. 다음 JAVA 프로그램이 실행되었을 때의 결과를 쓰시오.

① 13 ② 21
● 34 ④ 55

<문제 해설>
while문에서 i는 0부터 시작. i가 8일 때 조건 불만족으로 종료.

조건을 만족하면 피보나치 수열값을 입력한다.

앞과 앞앞값을 더해서 그다음에 더하고, i를 1 증가시킨다.

arr[0] = 0; arr[1] = 1; i =0
arr[2] = arr[1] + arr[0] = 1 + 0 = 1;  i =1
arr[3] = arr[2] + arr[1] = 1 + 1 = 2;  i =2
arr[4] = arr[3] + arr[2] = 2 + 1 = 3;  i =3
arr[5] = arr[4] + arr[3] = 3 + 2 = 5;  i =4
arr[6] = arr[5] + arr[4] = 5 + 3 = 8;  i =5
arr[7] = arr[6] + arr[5] = 8 + 5 = 13;  i =6
arr[8] = arr[7] + arr[6] = 13 + 8 = 21;  i =7
arr[9] = arr[8] + arr[7] = 21 + 13 = 34;  i =8

i = 8 이므로 while (8<8) 은 while (F) 이므로 종료한다.

 

그다음줄에서는 arr[9]의 값을 물어봤으니 34


2021년 2회: 63, 64, 

63번

더보기

63. 다음 C언어 프로그램이 실행되었을 때의 결과는?

① 3 ② 4
❸ 7 ④ 10

 

<문제 해설>
a = 4 = 00000100 (bin)
b = 7 = 00000111 (bin)
int c = a OR b (비트 OR 연산 실행)

= 00000100 OR 00000111 = 00000111 = 7

 

참고

int c = a & b 로, AND 연산자가 들어가면, 00000100 = 4

64번

더보기

64. 다음 파이썬(Python) 프로그램이 실행되었을 때의 결과는?


① 0 ② 2
③ 4 ❹ 6


<문제 해설>
첫번째, FourCal 이라는 클래스를 만들었다.

두번째, FourCal 클래스는 두가지 기능이 들어간다. setdata 와 add 이다.

세번째, setdata 기능은 self, first, second 라는 인자를 받아서 sel.fir에 first 값 대입하고, sel.sec에 sec 값을 대입한다.
네번째, add 기능은 self 를 가져와서, result에 sel.fir + sec.sec 를 넣고 result를 반환한다.

덧셈 기능을 구현했다.

 

코드 실행

a는 FourCal 클래스로 정의되었다.

a.setdata(4,2) 에서 (a, 4, 2) 가 대입된다.

a.add()에서 4+2 = 6 이 반환된다.