본문 바로가기
  • 문과생의 백엔드 개발자 성장기
|Developer_Study/정보처리기사

[정보처리기사 실기] 6과목 - 프로그래밍 언어 활용 (문제위주)

by 케리's 2023. 2. 20.

1. 다음은 C언어 소스코드이다. 출력 결과를 쓰시오 (2020년 1회)

 #include <stdio.h>
 void main(){
    int i, j;
    int temp;
    int a[5] = {75,95,85,100,50};
    
    for(i=0; i<4; i++){
    	for(j=0; j<4-i; j++){
        	if(a[j] > a[j+1]){
            	temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
         }
     }
        
     for(i=0; i<5; i++){
        printf("%d", a[i]);
     }
 }

해설

 #include <stdio.h>
 void main(){
    int i, j;
    int temp;
    int a[5] = {75,95,85,100,50};
    
    for(i=0; i<4; i++){ // 반복할 때 i 는 0, 1, 2, 3 이됨
    	for(j=0; j<4-i; j++){
        	// i = 0일때, 반복하면 J는 0,1,2,3
            // i = 1일때, 반복하면 J는 0,1,2
            // i = 2일때, 반복하면 J는 0,1
            // i = 3일때, 반복하면 J는 0
        	if(a[j] > a[j+1]){ //만약 a[0] > a[1] 일때 즉 int a[5] = {75,95,85,100,50}; 에서 앞뒤를 75 > 95일때 만 이 if문을 탄다.
            	// a[1] > a[2] 는 95 > 85 에 해당되니
                temp = a[j]; //임시 변수 temp에 95 저장
                a[j] = a[j + 1]; // a[1]자리엔 a[2] 즉 85 저장
                a[j + 1] = temp; // a[2]자리엔 임시변수 temp에 있던 95 저장
                // 즉 현재값이 그 다음값 보다 크면 서로 자리를 바꾸게 된다.
                // 마지막 a[4]에는 가장 큰값이 저장하게 된다. 
            }
         }
     }
        
     for(i=0; i<5; i++){
        printf("%d", a[i]); // 개행없이 출력 
     }
 }
 
 답 = 50, 75, 85, 95, 100

 

2. 다음은 자바소스이다. 출력 결과를 쓰시오 (2020년 1회)

public class good {
	public static void main(String[] args){
    	int i = 3;
        int k = 1;
        swich (i) {
        case 0:
        case 1:
        case 2:
        case 3: k = 0; 
        case 4: k += 3; 
        case 5: k -= 10;
        default: k--;
        }
        system.out.print(k);
     }
}
답 : -8

해설

public class good {
	public static void main(String[] args){
    	int i = 3;
        int k = 1;
        swich (i) { // i = 3이기 때문에 case 3으로간다.
        case 0:
        case 1:
        case 2:
        case 3: k = 0; // k = 0 -> break가 없으므로 계속 defalut까지 연산한다.
        case 4: k += 3; // k = 3
        case 5: k -= 10; // k = -7
        default: k--; // k = -8
        }
        system.out.print(k); // -8
     }
}
답 : -8

 

3.  다음은 파이썬 코드이다. 출력 결과를 쓰시오. (2020년 2회)

a={'일본','중국','한국'}
a.add('베트남')
a.add('중국')
a.remove('일본')
a.update({'홍콩','한국','태국'})
print(a)

해설

# 세트는 집합이므로 출력 순서가 상관 없다. , 기존데이터가 있으면 무시

a={'일본','중국','한국'}
a.add('베트남') # a = {일본, 중국, 한국, 베트남}
a.add('중국')  # a = {일본, 중국, 한국, 베트남}
a.remove('일본') # a = {중국, 한국, 베트남}
a.update(['홍콩','한국','태국']) # a = {중국, 한국, 베트남, 홍콩, 태국}
print(a) # a = {중국, 한국, 베트남, 홍콩, 태국}

 

4. 다음은 자바 코드이다. 다음 밑줄에 들어갈 키워드를 쓰시오.(2020년 2회)

class A{
	private int a;
    public A(int a){
    	this.a = a;
    }
    public void display(){
    	system.out.println("a=" + a);
    }
}

class B extends A {
	public B(int a){
    	super(a);
        super.display();
    }
}


public class good {
	public static void main(String[] args){
    	B obj = new B(10);
    }
}

해설

class A{
	private int a;
    public A(int a){
    	this.a = a;// 4)넘겨받은 10을 a에 대입
    }
    public void display(){
    	system.out.println("a=" + a); //6)대입받은 a 출력
    }
}

class B extends A {
	public B(int a){
    	super(a); //3) 상위클래스 생성자 접근 = A클래스의 생성자중 int 매개변수 가지고 있는 생성자 접근
        super.display(); //5) 상위클래스의 display메서드 실행
    }
}


public class good {
	public static void main(String[] args){ //1) 소스는 main부터 시작
    	B obj = new B(10); //2) B클래스의 생성자중 int형 매개변수로 가지고 있는생성자 접근 
    }
}

답 a=10

 

5. 다음은 C언어 소스 코드이다. 출력 결과를 쓰시오.(2020년 3회)

#include <stdio.h>

void main(){
    int i=0, c=0;
    while (i<10){
    i++;
    c*=i;
    }
  printf("%d",c);
}

해설

#include <stdio.h>

void main(){
    int i=0, c=0;
    while (i<10){
    i++; //후위연산자
    c*=i; // c는 = 0, 어떤 값을 곱해도 0
    }
  printf("%d",c);
}

답 : 0

 

6. 다음은 C언어 소스 코드이다. 출력 결과를 쓰시오.(2020년 3회)

include <studio.h>
int r1(){
	return 4;
}
int r10(){
	return (30+r1());
}
int r100(){
	return (200+r10());
}
int main(){
	printf("%d\n", r100());
    return 0;
}

해설

//재귀함수문제 
include <studio.h>
int r1(){ // 4) r1 = 4
	return 4;
}
int r10(){ //3) r10 = 30 + r1() -> r1()호출 
	return (30+r1());
    // 5) r1 = 4, 34리턴
}
int r100(){ // 2) r100 = 200 + r10() -> r10()호출
	return (200+r10());
    // 6)  r10 = 34, 234리턴
}
int main(){ //시작점
	printf("%d\n", r100()); //1) r100 호출
    // 7) r100 = 234
    return 0;
}

답 234

 

7. 다음은 자바 코드이다. 출력 결과를 쓰시오. (2020년 3회)

public class good {
	public static void main(String[] args){
    int i=0;
    int sum=0;
    while (i<10){
    	i++;
        if(i%2 ==1)
        	continue;
        sum += i;
     }
     System.out.println(sum);
   }
}

해설

public class good {
	public static void main(String[] args){
    int i=0;
    int sum=0;
    while (i<10){ // i가 0일때, i=1
    	i++; // i = 1, i=2
        if(i%2 ==1) // 나머지가 1일때 다시 위로올라감
        	continue;
        sum += i; // sum = 2 + 4 + 6 + 8 + 10
     }
     System.out.println(sum);
   }
}

답 30

 

8. 다음은 자바 코드이다. 출력 결과를 쓰시오. (2020년 3회)

abstract class vehicle{
	private String name;
    abstract public String getName(String val);
    public String getName(){
    	return "vehicle name:" + name;
    }
	public void setName(String val){
    	name = val;
    }
}

class Car extends Vehicle{
	public Car(String val){
    	setName(val);
   }
public String getName(String val){
	return "Car name : " + val;
   }
public String getName(byte val[]){
	return "Car name : " + val;
   }
}

public class good {
	public Static void main(String[] args){
    Vehicle obj = new Car("Spark");
    System.out.print(obj.getName());
    }
}

 

해설

abstract class vehicle{
	private String name;
    abstract public String getName(String val);
    public String getName(){ // 4) 파라미터 없는 getName
    	return "vehicle name:" + name; // vehicle name : Spark를 리턴
    }
	public void setName(String val){
    	name = val;
    }
}

class Car extends Vehicle{
	public Car(String val){ // 2) 넘어온 val = Spark, name에 Spark 대입
    	setName(val);
   }

public String getName(byte val[]){
	return "Car name : " + val;
   }
}

public class good {
	public Static void main(String[] args){ //시작점
    Vehicle obj = new Car("Spark"); //1) Car 클래스의 String 매개변수를 입력하는 매서드로 이동
    System.out.print(obj.getName()); //3) 생성자 obj의 getName()-> 파라미터없는 getName 호출
    //5) 리턴된것 출력
    }
}

답 : vehicle name : Spark

 

9. 다음은 n이 10일 때, 10을 2진수로 변환하는 자바 소스 코드이다. 1,2에 알맞는 값을 적으시오. (2020년 4회)

[출력결과] : 00001010
class good {
	public static void main (String[] args) {
    	int[]a = new int[8];
        int i=0; int n=10;
        while (  1.  ) {
        	a[i++] = (  2.  );
            n /= 2;
        }
        for(i=7; i>=0; i--){
         System.out.print(a[i]);
        }
     }
}

해설

[출력결과] : 00001010
class good {
	public static void main (String[] args) {
    	int[]a = new int[8];
        int i=0; int n=10;
        while (  1.  ) { //2) i <= 7 , 8번 반복한다는 말
        	a[i++] = (  2.  ); // a[i]는 0과 1만 들어가야하기 때문에 n%2
            n /= 2;
        }
        for(i=7; i>=0; i--){
         System.out.print(a[i]); //8자리를 출력해야함 a[0]~ a[7] = 00001010
        }
     }
}

답 : 1.i <= 7, 2.n%2

 

10. 다음은 파이썬 소스 코드이다. 출력 결과를 쓰시오. (2020년 4회)

lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0])
print(lol[2][1])
	for sub in lol;
    	for item in sub;
        	print(item, end = '')
        print()

