관리 메뉴

나구리의 개발공부기록

Chapter 05 - 실기 6강 단원 종합 문제 본문

2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/실기 6강 - 프로그래밍 언어 활용

Chapter 05 - 실기 6강 단원 종합 문제

소소한나구리 2024. 6. 24. 23:06

2024년도 수제비 실기책(6판) 내용 정리


1. C 코드의 출력 결과를 작성

문제 및 풀이

#include <stdio.h>
int main() {
  if(0.5){	// 0이 아니면 true
    printf("A");
  }
  else{
    printf("B");
  }
}
// 컴파일러가 return 0; 을 암묵적으로 추가하여 에러가 안남
// A

 


2. C 코드의 출력 결과를 작성

문제 및 풀이

#include <stdio.h>
int main(){
  int a = 1, b = 3;
  switch(++a + b){	// 2 + 3 -> 5로 이동
  case 3: printf("A");
  case 4: printf("B");
    break; case 5: printf("C");	// C 출력, break문이 없어서 default 문도 출력
  default: printf("E");
  }
}
// CE

3. C 코드의 출력 결과를 작성

문제 및 풀이

#include <stdio.h>
int main(){
  int i=2;
  while (--i){ 			// 0이 되면 종료, 1. --i로 1이 됨, 3. i가 0(false)이되어 반복문 종료
    printf("%d", i);	// 2. i출력
  }
}
// 1

4. C 코드의 결과를 보고 밑줄 친 곳에 알맞은 코드를 작성

출력 결과 : 51

 

문제 및 풀이

#include <stdio.h>
int a(int i){ return i;}
int b(int i, int j){ return i-j; }

int main(){
  // 포인터 변수와 int a, b 함수를 연결해야 함
  int (*p)(int);	    // int형 변수 1개를 사용하는 함수 포인터 변수
  int (*pf)(int, int);	// int형 변수 2개를 사용하는 함수 포인터 변수 
  ___1___; 
  printf("%d", p(5));	
  ___2___;
  printf("%d", p(5, 4));
}
// 1: p = a
// 2: pf = b

5. C 코드의 출력 결과를 작성

문제 및 풀이

#include <stdio.h>
int Soojebi(int base, int exp) {	// base = 2, exp = 10
  int i, result = 1;
  for(i=0; i<exp; i++) {	// 0 ~ 9 까지 반복
    result *= base;	// 1. 1 * 2
    return result;	// 바로 return이 있으므로 반복문 종료
  }
}

int main() {
  printf("%d", Soojebi(2,10));
}
// 2

6. C 코드의 출력 결과를 작성

문제 및 풀이

#include <stdio.h>
int fn(char* a) {
  int i = 0;
  for(i=0; a[i] != '\0'; i++);	// a[i]의 값이 null이 아니면 i값을 증가
  return i;	// 증가된 i값을 반환
}

int main(){
  char a[10] = "Hello"; // 문자열을 char타입 배열 변수a에 저장
  printf("%d", fn(a));	
}
// 5

7. C 코드의 출력 결과를 작성

문제 및 풀이

#include <stdio.h>
int main(int argc, char *argv[]){
  int a = 5, b = 3, c = 12;
  int t1, t2, t3;
  t1 = a && b;	// 5 && 3, 1
  t2 = a || b;	// 5 || 3, 1
  t3 = !c;      // !12, 0
  printf("%d", t1 + t2 + t3);
  return 0;
}
// 2

8. C 코드의 출력 결과를 작성

문제 및 풀이

#include <stdio.h>
int main(){
  int a = 0, i = 3;
  for( ; i<100; i*=3)	// 3부터 99까지 i * 3을 누적 곱셈연산하면서 반복
    a += i;		// 1. 9 = 3 * 3
    			// 2. 27 = 9 * 3
                // 3. 81 = 27 * 3
                // 4. 243 = 81 * 4, i가 100을 넘어가서 반복문 종료
  printf("%d", i);	// i의 값을 출력
}
// 243

9. 자바 코드의 출력 결과 작성

문제 및 풀이

public class Soojebi {
	public static void main(String[] args){
    	System.out.println("" + 1 + 2);
        System.out.println(1 + 2 + "");
    }
}
// 12
// 3

10. 자바 코드의 출력 결과 작성

문제 및 풀이

class Parent{
	public Parent() {	// Parent 클래스 생성자
		System.out.print("A");
	}
	public void fn() {	// 부모클래스의 fn 메서드
		System.out.print("B");
	}
	public void fnA() {	// fnA 메서드, 상속받았기 때문에 둘다 사용가능
		System.out.print("C");
	}
}

class Child extends Parent {	// 상속
	public Child() {	// Child 클래스 생성자
		System.out.print("D");
	}
	public void fn() {	// 메서드 오버라이딩
		System.out.print("E");
	}
	public void fnB() {	// fnB 메서드, Child에만 있음
		System.out.print("F");
	}
}

public class Soojebi {
	public static void main(String[] args){
    	Child c = new Child();	// 부모 생성자 호출 후 자식 생성자 호출
    	c.fn();		// 오버라이딩된 Child 클래스의 fn()메서드 호출
        c.fnA();	// 상속받은 fnA 메서드 호출
    }
}
// ADEC

11. 자바 코드의 출력 결과 작성

문제 및 풀이

