2020 정보처리기사 실기 4회 5번
문제
5. 다음은 n이 10일 때, 10을 2진수로 변환하는 자바 소스 코드이다. 1,2에 알맞는 값을 적으시오.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class good {
public static void main (String[] args) {
int[]a = new int[8];
int i=0; int n=10;
while ( 1번 ) {
a[i++] = ( 2번 );
n /= 2;
}
for(i=7; i>=0; i--){
System.out.print(a[i]);
}
}
}
|
cs |
출력값 : 00001010
정답
1. n > 0 or n >=1
2. n%2
해설
1번에 들어가야 할 값은 while문이 돌아가게 할 수 있는 참인 값이 들어가야 합니다. 따라서 n값이 0보다 클 경우에 계속해서 실행이 되어야 함으로 n > 0 또는 n >= 1 이 들어 갈 수 있습니다.
2번에 들어갈 값은 배열 a에 저장되는 값이 n을 2로 나눈 나머지값이여야 하기 때문에 n % 2 가 들어가게 됩니다.
2020 정보처리기사 실기 4회 6번
문제
6. 다음은 자바 소스 코드이다. 출력 결과를 보고 , 1,2에 알맞는 값을 적으시오.
1
2
3
4
5
6
7
8
9
10
11
12
|
public class good {
public static void main(String[] args) {
int[][]a = new int[(1.)][(2.)];
for(int i = 0; i <3; i++){
for(int j=0; j < 5; j++){
a[i][j] = j*3+(i+1);
System.out.print(a[i][j]+"");
}
System.out.println();
}
}
}
|
cs |
정답
출력값
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
해설
2020 정보처리기사 실기 4회 9번
문제
9. 다음은 파이썬 소스 코드이다. 출력 결과를 쓰시오.
1
2
3
4
5
6
7
|
lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0])
print(lol[2][1])
for sub in lol:
for item in sub:
print(item, end = '')
print()
|
cs |
정답
[1,2,3]
7
123
45
6789
해설
이 파이썬 코드는 다차원 리스트 lol을 다루고 있습니다. 코드의 출력을 단계별로 살펴보겠습니다:
- print(lol[0])은 리스트 lol의 첫 번째 요소를 출력합니다. 첫 번째 요소는 [1, 2, 3]이므로 출력은 [1, 2, 3]입니다.
- print(lol[2][1])은 리스트 lol의 세 번째 요소(즉, [6, 7, 8, 9])의 두 번째 요소를 출력합니다. 따라서 출력은 7입니다.
- 이중 for 루프는 리스트 lol의 모든 하위 리스트를 순회하며, 각 하위 리스트의 요소를 같은 줄에 연속해서 출력합니다. 각 하위 리스트의 출력이 끝날 때마다 새 줄로 넘어갑니다.
이에 따른 출력값은
123
45
6789
입니다.
위의 값과 합치면
[1,2,3]
7
123
45
6789
이러한 값이 출력됩니다.
2020 정보처리기사 실기 4회 18번
문제
18. 다음은 C언어 소스 코드이다. 출력값을 쓰시오.
1
2
3
4
5
6
7
8
9
|
#include <stdio.h>
void main(){
char *p = "KOREA";
printf("%s\n" , p);
printf("%s\n" , p+3);
printf("%c\n" , *p);
printf("%c\n" , *(p+3));
printf("%c\n" , *p+2);
|
cs |
정답
KOREA
EA
K
E
M
해설
- printf("%s\n" , p);는 문자열 "KOREA" 전체를 출력합니다.
- printf("%s\n" , p+3);는 포인터 p가 가리키는 문자열의 네 번째 문자('E')로부터 시작하는 문자열을 출력합니다. 따라서 "EA"가 출력됩니다.
- printf("%c\n" , *p);는 포인터 p가 가리키는 첫 번째 문자, 즉 'K'를 출력합니다.
- printf("%c\n" , *(p+3));는 포인터 p가 가리키는 문자열의 네 번째 문자, 즉 'E'를 출력합니다.
- printf("%c\n" , *p+2);는 포인터 p가 가리키는 첫 번째 문자 'K'의 ASCII 값에 2를 더한 결과입니다. 'K'의 ASCII 값은 75이므로, 75 + 2 = 77이 되고, 이는 ASCII 테이블에서 'M'에 해당합니다.
2020 정보처리기사 실기 4회 19번
문제
19. 다음은 자바 소스 코드이다. 출력 결과를 쓰시오.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
class parent{
public int compute(int num){
if(num <=1) return num;
return compute(num-1) + compute(num-2);
}
}
class Child extends parent {
public int compute(int num){
if(num<=1) return num;
return compute(num-1) + compute(num-3);
}
}
class good{
public static void main (String[] args){
parent obj = new Child();
System.out.print(obj.compute(4));
}
}
|
cs |
정답
1
해설
이 코드는 자바에서 메서드 오버라이딩의 전형적인 예를 보여줍니다. 여기서 자식 클래스가 부모 클래스의 메서드를 오버라이드합니다. 또한 이 예시는 부모 클래스 참조로 자식 클래스 인스턴스를 참조하는 다형성의 경우도 보여줍니다. 예제에서 Child 클래스의 compute 메서드가 Parent 클래스의 compute 메서드를 오버라이드합니다.
parent obj = new Child();를 통해 Child 클래스의 인스턴스가 생성되고 obj 참조 변수를 통해 관리됩니다. obj.compute(4)가 호출될 때, Child 클래스에 오버라이드된 compute 메서드가 실행됩니다.
자식 클래스의 compute 메서드 로직에 따라 계산 과정은 다음과 같습니다:
- compute(4)는 compute(3) + compute(1)을 호출합니다.
- compute(3)은 다시 compute(2) + compute(0)을 호출합니다.
- compute(2)는 compute(1) + compute(-1)을 호출합니다.
- compute(1)은 1을 반환합니다.
- compute(-1)은 조건 num <= 1에 의해 -1을 반환합니다.
- 따라서, compute(2)는 1 + (-1) = 0을 반환합니다.
- compute(0)은 조건 num <= 1에 의해 0을 반환합니다.
- 따라서, compute(3)은 0 + 0 = 0을 반환합니다.
- 마지막으로, compute(1)은 1을 반환합니다.
결과적으로, compute(4)는 0 + 1 = 1을 최종 결과로 반환합니다.
따라서 출력 결과는 1입니다.