< C++ >
# 1. 다음 소스코드에서 입력값이 5가 들어왔을 때 출력되는 값을 작성하시오.
[소스코드]
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int func(int a)
{
if (a <= 1)
return 1;
return a * func(a - 1);
}
int main()
{
int a;
scanf("%d", &a);
printf("%d", func(a));
return 0;
}
정수 a를 정의하고, scanf함수를 통해 a의 값을 5를 입력받아서 a의 메모리주소에 할당한다
func(int a) 함수를 확인해 보면 재귀함수인 것을 확인할 수 있다
func(5) = 5 * func(4)
func(4) = 4 * func(3)
func(3) = 3 * func(2)
func(2) = 2 * func(1)
func(1) = 1
결국 func(5) = 5 * 4 * 3 * 2 * 1 이 된다
[출력결과]
120
# 2. 다음 중, 괄호 ( ) 안에 들어갈 연산자를 써서 정수를 역순으로 출력하는 알맞는 답을 작성하시오.
[소스코드]
#include <stdio.h>
int main()
{
int number = 1234;
int div = 10;
int result = 0;
while (number (1) 0)
{
result = result * div;
result = result + number (2) div;
number = number (3) div;
}
printf("%d", result);
return 0;
}
정수 number 1234가 4321처럼 역순으로 출력되게 하는 문제다
(1) while (number > 0 or number != 0)
(2) result = result * div;
result = result + number % div;
(3) number = number / div;
# 3. 다음 소스코드가 실행할 때의 출력값을 작성하시오.
[소스코드]
#include <stdio.h>
int isPrime(int number)
{
int i;
for (i = 2; i < number; i++)
{
if (number % i == 0)
return 0;
}
return 1;
}
int main()
{
int number = 13195, max_div = 0, i;
for (i = 2; i < number; i++)
if (isPrime(i) == 1 && number % i == 0)
max_div = i;
printf("%d", max_div);
return 0;
}
문제의 조건문들을 살펴보면 최대 소인수를 구하는 문제다
정수 i 정의
정수 number, max_div를 각각 13195, 0으로 초기화
isPrime 함수를 보면 number를 i로 나눈 나머지값이 0이면 소수가 아니므로 0을 리턴하고, 반복문을 모두 다 통과하면 소수이므로 1을 리턴한다
먼저 문제의 최대 소인수인 29를 대입해보자
i = 29일 때
isPrime(29)는 소수가 맞으므로 리턴 1
13195를 29로 나눈 나머지는 0이므로 T(1)
if (isPrime(i) == 1 && number % i == 0) → true
[출력결과]
29
< Java >
# 1. 다음 자바 문법에 알맞은 출력 결과를 작성하시오.
[소스코드]
class A
{
int a;
int b;
}
public class good
{
static void func1(A m)
{
m.a *= 10;
}
static void func2(A m)
{
m.a += m.b;
}
public static void main(String args[])
{
A m = new A();
m.a = 100;
func1(m);
m.b = m.a;
func2(m);
System.out.printf("%d", m.a);
}
}
A타입 객체 m을 A클래스의 생성자를 호출하여 새로운 객체 생성
m.a = 100; // A클래스의 정수 a를 100으로 초기화
func1(m);
func1(A m) 함수 파라미터에 객체 m을 전달하여 m.a를 1000으로 초기화
m.b = m.a; // A클래스의 정수 b를 1000으로 초기화
func2(m);
func2(A m) 함수 파라미터에 객체 m을 전달하여 m.a를 2000으로 초기화
[출력결과]
2000
# 2. 다음 Java 코드 중에서 밑줄에 들어갈 알맞는 코드를 작성하시오.
[소스코드]
class Car implements Runnable
{
int a;
public void run()
{
System.out.println("message")
}
}
public class good
{
public static void main(String args[])
{
Thread t1 = new Thread(new ___());
t1.start();
}
}
Thread t1 = new Thread(new ___()); 부분은 스레드 객체를 생성하는 부분이므로 Car가 들어가면 된다
< Python >
# 1. 다음은 파이썬 코드에서 출력되는 a와 b의 값을 작성하시오.
[소스코드]
def exam(num1, num2 = 2):
print('a=', num1, 'b=', num2)
exam(20)
exam 함수는 파라미터 한 개를 전달받는데, 여기서 전달받는 파라미터는 num1에 해당한다
exam(20)이고, num2= 2라고 정의되어있으니, exam(20, 2)가 되어 a=20, b=2
[출력결과]
a= 20 b= 2
'정보처리기사' 카테고리의 다른 글
[2022년 3회] (0) | 2024.10.04 |
---|---|
[2022년 2회] (0) | 2024.10.04 |
[2021년 3회] (1) | 2024.10.02 |
[2021년 2회] (1) | 2024.10.02 |
[2021년 1회] (0) | 2024.10.02 |