해설

lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0]) # [1,2,3]
print(lol[2][1]) # 7
	for sub in lol; # sub 는 [1,2,3], [4,5] , [7,8,9]
    	for item in sub; #item은 1,2,3 / 4,5 / 7,8,9
        	print(item, end = '') # 개행하지 않음 = 1 2 3 / 4 5/ 6 7 8 9 
        print()# 개행 
답 
[1,2,3]
7
123
45
6789

 

11. 다음은 C언어 소스 코드이다. 출력 결과를 쓰시오. (2020년 4회)

#include <stdio.h>

void main(){
	char *p = "KOREA"
    printf("%s\n" , p);
    printf("%s\n" , p+3);
    printf("%c\n" , *p);
    printf("%c\n" , *(p+3));
    printf("%c\n" , p+2);

해설

#include <stdio.h>

void main(){
	char *p = "KOREA"
    printf("%s\n" , p); // P주소부터 null을 만날때 까지 KOREA
						// K=p, O=p+1, R=p+2 ~ 이렇게 진행됨 
    printf("%s\n" , p+3); // p+3주소부터 null을 만날때까지 EA
    printf("%c\n" , *p); // *c는 문자를 뜻하고 P가 가리키는 곳은 K
    printf("%c\n" , *(p+3)); // E
    printf("%c\n" , *p+2); // P의 주소값은 K인데 여기에 +2를 했으므로 M (K의 다다음 스펠링)
    
답
KOREA
EA
K
E
M

 

12. 다음은 자바 소스 코드이다. 출력 결과를 쓰시오. (2020년 4회)

class parent{
	public int compute(int num){
    	if(num <=1) return num;
        return compute(num-1) + compute(num-2);
    }
 }
 
 class Child extends parent {
 	public int compute(int num){
    	if(num<=1) return num;
        	return compute(num-1) + compute(num-3);
        }
   }
   
  class good{
  	public static void main (String[] args){
    parent obj = new Child();
    System.out.print(obj.compute(4));
   }
 }

해설

class parent{
	public int compute(int num){
    	if(num <=1) return num; 
        return compute(num-1) + compute(num-2); 
    }
 }
 
 class Child extends parent {
 	public int compute(int num){ //매개변수 받는 게 동일하게 있을때 자식클래스로 오버라이딩
    	if(num<=1) return num; //4 <=1 일때 바로리턴 아니면 재귀함수 호출
        	return compute(num-1) + compute(num-3); // compute(3) = 0 + compute(1) = 1반환
        // compute(3) = compute (2) + compute (0)
        // compute(2) = compute (1) + compute (-1)
        // 결론 compute(3)은 0이다.
        }
   }
   
  class good{
  	public static void main (String[] args){ // 1) 메인 시작
    parent obj = new Child(); //child 클래스 생성자
    System.out.print(obj.compute(4)); // 2)obj의 compute 매서드에 int(4)를 매개변수로 받는곳 찾아간다.
   }
 }
 
 답 1

댓글