안녕하세요. 정보처리기사 실기 시험 기출문제 중 C언어 관련 문제들만 선별하여 정리한 자료입니다.
2020년 정보처리기사가 개편된 이후부터 최근 5개년 간의 기출문제를 유형별로 정리하였습니다.
시험을 준비하시는 분들께 도움이 되기를 바랍니다.
아래는 이 자료에 포함된 기출문제 회차 목록입니다.
- 2024년 1회 / 2회 / 3회
- 2023년 1회 / 2회 / 3회
- 2022년 1회 / 2회 / 3회
- 2021년 1회 / 2회 / 3회
- 2020년 1회 / 2회 / 3회
1. 2020년 1회차 (1)
int main(void)
{
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]);
}
return 0;
}
답) 50 75 85 95 100
2. 2020년 3회차 (1)
#include <stdio.h>
int r1()
{
return 4;
}
int r10()
{
return 30 + r1();
}
int r100()
{
return 200 + r10();
}
int main()
{
printf("%d\n", r100());
return 0;
}
답) 234
3. 2020년 3회차 (2)
#include <stdio.h>
int main(void)
{
int i = 0, c = 1; // c를 1로 초기화하여 곱셈 가능
while (i < 10)
{
i++;
c *= i;
}
printf("%d", c);
return 0;
}
답) 3628800
4. 2020년 4회차 (1)
#include <stdio.h>
int main(void)
{
char *p = "KOREA";
printf("%s\n", p); // 전체 문자열 출력: KOREA
printf("%s\n", p + 3); // 4번째 문자부터 출력: EA
printf("%c\n", *p); // 첫 문자: K
printf("%c\n", *(p + 3)); // 4번째 문자: E
printf("%c\n", *(p + 2)); // 3번째 문자: R
return 0;
}
답)
KOREA
EA
K
E
R
5. 2021년 1회차 (1)
#include <stdio.h>
struct good
{
char name[10];
int age;
};
int main(void)
{
struct good s[] = {
"Kim", 28,
"Lee", 38,
"Seo", 50,
"Park", 35
};
struct good *p;
p = s;
p++; // 포인터를 다음 구조체로 이동
printf("%s\n", p->name); // "Lee"
printf("%d\n", p->age); // 38
return 0;
}
답)
Lee
38
6. 2021년 2회차 (1)
#include <stdio.h>
int main()
{
int arr[3];
int s = 0;
*(arr + 0) = 1;
arr[1] = *(arr + 0) + 2;
arr[2] = *arr + 3;
for (int i = 0; i < 3; i++)
{
s = s + arr[i];
}
printf("%d", s); // 결과 출력
return 0;
}
답) 8
7. 2021년 2회차 (2)
#include <stdio.h>
int mp(int base, int exp); // 함수 원형 선언
int main()
{
int res;
res = mp(2, 10);
printf("%d", res);
return 0;
}
int mp(int base, int exp)
{
int res = 1;
for(int i = 0; i < exp; i++)
{
res = res * base;
}
return res;
}
답) 1024
8.2021년 3회차 (1)
#include <stdio.h>
struct jsu
{
char name[12];
int os, db, hab, hhab;
};
int main()
{
struct jsu st[3] = {{"데이터1", 95, 88}, {"데이터2", 84, 91}, {"데이터3", 86, 75}};
struct jsu* p;
p = &st[0];
(p + 1)->hab = (p + 1)->os + (p + 2)->db;
(p + 1)->hhab = (p+1)->hab + p->os + p->db;
printf("%d\n", (p+1)->hab + (p+1)->hhab);
}
답) 501
9. 2021년 3회차 (2)
int main()
{
int *arr[3];
int a = 12, b = 24, c = 36;
arr[0] = &a;
arr[1] = &b;
arr[2] = &c;
printf("%d\n", *arr[1] + **arr + 1);
}
답) 37
10. 2022년 1회차 (1)
int isPrime(int number)
{
int i;
for (i=2; i<number; i++)
{
if (number % i == 0) return 0;
}
return 1;
}
int main(void)
{
int number = 13195, max_div=0, i;
for (i=2; i<number; i++)
if (isPrime(i) == 1 && number % i == 0)
max_div = i;
printf("%d", max_div);
return 0;
}
답) 29
11. 2022년 1회차 (2)
int main()
{
int number = 1234;
int div = 10;
int result = 0;
while (number ( 1 ) 0)
{
result = result * div;
result = result + number ( 2 ) div;
number = number ( 3 ) div;
}
printf("%d", result);
return 0;
}
답)
(1) != or >
(2) %
(3) /
12. 2022년 1회차 (3)
int func(int a)
{
if (a <= 1) return 1;
return a * func(a - 1);
}
int main()
{
int a;
scanf("%d", &a);
printf("%d", func(a));
}
답) 5
13. 2022년 1회차 (4)
int func(int a)
{
if (a <= 1) return 1;
return a * func(a - 1);
}
int main()
{
int a;
scanf("%d", &a);
printf("%d", func(a));
}
답) 120
14. 2022년 2회차 (1)
int main(int argc, char *argv[])
{
int a[4] = {0, 2, 4, 8};
int b[3] = {};
int i = 1;
int sum = 0;
int *p1;
for (i; i < 4; i++)
{
p1 = a + i;
b[i-1] = p1 - a[i-1];
sum = sum + b[i-1] + a[i];
}
printf("%d", sum);
return 0;
}
답) 22
15. 2022년 2회차 (2)
#include <stdio.h>
int len(char* p); // 함수 원형
int main()
{
char* p1 = "2022";
char* p2 = "202207";
int a = len(p1);
int b = len(p2);
printf("%d", a + b);
return 0;
}
int len(char* p)
{
int r = 0;
while (*p != '\0')
{
p++;
r++;
}
return r;
}
답) 10
16. 2022년 3회차 (3)
#include <stdio.h>
int calculate(int w, int h, int j, int i) {
if (i >= 0 && i < h && j >= 0 && j < w) return 1;
return 0;
}
int main(void) {
int field[4][4] = {
{0, 1, 0, 1},
{0, 0, 0, 1},
{1, 1, 1, 0},
{0, 1, 1, 1}
};
int mines[4][4] = {0}; // 초기값 모두 0
int w = 4, h = 4;
int x, y, i, j;
for (y = 0; y < h; y++) {
for (x = 0; x < w; x++) {
if (field[y][x] == 0) continue;
// 주변 8방향 순회
for (i = y - 1; i <= y + 1; i++) {
for (j = x - 1; j <= x + 1; j++) {
if (calculate(w, h, j, i) && !(i == y && j == x)) {
mines[i][j] += 1;
}
}
}
}
}
// 결과 출력
for (y = 0; y < h; y++) {
for (x = 0; x < w; x++) {
printf("%d ", mines[y][x]);
}
printf("\n");
}
return 0;
}
답)
1 1 3 2
3 4 5 3
3 5 6 4
3 5 5 3
17. 2023년 1회차 (1)
int main(){
char a[] = "Art";
char* p = NULL;
p = a;
printf("%s\n", a);
printf("%c\n", *p);
printf("%c\n", *a);
printf("%s\n", p);
for(int i = 0; a[i] != '\0'; i++)
printf("%c", a[i]);
}
답)
Art
A
A
Art
Art
18. 2023년 1회차 (2)
int main(){
char* a = "qwer";
char* b = "qwtety";
for(int i = 0; a[i] != '\0' ; i++){
for(int j = 0; b[j] != '\0'; j++){
if(a[i] == b[j]) printf("%c", a[i]);
}
}
}
답) qwe
19. 2023년 2회차 (1)
조건 : 입력값이 54321일 경우 출력값이 43215여야 한다.
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]
20. 2023년 2회차 (2)
조건 : 홍길동, 김철수, 박영희 순서로 주어진다.
#include <stdio.h>
#include <string.h>
char n[30];
char *test() {
printf("입력하세요 : ");
fgets(n, sizeof(n), stdin);
// 개행 문자 제거 (fgets는 개행까지 읽어옴)
n[strcspn(n, "\n")] = '\0';
return n;
}
int main() {
char *test1;
char *test2;
char *test3;
test1 = test(); // 첫 번째 입력
test2 = test(); // 두 번째 입력 (n 덮어쓰기)
test3 = test(); // 세 번째 입력 (n 덮어쓰기)
printf("%s\n", test1);
printf("%s\n", test2);
printf("%s", test3);
return 0;
}
답)
박영희
박영희
박영희
21. 2023년 2회차 (3)
void main(){
int n[3] = {73, 95, 82};
int sum = 0;
for(int i=0;i<3;i++){
sum += n[i];
}
switch(sum/30){
case 10:
case 9: printf("A");
case 8: printf("B");
case 7:
case 6: printf("C");
default: printf("D");
}
}
답) BCD
22.2023년 2회차 (4)
#include <stdio.h>
#define MAX_SIZE 10
int isWhat[MAX_SIZE];
int point = -1;
int isEmpty() {
return point == -1;
}
int isFull() {
return point == MAX_SIZE - 1;
}
void into(int num) {
if (isFull()) {
printf("Full\n");
} else {
isWhat[++point] = num;
}
}
int take() {
if (isEmpty()) {
printf("Empty\n");
return -1; // 에러 상황에 대한 반환값
} else {
return isWhat[point--];
}
}
int main() {
int e;
into(5); into(2);
while (!isEmpty()) {
printf("%d ", take());
into(4); into(1); printf("%d ", take());
into(3); printf("%d ", take()); printf("%d ", take());
into(6); printf("%d ", take()); printf("%d ", take());
}
return 0;
}
답) 213465
23. 2023년 3회차 (1)
#include <stdio.h>
#include <stdlib.h>
typedef struct Data {
char c;
int *numPtr;
} Data;
int main() {
int num = 10;
Data d1;
Data *d2 = malloc(sizeof(Data)); // struct Data도 OK지만 typedef 썼으니 그냥 Data로
d1.numPtr = #
d2 ( 빈칸 ) numPtr = #
printf("%d\n", *d1.numPtr); // → 10
printf("%d\n", *d2->numPtr); // → 10
free(d2);
return 0;
}
출력결과
10
10
답) →
24. 2023년 3회차 (2)
#include <stdio.h>
int f(int n) {
if (n <= 1) return 1;
else return n * f(n - 1);
}
int main() {
printf("%d", f(7)); // 7! = 5040
return 0;
}
답) 5040
25. 2023년 3회차 (3)
#include <stdio.h>
int main() {
char* p = "KOREA";
printf("%s\n", p); // 전체 문자열 출력: "KOREA"
printf("%s\n", p + 1); // 2번째 문자부터 출력: "OREA"
printf("%c\n", *p); // 첫 문자 출력: 'K'
printf("%c\n", *(p + 3)); // 4번째 문자 출력: 'E'
printf("%c\n", *p + 4); // 'K'의 아스키값(75) + 4 = 79 → 문자 'O'
return 0;
}
답)
KOREA
OREA
K
E
O
26.2024년 1회차 (1)
#include <stdio.h>
int main() {
int v1 = 0, v2 = 35, v3 = 29;
if(v1 > v2 ? v2 : v1) {
v2 = v2 << 2;
}else{
v3 = v3 << 2;
}
printf("%d", v2+v3);
답) 151
27.2024년 1회차 (2)
#include <stdio.h>
#include <string.h>
void reverse(char* str){
int len = strlen(str);
char temp;
char*p1 = str;
char*p2 = str + len - 1;
while(p1<p2){
temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
}
int main(int argc, char* argv[]){
char str[100] = "ABCDEFGH";
reverse(str);
int len = strlen(str);
for(int i=1; i<len; i+=2){
printf("%c",str[i]);
}
printf("\n");
return 0;
}
답) GECA
28. 2024년 1회차 (3)
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int accNum;
double bal;
} BankAcc;
// 거듭제곱 계산 함수 (복리 계산용)
double calcPower(double base, int year) {
double r = 1.0;
for (int i = 0; i < year; i++) {
r *= base;
}
return r;
}
// 계좌 초기화 함수
void initAcc(BankAcc *acc, int accNumber, double balance) {
acc->accNum = accNumber;
acc->bal = balance;
}
// 입출금 처리 함수
void transact(BankAcc *acc, double *amount) {
if (*amount > 0 && *amount < acc->bal) {
acc->bal -= *amount; // 출금
} else {
acc->bal += *amount; // 입금
}
}
// 복리 이자 적용 함수 (3년간 연 10%)
void applyInterest(BankAcc *acc) {
acc->bal *= calcPower(1 + 0.1, 3); // 1.1^3 = 약 1.331
}
int main() {
BankAcc myAcc;
initAcc(&myAcc, 9981, 2200.0);
double amount = 100.0;
transact(&myAcc, &amount); // 100 출금
applyInterest(&myAcc); // 복리 적용
printf("%d and %.2f\n", myAcc.accNum, myAcc.bal);
return 0;
}
답) 9981 and 2795.10
29. 2024년 1회차 (4)
#include <stdio.h>
#include <ctype.h>
int main() {
char* p = "It is 8";
char result[100];
int i;
for (i = 0; p[i] != '\0'; i++) {
if (isupper(p[i]))
result[i] = (p[i] - 'A' + 5) % 26 + 'A'; //
else if (islower(p[i]))
result[i] = (p[i] - 'a' + 10) % 26 + 'a';
else if (isdigit(p[i]))
result[i] = (p[i] - '0' + 3) % 10 + '0';
else
result[i] = p[i];
}
result[i] = '\0';
printf("%s\n", result);
return 0;
}
답) Nd s c 1
.
30. 2024년 2회차 (1)
#include <stdio.h>
int main() {
int arr[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int* parr[2] = {arr[1], arr[2]};
printf("%d", parr[1][1] + *(parr[1]+2) + **parr);
return 0;
}
답)21
31. 2024년 2회차 (2)
#include <stdio.h>
#include <string.h>
void sumFn(char* d, const char* s) {
while (*s) {
*d = *s;
d++;
s++;
}
*d = '\0';
}
int main() {
const char* str1 = "first";
char str2[50] = "teststring";
int result=0;
sumFn(str2, str1);
for (int i = 0; str2[i] != '\0'; i++) {
result += i;
}
printf("%d", result);
return 0;
}
답)10
32.2024년 2회차 (3)
#include <stdio.h>
void swap(int a, int b) {
int t = a;
a = b;
b = t;
}
int main() {
int a = 11;
int b = 19;
swap(a, b);
switch(a) {
case 1:
b += 1;
case 11:
b += 2;
default:
b += 3;
break;
}
printf("%d", a-b);
}
답) -13
33. 2024년 2회차 (4)
#include <stdio.h>
struct node {
int n1;
struct node *n2;
};
int main() {
struct node a = {10, NULL};
struct node b = {20, NULL};
struct node c = {30, NULL};
struct node *head = &a;
a.n2 = &b;
b.n2 = &c;
printf("%d\n", head->n2->n1);
return 0;
}
답) 20
34. 2024년 3회차 (1)
#include <stdio.h>
int func(){
static int x =0;
x+=2;
return x;
}
int main(){
int x = 1;
int sum=0;
for(int i=0;i<4;i++) {
x++;
sum+=func();
}
printf("%d", sum);
return 0;
}
답)20
35. 2024년 3회차 (2)
#include <stdio.h>
struct Node {
int value;
struct Node* next;
};
void func(struct Node* node){
while(node != NULL && node->next != NULL){
int t = node->value;
node->value = node->next->value;
node->next->value = t;
node = node->next->next;
}
}
int main(){
struct Node n1 = {1, NULL};
struct Node n2 = {2, NULL};
struct Node n3 = {3, NULL};
n1.next = &n3;
n3.next = &n2;
func(&n1);
struct Node* current = &n1;
while(current != NULL){
printf("%d", current->value);
current = current->next;
}
return 0;
}
답) 312
36. 2024년 3회차 (3)
#include <stdio.h>
void func(int** arr, int size){
for(int i=0; i<size; i++){
*(*arr + i) = (*(*arr+i) + i) % size;
}
}
int main(){
int arr[] = {3,1, 4, 1, 5};
int* p = arr;
int** pp = &p;
int num = 6;
func(pp, 5);
num = arr[2];
printf("%d", num);
return 0;
}
답)1
'정보처리기사' 카테고리의 다른 글
정보처리기사 실기 Python 파이썬 기출문제 모음 (최근 5개년) (0) | 2025.04.18 |
---|---|
정보처리기사 실기 JAVA 기출문제 모음 (최근 5개년) (1) | 2025.04.18 |
정보처리기사 실기 프로그래밍 문제 SQL 기출 풀이 모음 (10) | 2022.10.15 |
정보처리기사 실기 프로그래밍 문제 파이썬 기출 풀이 모음 (8) | 2022.10.14 |
정보처리기사 실기 프로그래밍 문제 Java 기출 풀이 모음 (3) | 2022.10.14 |