2022 정보처리기사 필기 1회 62번
문제
62. 다음 C언어 프로그램이 실행되었을 때, 실행 결과는?
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int arr[2][3] = {1, 2, 3, 4, 5, 6};
int (*p)[3] = NULL;
p = arr;
printf("%d ", *(*(p+0) + 1) + *(*(p+1) + 2));
printf("%d", *(*(p+1)+0) + *(*(p+1)+1));
return 0;
}
|
cs |
- 7, 5
- 8, 5
- 8, 9
- 7, 9
정답
2번
해설
2022 정보처리기사 필기 1회 64번
문제
- ||
- &&
- **
- !=
정답
1번
해설
C언어에서 두 개의 논리 값 중 하나라도 참이면 참(1)을 반환하고 모두 거짓이면 거짓(0)을 반환하는 연산자는 '논리합(OR)' 연산자입니다. 이 연산자는 두 피연산자 중 하나라도 참이면 참을 결과로 내봅니다. C언어에서는 이를 위해 || 연산자를 사용합니다.
2022 정보처리기사 필기 1회 66번
문제
66. JAVA의 예외(exception)와 관련한 설명으로 틀린 것은?
- 문법 오류로 인해 발생한 것
- 오동작이나 결과에 악영향을 미칠 수 있는 실행 시간 동 안에 발생한 오류
- 배열의 인덱스가 그 범위를 넘어서는 경우 발생하는 오 류
- 존재하지 않는 파일을 읽으려고 하는 경우에 발생하는 오류
정답
1번
해설
JAVA의 예외(exception)에 대해 설명하자면, 예외는 프로그램 실행 중에 발생하는 오류로, 이는 주로 실행 시(runtime) 발생하는 예상치 못한 상황을 의미합니다. 이러한 예외는 정상적인 프로그램의 흐름을 방해하고, 적절히 처리되지 않으면 프로그램이 강제 종료될 수 있습니다.
- ① 문법 오류로 인해 발생한 것: 문법 오류는 컴파일 시간에 발견되는 오류로, 예외와는 다릅니다. 문법 오류는 컴파일러가 코드를 실행 가능한 형식으로 변환하지 못하게 하는 오류로, 예외는 프로그램이 실행되는 도중에 발생합니다.
- ② 오동작이나 결과에 악영향을 미칠 수 있는 실행 시간 동안에 발생한 오류: 이 설명은 예외의 정의에 부합합니다. 실행 시간 동안 발생하며, 프로그램의 결과에 악영향을 줄 수 있습니다.
- ③ 배열의 인덱스가 그 범위를 넘어서는 경우 발생하는 오류: 이는 배열 인덱스 오류로, JAVA에서 ArrayIndexOutOfBoundsException이라는 예외를 발생시킵니다.
- ④ 존재하지 않는 파일을 읽으려고 하는 경우에 발생하는 오류: 이는 파일을 읽기 위해 시도할 때 해당 파일이 없는 경우 발생하며, JAVA에서는 FileNotFoundException 등의 예외로 처리됩니다.
따라서 정답은 1번 입니다.
2022 정보처리기사 필기 1회 72번
문제
72. 다음 C언어프로그램이 실행되었을 때, 실행 결과는?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int i = 0;
while(1){
if(i==4){
break;
}
++i;
}
printf("i = %d", i);
return 0;
}
|
cs |
- i = 0
- i = 1
- i = 3
- i = 4
정답
4번
해설
- 변수 초기화: int i = 0;는 정수형 변수 i를 0으로 초기화합니다.
- 무한 루프: while(1)은 무한 루프를 생성합니다. 이 루프는 break 명령어가 실행될 때까지 계속 실행됩니다.
- 조건문과 브레이크: if(i==4) 구문은 i가 4와 같을 때 break를 실행합니다. break는 루프를 중지시키는 역할을 합니다.
- 증가 연산: ++i;는 i를 1씩 증가시킵니다.
- 루프 실행: 루프는 i가 4가 될 때까지 계속 증가합니다. i는 0에서 시작하여 1, 2, 3, 그리고 마지막으로 4가 됩니다. i가 4가 되면, if 조건이 충족되어 break가 실행됩니다. 그러면 루프가 종료됩니다.
- 출력: 루프가 종료된 후, printf("i = %d", i);는 i의 값을 출력합니다. 이 경우 i는 4이므로 출력 결과는 i = 4입니다.
따라서 정답은 4번 입니다.
2022 정보처리기사 필기 1회 73번
문제
73. 다음 JAVA 프로그램이 실행되었을 때, 실행 결과는?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public class Ape{
static void rs(char a[]) {
for(int i = 0; i < a.length; i++)
if(a[i] == 'B')
a[i] = 'C';
else if(i == a.length - 1)
a[i] = a[i-1];
else
a[i] = a[i+1];
}
static void pca(char a[]) {
for(int i = 0; i < a.length; i++)
System.out.print(a[i]);
System.out.print("\n");
}
public static void main(String[] args) {
char c[] = {'A', 'B', 'D', 'D', 'A', 'B', 'C'};
rs(c);
pca(c);
}
}
|
cs |
- BCDABCA
- BCDABCC
- CDDACCC
- CDDACCA
정답
2번
해설
로직을 순서대로 나열하면
- 첫 번째 'A' → 'B' (다음 요소인 'B'로 바뀜)
- 'B' → 'C'
- 'D' → 'D' (변경 없음)
- 'D' → 'A' (다음 요소인 'A'로 바뀜)
- 'A' → 'B' (다음 요소인 'B'로 바뀜)
- 'B' → 'C'
- 마지막 'C' → 'B' (이전 요소인 'B'로 바뀜)
이렇게 됩니다.
따라서 BCDABCC 를 출력하게됩니다. 정답은 2번 입니다.
2022 정보처리기사 필기 1회 76번
문제
76. 다음 C언어 프로그램이 실행되었을 때, 실행 결과는?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
char str1[20] = "KOREA";
char str2[20] = "LOVE";
char *p1 = NULL;
char *p2 = NULL;
p1 = str1;
p2 = str2;
str1[1] = p2[2]; // 'V'
str2[3] = p1[4]; // 'A'
strcat(str1, str2);
printf("%c", *(p1 + 2));
return 0;
}
|
cs |
- E
- V
- R
- O
정답
2번
해설
- 두 개의 문자 배열 str1과 str2가 각각 "KOREA"와 "LOVE"로 초기화됩니다.
- 두 개의 문자 포인터 p1과 p2가 선언되고 NULL로 초기화됩니다.
- p1은 str1의 첫 번째 원소의 주소로 설정됩니다.
- p2는 str2의 첫 번째 원소의 주소로 설정됩니다.
- 표현식 str1[1] = p2[2]를 통해 str1의 두 번째 원소가 str2의 세 번째 원소인 'V'로 설정됩니다.
- 표현식 str2[3] = p1[4]를 통해 str2의 네 번째 원소가 str1의 다섯 번째 원소인 'A'로 설정됩니다.
- strcat 함수를 사용하여 str2를 str1의 끝에 붙입니다.
- printf 함수는 p1이 가리키는 주소에서 2만큼 떨어진 str1의 문자를 출력하려고 합니다.
str1의 p1이 가리키는 주소에서 2만큼 떨어진 문자를 출력하게 됩니다. str1은 'V'를 str1[1]에 대입한 후 "KOVEA"가 되고, 'A'를 str2[3]에 대입한 후 "LOVA"가 됩니다. 그리고 str1 뒤에 str2를 붙이면 "KOVEALOVA"가 됩니다. printf 명령문은 str1[2]에 있는 문자, 즉 'V'를 출력합니다.
따라서 정답은 2번 입니다.
2022 정보처리기사 필기 1회 77번
문제
77. 다음 Python 프로그램이 실행되었을 때, 실행 결과는?
1
2
3
4
5
|
a=100
list_data = ['a', 'b', 'c']
dict_data = {'a':90, 'b':95}
print(list_data[0])
print(dict_data['a'])
|
cs |
- a 90
- 100 90
- 100 100
- a a
정답
1번
해설
변수 a에 100을 할당하고, 리스트 list_data에는 ['a', 'b', 'c']를, 딕셔너리 dict_data에는 {'a':90, 'b':95}를 할당합니다. 그리고 list_data의 첫 번째 요소('a')와 dict_data에서 'a' 키에 해당하는 값(90)을 출력합니다.
따라서 정답은 1번 입니다
2022 정보처리기사 필기 1회 78번
문제
78. C언어에서 정수 변수 a, b에 각각 1, 2가 저장되어 있을 때 다음 식의 연산 결과로 옳은 것은?
A < B + 2 && A << 1 <= B |
- 0
- 1
- 3
- 5
정답
2번
해설
- a < b: a가 b보다 작은지를 확인합니다.
- +2: 이 표현식에서 +는 단순한 덧셈 연산자입니다. 이 경우는 연산자 우선 순위에 따라 a < b의 결과에 2를 더하는 것이 아니라, b에 2를 더한 다음에 그 결과를 a와 비교합니다.
- &&: 논리적 AND 연산자로, 왼쪽과 오른쪽의 표현식이 모두 참일 때만 참을 반환합니다.
- a << 1: a의 비트를 왼쪽으로 1만큼 이동시키는 비트 시프트 연산입니다. 예를 들어, a가 3일 경우, 비트 시프트 연산 후에 a는 6이 됩니다.
- <= b: 이는 a << 1의 결과가 b보다 작거나 같은지를 확인합니다.
A에는 1이 들어가고, B에는 2가 들어간다면 1을 출력하게 됩니다.
따라서 정답은 2번 입니다.
2022 정보처리기사 필기 1회 79번
문제
79. 다음 Python 프로그램이 실행되었을 때, 실행 결과는?
정답
1번
해설
a에는 4개의 단어가 저장되어있고, for문을 통해 a안에 있는 단어를 차례대로 전부 출력하는 코드입니다. 따라서 대한민국 을 출력하게됩니다. 그러므로 정답은 1번 입니다.