정보처리실기 - 문제 (코드형 1 - 답변)

anonymous·2022년 4월 10일
0

정보처리기사

목록 보기
15/15

자바

1 다음 Java 코드에 대한 알맞는 출력값을 쓰시오.

class Connection {
  private static Connection _inst = null;
  private int count = 0;
    static public Connection get() {
      if(_inst == null) {
      _inst = new Connection();
      return _inst; 
      }
    return _inst;
    }
  public void count() { count ++; }
  public int getCount() { return count; }
}
 
public class testcon {
  public static void main(String[] args) {
    Connection conn1 = Connection.get();
    conn1.count();
    Connection conn2 = Connection.get();
    conn2.count();
    Connection conn3 = Connection.get();
    conn3.count();
    
    System.out.print(conn1.getCount());
  }
}

설명

// 기존에 객체가 없으면 new - 새로운 커넥션 객체 생성 , 단 기존에 객체가 있으면 기존 객체 리턴  
Connection conn1 = Connection.get();
static public Connection get() {
  if(_inst == null) {
  _inst = new Connection();
  return _inst; 
  }
return _inst;
}
// 해당 메소스 실행 후 count +=1 
conn1.count();

답변

3

2 이것은 클래스 내에서 객체 생성 없이 사용할 수 있는 메소드이다. 다음의 출력 결과를 보고 괄호안에 알맞은 답안을 작성하시오.

public class Test {
   public static void main(String[] args){
      system.out.print(test.check(1));
   }
   
   (  괄호  )  String check (int num) {
      return (num >= 0) ? "positive" : "negative";
   }
}

[출력결과]
positive

답변

static

3 다음 JAVA 코드의 실행 결과를 적으시오.

public class over {
	public static void main(String[] args){
    	ovr a1 = new ovr1();
        ovr a2 = new ovr2();
        System.out.println(a1.sun(3,2) + a2.sun(3,2));
    }
    
    int sun(int x, int y){
    	return x + y;
    }
}

class ovr2 extends ovr1 {
	int sun(int x, int y){
    	return x - y + super.sun(x,y);
    }
}

답변

11

--

2 다음 Java 코드에 대한 알맞는 출력값을 쓰시오.

public class testco {
 public static void main(String[] args) {
  int a = 3, b = 4, c = 3, d = 5;
  if((a == 2 | a == c) & !(c > d) & (1 == b ^ c != d)) {
   a = b + c;
    if(7 == b ^ c != a) {
     System.out.println(a);
    } else {
    System.out.println(b);
    }
  } else {
    a = c + d;
    if(7 == c ^ d != a) {
    System.out.println(a);
    } else {
    System.out.println(d);
    }
  }
 }
}

힌트

& vs && 연산자 차이

&& : 선조건이 true일 때만 후조건을 실행한다. 즉 선조건이 false면 후조건 실행을 안한다.
& : 선조건 후조건 구분 없이 전체 실행해서 주어진 조건이 모두 true면 true 표시.
| 에도 동일하게 적용된다. 일반적으로는 && , || 를 사용한다.

비트 연산

^는 XOR 조건 또는 배타적 OR 조건 또는 OR 조건이지만 일치하는 경우는 뺀다라는 뜻.
~는 비트 COMPLEMENT 또는 반전

https://phantom.tistory.com/19

답변

// a = 7
7

C 언어

1 다음 C언어 코드에 대한 알맞는 출력값을 쓰시오.

#include 
int main(){
  int *arr[3];
  int a = 12, b = 24, c = 36;
  arr[0] = &a;
  arr[1] = &b;
  arr[2] = &c;
 
  printf("%dn", *arr[1] + **arr + 1);
}

답변

37

설명:
포인터의 메모리 주소를 저장하는 포인터의 포인터 ** 선언
배열의 경우
int arr[ ]; 선언이라면, arr 그 이름 자체가 int* 자료형
arr[0] 은 int* + int* 이므로 int**

2 다음은 C언어 코드의 실행 결과를 적으시오.

