이 편은 실제 기출 문제가 아닙니다. 독학사 2단계 C프로그래밍 관련 reference/ 기출 원문은 확보되어 있지 않습니다. 아래 22개 문항은 국가평생교육진흥원 독학학위제 독학사 2단계 C프로그래밍 출제기준(평가영역) 전 범위(자료형·연산자·입출력, 조건/반복, 함수, 배열·문자열, 포인터, 구조체·공용체·열거형, 선행처리기, 파일 입출력, 동적 메모리)를 근거로 새로 구성한 실전형 모의 문항입니다. 실제 시험의 문장·코드·보기 배열과 다를 수 있습니다.
회차별 실제 출제 문항 수·배점·시간은 매 공고마다 다를 수 있으므로, 응시 전 국가평생교육진흥원 공고 원문을 반드시 확인하십시오.
이 편이 다루는 범위와 접근법
이 편은 0622편에서 다룬 전 범위를 한 회분 모의고사 형태로 종합 점검합니다. 0609편의 자료형·연산자·제어문, 1013편의 함수·배열·문자열·포인터, 1417편의 구조체·전처리기·파일·동적 메모리, 19~20편의 표준 라이브러리, 21편의 오류 분석까지 고르게 배분했습니다. 난이도는 실전 시험 평균 수준으로 맞추었고, 25편처럼 한 영역에 집중하기보다 짧은 코드를 빠르고 정확하게 추적하는 능력을 점검하는 데 초점을 둡니다.
실전처럼 풀려면 문제마다 다음 세 단계를 거치십시오. ① 코드에 등장하는 변수를 모두 적고 초기값을 확인한다. ② 한 줄씩 실행하며 값이 바뀌는 지점마다 표에 기록한다. ③ 마지막 출력문이 그 시점의 값을 정확히 반영하는지 확인한다. 특히 정수 나눗셈, 연산자 우선순위, 매크로 치환, 배열의 포인터 붕괴(decay)처럼 “겉보기 예상”과 “실제 결과”가 달라지는 지점은 이 모의고사에서 반복적으로 다룹니다. 틀린 문항은 문제 아래 괄호로 표시된 관련 편으로 돌아가 개념을 다시 확인하십시오.
마무리 복습
1~3번 — 프로그램 구조·자료형·형 변환 (06, 07편)
#include <stdio.h>
int main(void) {
int a = 7;
int b = 2;
float c = a / b;
float d = (float)a / b;
printf("%.1f %.1f\n", c, d);
return 0;
}4~6번 — 연산자와 표현식 (08편)
#include <stdio.h>
int main(void) {
int result = 2 + 3 * 4 - 6 / 2;
printf("%d\n", result);
return 0;
}#include <stdio.h>
int main(void) {
int i = 5;
int a = i++;
int b = ++i;
printf("%d %d %d\n", a, b, i);
return 0;
}7~9번 — 조건문·반복문 (09편)
#include <stdio.h>
int main(void) {
int score = 75;
char grade;
if (score >= 90) grade = 'A';
else if (score >= 80) grade = 'B';
else if (score >= 70) grade = 'C';
else grade = 'F';
printf("%c\n", grade);
return 0;
}#include <stdio.h>
int main(void) {
int x = 2;
int sum = 0;
switch (x) {
case 1:
sum += 1;
case 2:
sum += 2;
case 3:
sum += 3;
break;
default:
sum += 100;
}
printf("%d\n", sum);
return 0;
}#include <stdio.h>
int main(void) {
int sum = 0;
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) continue;
if (i > 7) break;
sum += i;
}
printf("%d\n", sum);
return 0;
}10~12번 — 함수와 변수의 범위 (10편)
#include <stdio.h>
void addTen(int x) {
x = x + 10;
}
int main(void) {
int n = 5;
addTen(n);
printf("%d\n", n);
return 0;
}#include <stdio.h>
int x = 100;
void changeX(void) {
int x = 5;
x = x + 1;
}
int main(void) {
changeX();
printf("%d\n", x);
return 0;
}13~15번 — 배열·문자열·포인터 기초 (11, 12편)
#include <stdio.h>
int main(void) {
int arr[5] = {10, 20, 30, 40, 50};
int sum = 0;
for (int i = 1; i < 4; i++) {
sum += arr[i];
}
printf("%d\n", sum);
return 0;
}#include <stdio.h>
#include <string.h>
int main(void) {
char str[20] = "Hello";
strcat(str, "World");
printf("%d\n", (int)strlen(str));
return 0;
}#include <stdio.h>
int main(void) {
int arr[4] = {5, 10, 15, 20};
printf("%d %d\n", *(arr + 2), *arr + 2);
return 0;
}16~18번 — 구조체·전처리기 (14, 15편)
#include <stdio.h>
struct Book {
char title[20];
int price;
};
int main(void) {
struct Book b1 = {"C Programming", 15000};
struct Book b2 = b1;
b2.price = 20000;
printf("%d %d\n", b1.price, b2.price);
return 0;
}#include <stdio.h>
#define SQUARE(x) x * x
int main(void) {
int result = SQUARE(2 + 3);
printf("%d\n", result);
return 0;
}19~20번 — 파일 입출력·동적 메모리 개관 (16, 17편)
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int *p = (int *)malloc(3 * sizeof(int));
p[0] = 1;
p[1] = 2;
p[2] = 3;
printf("%d\n", p[0] + p[1] + p[2]);
free(p);
return 0;
}21~22번 — 표준 라이브러리·오류 분석 (19, 20, 21편)
#include <stdio.h>
#include <string.h>
int main(void) {
char a[10] = "apple";
char b[10] = "apple";
strcpy(b, "banana");
printf("%d\n", strcmp(a, b));
return 0;
}#include <stdio.h>
int main(void)
{
int a = 10
printf("%d\n", a);
return 0;
}참고 자료
- 국가평생교육진흥원 독학학위제: https://bdes.nile.or.kr
- cppreference — C 표준 라이브러리·문법 레퍼런스: https://en.cppreference.com/w/c