프로그래밍은 이론 공부가 별 의미가 없어서 바로 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 |