2021 정보처리기사 필기 2회 63번
문제
63. 다음 C언어 프로그램이 실행되었을 때의 결과는?
1
2
3
4
5
6
7
8
9
10
|
#include <stdio.h>
int main(int argc, char *argv[]) {
int a = 4;
int b = 7;
int c = a | b;
printf("%d", c);
return 0;
}
|
cs |
① 3
② 4
③ 7
④ 10
정답
3번
해설
이 C 언어 프로그램의 주요 부분은 두 정수 변수 a와 b를 비트 OR 연산하는 것입니다. 비트 OR 연산은 각 비트 위치에 대해 두 연산자 중 하나라도 1이면 결과의 해당 비트를 1로 설정합니다.
변수 a의 값은 4이고, 이를 이진수로 표현하면 0100입니다. 변수 b의 값은 7이고, 이를 이진수로 표현하면 0111입니다.
두 이진수를 비트 OR 연산하면 결과는 0111이 됩니다, 이는 십진수로 7입니다.
따라서, 이 프로그램을 실행했을 때의 결과는 7이므로, 정답은 ③ 7 입니다.
2021 정보처리기사 필기 2회 64번
문제
64. 다음 파이썬(Python) 프로그램이 실행되었을 때의 결과는?
1
2
3
4
5
6
7
8
9
10
11
12
|
class FourCal:
def setdata(self, fir, sec):
self.fir = fir
self.sec = sec
def add(self):
result = self.fir + self.sec
return result
a = FourCal()
a.setdata(4, 2)
print(a.add())
|
cs |
① 0
② 2
③ 4
④ 6
정답
4번
해설
이 코드는 FourCal이라는 이름의 클래스를 정의하고 있으며, 이 클래스에는 setdata와 add라는 두 개의 메소드가 있습니다. setdata 메소드는 객체의 fir와 sec 속성을 설정하고, add 메소드는 이 두 속성을 더한 결과를 반환합니다.
코드의 마지막 세 줄에서는 FourCal 클래스의 객체 a를 생성하고, setdata 메소드를 호출하여 fir에는 4, sec에는 2를 설정합니다. 그리고 add 메소드를 호출하여 이 두 값을 더한 결과를 출력합니다.
4와 2를 더하면 결과는 6이므로, 이 프로그램을 실행하면 출력 결과는 6입니다.
정답은 ④ 6입니다.
2021 정보처리기사 필기 2회 67번
문제
67. 다음 JAVA 프로그램이 실행되었을 때의 결과는?
1
2
3
4
5
6
7
8
9
|
public class Operator{
public static void main(String[] args) {
int x=5, y=0, z=0;
y = x++;
z = --x;
System.out.print(x + " , " + y + " , " + z);
}
}
|
cs |
① 5, 5, 5
② 5, 6, 5
③ 6, 5, 5
④ 5, 6, 4
정답
1번
해설
- x는 5로 초기화됩니다.
- y는 x++에 의해 x의 현재 값인 5로 설정되고, 이후 x는 1 증가하여 6이 됩니다.
- z는 --x에 의해 x의 값이 먼저 1 감소하므로, x는 5가 되고, 그 값이 z에 할당됩니다.
- 따라서 System.out.print(x + " , " + y + " , " + z); 이 구문은 5 , 5 , 5를 출력합니다.
따라서 정답은 1번 입니다.
2021 정보처리기사 필기 2회 70번
문제
70. 다음 JAVA 프로그램이 실행되었을 때의 결과는?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class array1 {
public static void main(String[] args) {
int cnt = 0;
do {
cnt++;
} while (cnt < 0);
if(cnt==1)
cnt++;
else
cnt = cnt + 3;
System.out.printf("%d", cnt);
}
}
|
cs |
① 2
② 3
③ 4
④ 5
정답
1번
해설
코드는 cnt라는 정수 변수를 0으로 초기화한 다음, do-while 루프에 진입합니다. 이 루프는 cnt를 1 증가시킵니다. while 루프의 조건은 cnt < 0입니다. 하지만 do-while은 루프 조건을 확인하기 전에 블록 내의 명령어를 최소 한 번 실행하기 때문에, cnt는 1 증가한 상태가 됩니다. 그래서 조건이 바로 거짓이 되고, 루프는 단 한 번만 실행됩니다.
루프 다음에는 if-else 문이 있습니다. 루프 후 cnt는 1이므로 if 브랜치에 들어가 cnt를 한 번 더 증가시켜, 2가 됩니다. else 블록은 실행되지 않습니다.
마지막으로, 코드는 cnt의 값을 출력합니다. 결과적으로 cnt의 값은 2이므로 프로그램의 출력값은 2가 됩니다.
따라서 질문에 대한 답은 ① 2입니다.
2021 정보처리기사 필기 2회 72번
문제
72. 다음 C언어 프로그램이 실행되었을 때의 결과는?
1
2
3
4
5
6
7
8
|
#include <stdio.h>
int main(int argc, char *argv[]) {
char a;
a = 'A' + 1;
printf("%d", a);
return 0;
}
|
cs |
① 1
② 11
③ 66
④ 98
정답
3번
해설
이 코드에서 변수 a는 문자 'A'의 아스키 코드 값에 1을 더한 값으로 초기화됩니다. 'A'의 아스키 코드 값은 65이므로, 1을 더하면 66이 됩니다. printf 함수는 이 값을 정수 형태로 출력하므로, 프로그램은 66을 출력합니다.
정답은 ③ 66입니다.
2021 정보처리기사 필기 2회 73번
문제
73. 다음 C언어 프로그램이 실행되었을 때의 결과는?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <stdio.h>
int main(int argc, char *argv[]) {
int a[2][2] = {{11, 22}, {44, 55}};
int i, sum = 0;
int *p;
p = a[0];
for(i = 1; i < 4; i++)
{
sum += *(p + i);
}
printf("%d", sum);
return 0;
}
|
cs |
① 55
② 77
③ 121
④ 132
정답
3번
해설
이 코드를 실행하면, 2차원 배열 a에 있는 원소들의 값을 포인터를 통해 합산하는 연산을 수행합니다. 포인터 p는 배열 a의 첫 번째 원소인 11을 가리키고, for 루프 안에서는 p + i를 통해 배열의 다음 원소들을 참조하여 그 값들을 sum에 누적합니다.
루프는 i가 1부터 3까지 변하면서 다음을 수행합니다:
- 첫 번째 반복에서: sum += *(p + 1); => sum = 0 + 22; => sum = 22;
- 두 번째 반복에서: sum += *(p + 2); => sum = 22 + 44; => sum = 66;
- 세 번째 반복에서: sum += *(p + 3); => sum = 66 + 55; => sum = 121;
따라서, 프로그램의 결과는 sum의 값인 121을 출력하는 것입니다. 선택지 중 ③ 121이 정답입니다.
2021 정보처리기사 필기 2회 77번
문제
77. C언어에서 연산자 우선순위가 높은 것에서 낮은 것으로 바 르게 나열된 것은?
1
2
3
4
5
6
|
㉠ - ()
㉡ - ==
㉢ - <
㉣ - <<
㉤ - ||
㉥ - /
|
cs |
① ㉠, ㉥, ㉣, ㉢, ㉡, ㉤
② ㉠, ㉣, ㉥, ㉢, ㉡, ㉤
③ ㉠, ㉣, ㉥, ㉢, ㉤, ㉡
④ ㉠, ㉥, ㉣, ㉤, ㉡, ㉢
정답
1번
해설
C언어에서 연산자의 우선순위는 다음과 같습니다:
- 괄호 ()
- 논리 AND &&
- 비트 시프트 <<, >>
- 관계 <, >
- 동등 ==, !=
- 논리 OR ||
이를 바탕으로 연산자의 우선순위를 높은 것부터 낮은 것으로 나열하면, ㉠, ㉥, ㉡, ㉢, ㉣, ㉤의 순서가 됩니다.
따라서 정답은 ① ㉠, ㉥, ㉣, ㉢, ㉡, ㉤ 입니다.
2021 정보처리기사 필기 2회 78번
문제
78. C언어 라이브러리 중 stdlib.h에 대한설명으로 옳은 것은?
① 문자열을 수치 데이터로 바꾸는 문자 변환함수와 수치를 문자열로 바꿔주는 변환함수 등이 있다.
② 문자열 처리 함수로 strlen()이 포함되어 있다.
③ 표준 입출력 라이브러리이다.
④ 삼각 함수, 제곱근, 지수 등 수학적인 함수를 내장하고 있다.
정답
1번
해설
stdlib.h는 C 표준 라이브러리의 일부로, 일반 유틸리티 함수들을 제공합니다. 여기에는 동적 메모리 관리, 난수 생성, 환경 제어, 정렬 및 검색, 수치 변환 등의 함수가 포함됩니다. 특히 문자열을 수치 데이터로 변환하는 atoi, atof 등의 함수와 수치를 문자열로 변환하는 itoa 같은 함수(이것은 표준이 아니지만 일반적으로 사용됨)가 포함되어 있습니다.
- ①은 stdlib.h에 포함된 함수의 설명으로 정확합니다.
- ②의 strlen() 함수는 string.h 라이브러리에 포함되어 있습니다.
- ③은 stdio.h 라이브러리의 설명입니다.
- ④는 math.h 라이브러리의 함수를 설명하고 있습니다.
따라서 정답은 ①입니다.
2021 정보처리기사 필기 2회 79번
문제
79. 자바스크립트(JavaScript)와 관련한 설명으로 틀린 것은?
(문제 오류로 가답안 발표시 2번으로 발표되었지만 확정 답 안 발표시 모두 정답처리 되었습니다. )
① 프로토타입(Prototype)의 개념이 존재한다.
② 클래스 기반으로 객체 상속을 지원한다.
③ Prototype Link와 Prototype Object를 활용할 수 있다.
④ 객체지향 언어이다