1회-1) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
class A {
int a;
int b;
}
public class Test001 {
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);
}
}
답: 2000
func1을 통해서 100*10 = 1000
func2를 통해서 1000 + 1000 = 2000
1회-2) 다음 Java로 구현된 프로그램을 분석하여 괄호에 들어갈 알맞은 답을 쓰시오.
class Car implements Runnable {
int a;
public void run() {
try {
while(++a < 100) {
System.out.println("miles travled : " + a);
Thread.sleep(100);
}
} catch(Exception E) { }
}
}
public class Test002 {
public static void main(String[] args) {
Thread t1 = new Thread(new ( )());
t1.start();
}
}
답: Car
실행 결과는
miles travled : 1
부터
miles travled : 99
까지이다.
2회-1) 다음 Java로 표현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
public class Test003 {
public static void main(String[] args) {
int i = 3, k = 1;
switch(i) {
case 1: k++;
case 2: k -= 3;
case 3: k = 0;
case 4: k += 3;
case 5: k -= 10;
default: k--;
}
System.out.print(k);
}
}
답: -8
break문이 없기 때문에 case 3부터 시작해서 default까지 모두 계산하면
0 + 3 - 10 - 1 = -8
2회-2) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
public class Test004 {
public static void main(String[] args) {
Cond obj = new Cond(3);
obj.a = 5;
int b = obj.func();
System.out.print(obj.a + b);
}
}
class Cond {
int a;
public Cond(int a) {
this.a = a;
}
public int func() {
int b = 1;
for(int i=1; i<a; i++) {
b += a * i;
}
return a + b;
}
}
답: 61
obj.a = 5에서 a값이 3에서 5로 변경된다.
obj.func()을 통해 계산을 하면 return a + b가 56이므로
obj.a + b = 5 + 56 = 61이다.
3회-1) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
public class Test005 {
public static void main(String[] args) {
int result[] = new int[5];
int arr[] = {77, 32, 10, 99, 50};
for(int i=0; i<5; i++) {
result[i] = 1;
for (int j=0; j<5; j++) {
if (arr[i] < arr[j]) {
result[i]++;
}
}
}
for (int k=0; k<5; k++) {
System.out.println(result[k]);
}
}
}
답: 24513
이중 for문 안의 식을 보면 arr 배열의 i번째 있는 값이 arr 배열에 있는 항목 중 몇 번째로 큰 값인지가 result의 항목 값이 된다.
arr[0] = 77이므로 77은 arr 배열 항목 중 두 번째로 크므로 result[0] = 1,
arr[1] = 32이므로 result[1] = 4
이런 식으로 불편 24513이 답이 된다.
3회-2) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
public class Test006 {
static int[] mkarr() {
int[] tmpArr = new int[4];
for(int i=0; i<tmpArr.length; i++) {
tmpArr[i] = i;
}
return tmpArr;
}
public static void main(String[] args) {
int[] arr;
arr = mkarr();
for (int i=0; i<arr.length; i++) {
System.out.println(arr[i]);
}
}
}
답: 0123
3회-3) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
public class Test007 {
public static void main(String[] args) {
int r = 0;
for(int i=1; i<999; i++) {
if(i%3==0 && i%2==0) {
r = i;
}
}
System.out.print(r);
}
}
답: 996
i를 3으로 나눈 나머지가 0이면서 2를 나눈 나머지가 0이어야 하므로 결국 i는 6의 배수이다.
i가 6의 배수일 때마다 r을 i로 값을 바꾸고 있으므로,
999 미만의 자연수 중에서도 6의 배수 중 가장 큰 수가 r이 된다.
따라서 정답은 996이다.
'Language > Java' 카테고리의 다른 글
[Java] 추상 클래스와 인터페이스의 차이 (4) | 2024.04.08 |
---|---|
[정보처리기사] 2023년 Java 프로그래밍 언어 문제 (0) | 2024.04.08 |
[정보처리기사] 2021년 Java 프로그래밍 언어 문제 (0) | 2024.04.07 |
[정보처리기사] 2020년 Java 프로그래밍 언어 문제 (1) | 2024.04.07 |
[정보처리기사] 2019년 Java 프로그래밍 언어 문제 (2) | 2024.04.04 |