int main() {
	int ary[3];
	int s = 0;
	*(ary + 0) = 1;
	ary[1] = *(ary + 0) + 2;
	ary[2] = *ary + 3;
	for(int i = 0; i < 3; i++) {
		s = s + ary[i];
	}
	printf("%d", s);
}

답변

8

설명

//정수 3개 짜리 ary 배열 선언
//정수 변수 s 초기화
//ary 배열 첫 번째 포인터 값 할당
//ary 배열 두 번째 값 할당 -> ary 배열 첫 번째 포인터 값+2=3 이므로 ary[1]=3
//ary 배열 세 번째 값 할당 -> ary 배열 첫 번째 포인터 값+3=4 이므로 ary[2]=4
//for문 i=0~2 1씩 증가(0,1,2)
//i=0일 때 s=0+1
//i=1일 때 s=1+3
//i=2일 때 s=4+4 이므로
=> 정답은 8

3 다음은 C언어에 관한 소스코드이다. 실행 결과값을 작성하시오.

int mp(int base, int exp);
int main(){
   int res;
   res = mp(2,10);
   printf("%d",res);
   return 0;
}

int mp(int base, int exp) {
   int res = 1;
   for(int i=0; i < exp; i++){
      res = res * base;
   }
   
   return res;
}

답변

1024
설명:
2, 4, 8 ,16, 32 , 64, 128, 256, 512, 1024

4 다음 C언어 코드에 대한 알맞는 출력값을 쓰시오.

#include 
 
struct jsu {
  char nae[12];
  int os, db, hab, hhab;
};
 
int main(){
  struct jsu st[3] = {{"데이터1", 95, 88}, 
                    {"데이터2", 84, 91}, 
                    {"데이터3", 86, 75}};
  struct jsu* p;
 
  p = &st[0];
 
  (p + 1)->hab = (p + 1)->os + (p + 2)->db;
  (p + 1)->hhab = (p+1)->hab + p->os + p->db;
 
  printf("%dn", (p+1)->hab + (p+1)->hhab);
}

답변

501

설명

(p + 1)->hab = (p + 1)->os + (p + 2)->db;    ← p[1].hap = 84 + 75 = 159 입니다.

(p + 1)->hhab = (p+1)->hab + p->os + p->db;    ← p[1].hhap= 159 + 95 + 88 = 342 입니다.

printf("%d\n", (p+1)->hab + (p+1)->hhab);   ← 159 + 342 = 501 입니다.

파이썬

1 다음 파이썬 코드의 결과를 적으시오.

a = 100
result = 0
for i in range(1,3);
   result = a >> i
   result = result + 1
print(result)

10진수 값을 2진수로 변경 후 시프트 연산을 하고 합하기
https://heestory217.tistory.com/81
https://velog.io/@csk917work/%EC%A7%84%EC%88%98-%EB%B3%80%EA%B2%BD#10%EC%A7%84%EC%88%98---2%EC%A7%84%EC%88%98

SQL

1 테이블의 튜플을 수정하고자 한다. 올바른 SQL을 작성하기 위해 빈칸을 채우시오.

(    A   ) 테이블명  (     B    )  컬럼 = 값 WHRE 점수 >= 90;

2 다음은 Inner Join을 하기 위한 SQL이다. 빈칸에 들어갈 문구를 적으시오.

SELECT .... FROM 학생정보 a JOIN 학과정보 b (   A   ) a.학과 = b.(   B   )

3 다음은 '이'씨 성을 가진 사람의 이름을 내림차순으로 출력하기 위한 SQL문이다. 괄호안에 들어갈 알맞은 답안을 작성하시오.

SELECT ... FROM ... WHERE 이름 LIKE ( A ) ORDER  BY ( B )

4 다음은, 테이블에서 조건값을 실행한 화면이다. 이에 대한 알맞는 결과값을 작성하시오.

4

설명: 크로스 조인이어서 모든 경우가 다 나와야함

출처

기출문제
https://q.fran.kr/%EC%8B%9C%ED%97%98/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC%20%EC%8B%A4%EA%B8%B0/

profile
기술블로거입니다

0개의 댓글