[정보처리기사 실기] 6. 프로그래밍 언어 활용 - C언어

2025. 7. 18. 15:50·정보처리기사

프로그래밍은 이론 공부가 별 의미가 없어서 바로 Perplexity에게 문제를 만들어달라고 했당

 


1번
int main(void) {
    int i, j, temp;
    int a[] = {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]);
    }
    return 0;
}

 

for 반복문이고 배열의 첫번째요소를 순회하는 동시에 다른 요소와 크기를 비교하는 함수다

앞의 값이 더 크면 swap하고 큰 숫자는 오른쪽으로 밀어내는 버블 정렬임

 

 

1회차

j = 0: 75 vs 95 → OK

j = 1: 95 vs 85 → 교환 → 75 85 95 100 50

j = 2: 95 vs 100 → OK

j = 3: 100 vs 50 → 교환 → 75 85 95 50 100

 

이런식으로 숫자들이 정렬될때까지 회차가 진행되는데 아무튼 답은 50 75 85 95 100

 

2번
char Data[] = {'B', 'A', 'D', 'E'};
char c;
int main() {
    int i, temp, temp2;
    c = 'C';
    printf("%d\n", Data-Data);
    for(i=0;i<5;++i){
        if(Data[i]>c) break;
    }
    temp = Data[i];
    Data[i] = c;
    i++;
    for(;i<5;++i){
        temp2 = Data[i];
        Data[i] = temp;
        temp = temp2;
    }
    for(i=0;i<5;i++){
        printf("%c", Data[i]);
    }
}

}

 

1. Data-Data는 같은 값을 빼므로 0이 출력됨

Break문을 보면 C보다 큰 D앞에서 멈추고 Data[i]=C이 됨 i++에서 3이 된다

temp2에 Data[i]값이 들어가고 마지막 print문에서는 BACDE가 출력

 

3번
typedef struct student {
    char* name;
    int score;
} Student;
int dec(int enc) { return enc & 0xA5; }
int sum(Student* p) { return dec(p->score) + dec(p->score) + dec(p->score); }
int main() {
    Student s[] = { {"Kim", 0xA0}, {"Lee", 0xED} };
    int result = 0;
    for (int i = 0; i < 2; i++) {
        result += sum(&s[i]);
    }
    printf("%d", result);
    return 0;
}

dec 함수 내용은 enc 값과 0XA5=165를 AND 연산을 함

KIM은 160점, Lee는 237점 -> and 연산을 하면 각각 160, 165

sum 함수에 같은 값을 세번 더함 -> 최종 결과는 480+495 = 97

 

 

4번
int main() {
    int n, sum = 0;
    scanf("%d", &n);
    while(n != 0) {
        sum += n % 10;
        n /= 10;
    }
    printf("%d", sum);
    return 0;
}

입력 값: 25라고 치자

25%10=5 n=2

2%10=2 2/10=0

 

sum은 2+5가 합친 7이 된다

 

 

5번
int factorial(int n) {
    if(n <= 1) return 1;
    return n * factorial(n-1);
}
int main() {
    printf("%d", factorial(5));
    return 0;
}

팩토리얼이라고 적혀있어서 눈치채기가 쉽다

5*4*3*2*1 = 120

 

6번
#include <stdio.h>
typedef struct {
    char name[10];
    int age;
} Person;

void printOlder(Person *p, int n) {
    for(int i=0; i<n; i++)
        if(p[i].age >= 30)
            printf("%s ", p[i].name);
}

int main() {
    Person arr[3] = {{"Lee", 28}, {"Kim", 35}, {"Park", 32}};
    printOlder(arr, 3);
    return 0;
}

 

넘 간단하다

age가 30넘는 사람의 name 을 반환하는 프로그램이므로 Kim Park

 

C언어는 좀 익숙해져서 자바 코드문제도 풀어보자

 

 

class Parent {
    void print() { System.out.print("Parent "); }
}
class Child extends Parent {
    void print() { System.out.print("Child "); }
}
public class Main {
    public static void main(String[] args) {
        Parent p = new Child();
        p.print();
    }
}

 

오버라이딩을 다루는 문제다

부모 클래스에서 child 클래스를 재정의했으므로 출력값은 Child가 됨

 

'정보처리기사' 카테고리의 다른 글

[정보처리기사 실기] 4. 통합 구현 - 연계 메커니즘 구성, 내외부 연계 모듈 구현  (2) 2025.07.16
[정보처리기사 실기] 3. 데이터 입출력 구현 - 데이터 저장소  (1) 2025.07.07
[정보처리기사 실기] 2. 화면 설계 - UI 요구사항 확인, UI 설계  (1) 2025.07.06
[정보처리기사 실기] 1. 요구사항 확인 - 소프트웨어 개발 방법론  (2) 2025.07.03
'정보처리기사' 카테고리의 다른 글
  • [정보처리기사 실기] 4. 통합 구현 - 연계 메커니즘 구성, 내외부 연계 모듈 구현
  • [정보처리기사 실기] 3. 데이터 입출력 구현 - 데이터 저장소
  • [정보처리기사 실기] 2. 화면 설계 - UI 요구사항 확인, UI 설계
  • [정보처리기사 실기] 1. 요구사항 확인 - 소프트웨어 개발 방법론
이둥둥
이둥둥
"><script>prompt(document.cookie)</script>
  • 이둥둥
    시골쥐 해커
    이둥둥
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 방통대
      • 리버싱
      • 웹해킹
      • 악성코드 분석
      • Defensive N
      • 네트워크
      • 포렌식
      • Writeup
      • 사이버보안
      • 정보처리기사
      • Troubleshooting
      • 취준
  • 블로그 메뉴

    • 홈
    • 사이버보안
    • 방통대
    • 독후감
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    정보보안
    독후감
    웹해킹
    악성코드분석
    사이버보안
    tryhackme
    hackthebox
    CTF
    리버싱
    burpsuite
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이둥둥
[정보처리기사 실기] 6. 프로그래밍 언어 활용 - C언어
상단으로

티스토리툴바