public class Soojebi {
	public static int fn(int key, int[] arr, int cnt) {
		int mid;
		int low = 0, high = cnt - 1;
		int i = 0;
		
		while(low <= high) { // 0 <= 10 까지 반복
			i++;					// 1. i = 1
            						// 4. i = 2
                                    // 8. i = 3
                                    
			mid = (low + high) / 2;	// 2. mid = 5
									// 5. mid = 2
                                    // 9. mid = 0
                                    
			if(key == arr[mid]) {	// 10. 92 == 92(arr[0])
				return i;	// i의 값 반환
			}
			else if(key < arr[mid]) {	// 3. 92 < 716
            							// 6. 92 < 215
                                        
				high = mid - 1;			// 4. high = 4
                						// 7. high = 1 
			}
			else {
				low = mid + 1;
			}
		}
		return -1;
	}	
	
	public static void main(String[] args) {
		int[] a = {92, 100, 215, 341, 625, 716, 812, 813, 820, 901, 902};
		int cnt = fn(92, a, 11);	// fn함수의 연산 결과를 cnt에 저장후 출력
		System.out.println(cnt);
	}
}
// 3

12. 자바 코드의 밑줄친 곳에 알맞은 키워드를 작성

문제 및 풀이

class Parent {
	String className = "Parent Class";
	public void info() {
		System.out.println(className);
	}
}

class Child ___1___ Parent1{
	String className = "Child Class";
	public void info() {
		super.info();
		System.out.println();
	}
}

public class Soojebi {
	public static void main(String[] args) {
		Parent p = __2__ Parent();
		p.info();
		Child c = __3__ Child();
		c.info();
	}
}

// 1: extends
// 2: new
// 3: new

13. 자바 코드의 출력 결과 작성

문제 및 풀이

public class Soojebi {
	public static void main(String[] args) {
		int n = 10;
		increase(n);
		System.out.println(n);	// 클래스 변수 n의 값이 출력됨
	}
	
	static void increase(int n) {
		n = n + 1;	// 매개변수의 n의 값이 1 증가
        // 반환값도 없고 스태틱 변수에 값을 저장한 것도 아니여서 변화가 없음
	}
}
// 10

14. 100 이하의 자연수 중 가장 큰 소수를 구하는 자바코드의 빈칸에 들어갈 코드를 작성(단, 소수는 1과 자기 자신을 제외한 나머지 숫자로 나눠지지 않는 수임)

문제 및 풀이

public class Soojebi {
	public static void main(String[] args) {
		int p = 0;
		
		for(int i = 2; i<100; i++) {	// i의 값이 구하려는 소수의 값임
			int t = (int)Math.sqrt(i);
			for(int j = 2; j<= t; j++) {
				if(i % j == 0)	// i 가 j로 나누어떨어지면 소수가 아님
					break;
					
				if(j == t)	// j == t인 경우는 소수이므로 i의 값을 p에 대입
					p = _____;
			}
		}
		System.out.println(p);
	}
}
// i

15. 자바 코드의 출력 결과 작성

문제 및 풀이

public class Soojebi {
	public static void main(String[] args) {
		int i = 0, j = 0;
		for(int k = 0; k < 3; k++) {	// k = 0, 1, 2
			if((++i > 1) && (++j > 1)) {	// 1. i = 1, j = 0(++j가 실행 안됨)
            								// 2. i = 2, j = 1,
                                            // 3. i = 3, j = 2
				i++;	// 4. i = 4
			}
		}
		System.out.println(i + " " + j);	// 출력
	}
}
// 4 2

16. 파이썬 코드의 출력 결과 작

문제 및 풀이

a = ["Hello", "Python", "World"]	
for i in a:			# 리스트 a의 값을 하나씩 꺼냄(3번)
    print("abc")	# 반복문이 진행될 때마다 출력

# abc
# abc
# abc

17. 파이썬 코드의 출력 결과 작성

문제 및 풀이

a=[10,20,30,40,50,60,70,80,90]
print(a[3])
print(a[-5])
print(a[:7:2])
print(a[3:])
print(a[:5])
// 40
// 50
// [10, 30, 50, 70]
// [40, 50, 60, 70, 80, 90]
// [10, 20, 30, 40, 50]

18. 파이썬 코드의 출력 결과 작성

문제 및 풀이

sum = 0
a = [1, 2, 3, 4, 5, 6, 7, 8]
b = a[ : : 2]	# [1, 3, 5, 7]
for i in range(0, 3):	# i = 0, 1, 2
    sum += b[i]			# sum = 1 + 3 + 5
print(sum)
// 9

19. 파이썬 코드의 출력 결과 작성

문제 및 풀이

# 정렬 함수.. 오름차순
def fn(x):
    n = len(x)	# n = 6
    
    for i in range(1, n):	# i   = 1, 2, 3, 4, 5
        now = x[i]			# now = 8, 2, 1, 4, 3
        j = i - 1			# j   = 0, 1, 2, 3, 4
        
        while j >= 0 and x[j] > now:	# 1. 0 >= 0 and 5 > 8, False, while문 종료
        								# 3. 1 >= 0 and 8 > 2, True
                                        # 6. 0 >= 0 and 5 > 2, True
                                        # ...
                                        
            x[j + 1] = x[j]	# 4. x[2] = 8
            				# 7. x[1] = 5
            
            j -= 1			# 5. j = 0
            				# 8. j = -1 -> while문 종료
            
        x[j + 1] = now	#2. x[1] = 8
        				#9. x[0] = 2
        
x = [5, 8, 2, 1, 4, 3]
fn(x)	# [2, 5, 8, 1, 4, 3]
print(x)
# [1, 2, 3, 4, 5, 8]