정처기 실기 : 2023년 2회차 기출, 1️⃣~5️⃣

m_ngyeong·2024년 4월 16일
0
post-thumbnail

정보처리기사 실기


📝 2023년 2회차 기출, 1️⃣~5️⃣

1. C Lang.  - Bit Shift operator

⭐️ 조건 : 입력값이 54321일 경우, 출력값이 43215가 되도록

#include <stdio.h>

int main(void) {
    
    int n[5];
    int i;
    
    for(i=0; i<5; i++){
        printf("숫자를 입력해주세요: ");
        scanf("%d", &n[i]);
    }
    
    for(i=0; i<5; i++){
        printf("%d", __________ );
    }
    
    return 0;
}

🖍 n[(i+1) % 5]
% 연산자 : 왼쪽 값을 오른쪽 값으로 나눈 나머지를 계산하는 연산자

Shift operator

  • << : 왼쪽 값을 오르쪽 값만큼 비트를 왼쪽으로 이동하는 연산자
    예) int x=11; printf("%d", x<<3);
    ① 11을 2진수로 바꾸면 1011,
    ② 왼쪽으로 3비트 이용하면 1011000,
    ③ 1011000를 10진수로 바꾸면 88.
  • >> : 왼쪽 값에 오르쪽 값만큼의 부호 비트를 채우면서 오른쪽으로 이동하는 연산자
    예) int x=11; printf("%d", x>>1);
    ① 11을 2진수로 바꾸면 1011,
    ② 오른쪽으로 1비트 이용하면 101,
    ③ 101를 10진수로 바꾸면 5.

Bit operator

  • & : AND 연산자,
  • | : OR 연산자, 비트 값이 하나라도 1이면 해당 비트 값은 1
  • ^ : XOR 연산자, 비트 값이 서로 다르면 해당 비트 값은 1
  • ~ : NOT 연산자, 비트의 값을 반대로 바꾸는 연산자

2. Java Lang.

⭐️ 조건 : 돈이 총 46320원일 경우 1000원, 500원, 100원, 10원의 지폐 및 동전을 이용하여 아래의 항목들을 사용하여 "최소한의 코드"를 작성

  • 변수 : m
  • 연산자 : /, %
  • 괄호 : [, ], (, )
  • 정수 : 1000, 500, 100, 10
class HelloWorld {
    public static void main(String[] args) {
        int m = 4620;
        
        int a = ____________;
        int b = ____________;
        int c = ____________;
        int d = ____________;
        
        System.out.println(a); // 천원짜리     4장 출력
        System.out.println(b); // 오백원원짜리 1장 출력
        System.out.println(c); // 백원짜리     1장 출력
        System.out.println(d); // 십원짜리     2장 출력
    }
}

🖍
m / 1000
(m % 1000) / 500
(m % 500) / 100
(m % 100) / 10

3. C Lang. - 전역변수 / Pointer

⭐️ 조건 : 입력값은 홍길동, 김철수, 박영희 순서로 주어짐

#include <stdio.h>
#include <stdlib.h>

char n[30];
char *test(){
    printf("입력하세요: ");
    gets(n);
    return n;
}

int main() {
    char * test1;
    char * test2;
    char * test3;
    
    test1 = test();
    test2 = test();
    test3 = test();
    
    printf("%s\n", test1);
    printf("%s\n", test2);
    printf("%s", test3);
}

🖍
박영희
박영희
박영희

1️⃣ test1, test2, test3는 char형 변수를 가리키는 포인터 변수 선언.
2️⃣ test() 함수를 실행, test() 함수는 char * 타입으로 리턴하며, nchar * 타입으로 지정 됨.
3️⃣ gets() 함수를 통해 입력 받은 문자열을 전역 변수 n[30]에 저장. (배열명 == 배열의 주소값)
4️⃣ return n 에 의해 n의 주소값을 돌려줌.
5️⃣ test1에 n의 주소값을 저장.
6️⃣ test2 = test();의 구문에 의해 gets(n)의 함수가 다시 호출되면서 '홍길동'이라고 저장되어 있는 전역 변수 n[30]에 '김철수'를 덮어씀.
7️⃣ test2에 n의 주소값을 저장.
8️⃣ test3 = test();의 구문도 마찬가지로 test3에 n의 주소값을 저장.
9️⃣ ∴ test1, test2, test3 모두 같은 n의 주소값을 가지고 있으며, n은 마지막으로 저장된 '박영희' 값을 가지고 있음.

  • * : 자료형 뒤에 *를 붙이면 주소를 저장하는 포인터 변수,
    * 연산은 주소에 해당하는 값을 가리킴
  • & : 일반 변수명 뒤에 &를 붙이면 해당 변수의 주솟값
    *(&)과 같이 두 연산을 같이 쓰면 서로 상쇄 됌
  • gets() : scanf() 함수와 달리 문자열을 공백 단위로 끊지 않고 줄바꿈이 일어날 시 문자열 끝에 '\0'이 붙여, 공백을 포함한 문자열을 입력 받음.
  • getchar() : 문자를 입력 받음
  • puts() : 문자열(string)만을 출력하는 함수, 문자열 출력 후 줄 바꿈을 시전 함
  • putchar() : 문자를 출력

4. SQL - DML, INSERT

학번이름학년전공전화번호
240416푸바오4소프트웨어공학010-0000-0000

⭐️ 조건 : 문자열의 경우 작은 따옴표(') 사용

CREATE TABLE 학생(
	학번 int, 
    이름 varchar(20),
    학년 int,
    전공 varchar(30),
    전화번호 varchar(20),
)

🖍 INSERT INTO 학생(학번, 이름, 학년, 전공, 전화번호) VALUES(240416, '푸바오', 4, '소프트웨어공학', '010-0000-0000
');

  • DML : DB 사용자가 저장된 데이터를 실질적으로 관리하는데 사용되는 언어
  • INSERT : 테이블에서 새로운 튜플 삽입
    INSERT INTO 학생 VALUES('푸바오', 3);

5. C Lang. - switch 문

#include <stdio.h>

int main() {
    int n[3] = [73, 95, 82];
    int sum = 0;
    
    for(int i=0; i<3; i++){
        sum += n[i];
    }
    switch(sum/3){
        case 10:
        case 9: printf("A");
        case 8: printf("B");
        case 7:
        case 6: printf("C");
        default: printf("D");
    }
}

🖍 BCD
1️⃣ sum = 73 + 95 + 82 = 250.
2️⃣ sum / 3 = 250 / 3 = 8.
3️⃣ 8과 일치하는 값을 case문을 실행. ∴ B 출력.
4️⃣ break가 존재하지 않을 경우, 진입한 case부터 break를 만날 때까지 또는 switch문 끝까지 동작.
5️⃣ C 출력. D 출력.

  • break : 반복문이나 switch문 안에서 break가 나오면 블록을 벗어남
  • continue : 반복문에서 continue 가 나오면 continue 이후의 문장을 실행하지 않고 제어를 반복문의 처음으로 옮김
  • default : case의 어느 값도 만족하지 않으면 default로 진입해 명령문 실행


참고,
https://newbt.kr/시험/정보처리기사%20실기/2023년%202회/오소프트0506,
https://www.youtube.com/watch?v=czoWXdwEygc,
길벗알앤디. 『정보처리기사 실기 단기완성』. 길벗. 2023.

profile
사용자 경험 향상과 지속적인 성장을 추구하는 프론트엔드 개발자 ʚȉɞ

0개의 댓글