< C++ >
# 1. 다음은 C 언어 코드이다. 알맞은 출력 결과를 작성하시오.
[소스코드]
#include <stdio.h>
int test(int n)
{
int i, sum = 0;
for (i = 1; i <= n / 2; i++)
{
if (n % i == 0)
sum += i;
}
if (n == sum)
return 1;
return 0;
}
int main()
{
int i, sum = 0;
for (i = 2; i <= 100; i++)
{
if (test(i))
sum += i;
}
printf("%d ", sum);
return 0;
}
위 문제는 완전수를 구해 모두 더하는 문제다
정수 i선언 sum은 0으로 초기화
1부터 100 사이 완전수는 6, 28 두 개밖에 없다
[출력결과]
34
# 2. C언어에서 구조체의 멤버에 접근하기 위해 괄호안의 기호를 작성하시오.
[소스코드]
#include <stdio.h>
#include <stdlib.h>
typedef struct Data
{
char c;
int* numPtr;
}
Data;
int main() {
int num = 10;
Data d1;
Data* d2 = (Data*)malloc(sizeof(struct Data));
d1.numPtr = #
d2()numPtr = #
printf("%d\n", *d1.numPtr);
printf("%d\n", *d2()numPtr);
free(d2);
return 0;
}
구조체 멤버에 접근하는 기호는 ->
# 3. 다음 C언어 코드에 알맞는 출력값을 작성하시오.
[소스코드]
#include <stdio.h>
int f(int n)
{
if (n <= 1)
return 1;
else
return n * f(n - 1);
}
int main()
{
printf("%d", f(7));
}
재귀함수가 사용된 문제다
f(7) = 7 * f(6)
f(6) = 6 * f(5)
f(5) = 5 * f(4)
f(4) = 4 * f(3)
f(3) = 3 * f(2)
f(2) = 2 * f(1)
f(1) = 1
[출력결과]
5040
# 4. 다음은 C언어의 포인터 문제이다. 알맞는 출력값을 작성하시오.
[소스코드]
#include <stdio.h>
int main()
{
const char* p = "KOREA";
printf("%s\n", p);
printf("%s\n", p + 1);
printf("%c\n", *p);
printf("%c\n", *(p + 3));
printf("%c\n", *p + 4);
return 0;
}
문자열 리터럴 포인터 p를 "KOREA"로 초기화
printf("%s\n ", p) // 포인터 p의 문자열을 출력
printf("%s\n", p + 1) // 포인터 p + 1의 문자열을 출력
printf("%c\n", *p) // 포인터 p의 값을 출력
printf("%c\n", *(p + 3)) // 포인터 p + 3의 값을 출력
printf("%c\n", *p + 4) // 포인터 p의 값 + 4를 출력
마지막 출력문을 보면 *p + 4가 있는데 *p는 K를 뜻하고 +4는 K의 아스키값 + 4를 하라는 소리다
K(75) + 4 = 79 // 79를 ASCII로 변환하면 "O"가 된다
[출력결과]
KOREA
OREA
K
E
O
< Java >
# 1. 다음은 Java 코드이다. 올바른 출력 결과를 작성하시오.
[소스코드]
public class good
{
public static void main(String[] args)
{
A b = new B();
b.paint();
b.draw();
}
}
class A
{
public void paint()
{
System.out.print("A");
draw();
}
public void draw()
{
System.out.print("B");
draw();
}
}
class B extends A
{
public void paint()
{
super.draw();
System.out.print("C");
this.draw();
}
public void draw()
{
System.out.print("D");
}
}
B클래스의 생성자를 호출하여 새로운 객체 생성
b.paint()
super.draw() // 부모클래스의 draw() 호출
draw() // B를 출력하고 자식 클래스의 draw()를 호출 → BD
System.out.print("C") // C를 출력 → C
this.draw() // 자식 클래스의 draw() 호출 → D
b.draw()
System.out.print("D") // D를 출력 → D
[출력결과]
BDCDD
# 2. 다음은 Java 코드에 대한 알맞은 출력값을 작성하시오.
[소스코드]
class Parent
{
int compute(int num)
{
if (num <= 1)
return num;
return compute(num - 1) + compute(num - 2);
}
}
class Child extends Parent
{
int compute(int num)
{
if (num <= 1)
return num;
return compute(num - 1) + compute(num - 3);
}
}
public class good
{
public static void main(String args[])
{
Parent obj = new Child();
System.out.print(obj.compute(7));
}
}
재귀호출 문제
Child클래스의 생성자를 호출하여 새로운 객체를 생성
obj.compute(7)
compute(7) = compute(6) + compute(4)
compute(6) = compute(5) + compute(3)
compute(5) = compute(4) + compute(2)
compute(4) = compute(3) + compute(1)
compute(3) = compute(2) + compute(0)
compute(2) = compute(1) + compute(-1)
compute(1) = 1
compute(-1) = -1
[출력결과]
2
# 3. 다음 자바 코드를 실행할 경우 에러가 발생이 된다. 에러가 발생하는 라인명을 작성하시오.
class Person
{
private String name;
public Person(String val)
{
name = val;
}
public static String get()
{
return name;
}
public void print()
{
System.out.println(name);
}
}
public class good
{
public static void main(String[] args)
{
Person obj = new Person("Kim");
obj.print();
}
}
10번라인에서 에러가 나는데, 이유는 String name이 private로 선언되어 있기 때문에 외부 클래스에선 접근이 안된다
static 메서드는 인스턴스와 연결되지 않는데, public static String get()에서 get()이 static메서드이기 때문에 인스턴스 변수인 name에 접근이 안된다
< Python >
# 1. 다음은 파이썬에 대한 문제이다. 괄호 안에 알맞는 답을 작성하시오.
print("파이썬 입출력에 대한 문제입니다.")
num1, num2 = input()._____()
print(num1,num2)
num3 = num1 + num2
print(num1 + " + " + num2 + " = " + num3)
입력받은 문자열을 잘라주는 함수를 사용
split메서드 사용
[출력결과]
파이썬 입력출에 대한 문제입니다.
2 3
2 + 3 = 5
'정보처리기사' 카테고리의 다른 글
[2024년 2회] (0) | 2024.10.10 |
---|---|
[2024년 1회] (2) | 2024.10.10 |
[2023년 2회] (0) | 2024.10.07 |
[2023년 1회] (0) | 2024.10.07 |
[2022년 3회] (0) | 2024.10.04 |