
[20년 1회]
12. 다음은 C언어 소스 코드이다. 출력 결과를 쓰시오.
#include <stdio.h>
void main() {
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]);
}
}
| 답: 50758595100 void main() { int i, j; int temp; int a[5] = {75, 95, 85, 100, 50}; → 변수 정의 → temp는 임시로 쓰는 변수다. 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]); → i의 값을 하나씩 대입해서 출력해라. 그러므로 50 75 85 95 100 으로 정렬된다. (띄어쓰기 없음) |
[21년 2회]
18. 다음은 C언어 문제이다. 출력값을 작성하시오.
int main() {
int ary[3];
int s = 0;
*(ary + 0) = 1;
ary[1] = *(ary + 0) + 2;
ary[2] = *ary + 3;
for (int i = 0; i < 3; i++) {
s = s + ary[i];
}
print("%d", s);
}
| 답: 8 int main() { int ary[3]; int s = 0; → 변수 정의 ary[3] : 3개의 배열을 가진 ary를 만든다. *(ary + 0) = 1; *(ary + 0) : ary + 0 은 ary[0] 을 말하며, ary[0] 의 해당 주소(*)를 말한다. ary[0]의 주소에 1을 넣어라. 즉, ary[0] 은 1 값이 들어간다. ary[1] = *(ary + 0) + 2; *(ary + 0) : ary[0]의 주소에 있는 값에 +2를 해라. 1+2 = 3 가 된다. 즉, ary[1] 는 3 값이 들어간다. ary[2] = *ary + 3; *ary + 3 : ary의 주소의 첫 값은 ary[0] 이므로, 여기에 +3을 해라 1+3 = 4 즉, ary[2] 는 3 값이 들어간다. 아래와 같은 형태가 된다. ![]() for (int i = 0; i < 3; i++) { s = s + ary[i]; int i = 0 : i 의 초기값 0 i < 3 : 0부터 3까지(0~2) 반복수행해라. i++ : 반복할 때마다 i 값은 1 증가한다. s = s + ary[i]; ![]() print("%d", s); → s는 8일 때 반복문 종료되므로 8이 출력된다. |
[22년 2회]
16. 다음 C언어 코드에서 알맞는 출력값을 작성하시오.
#include <stdio.h>
int main(int argc, char *argv[]) {
int a[4] = {0, 2, 4, 8};
int b[3] = {0};
int i = 1;
int sum = 0;
int *p1;
for (i = 1; i < 4; i++) {
p1 = a + i;
b[i - 1] = *p1 - a[i - 1];
sum = sum + b[i - 1] + a[i];
}
printf("%d\n", sum);
return 0;
}
| 답: 22 #include <stdio.h> int main(int argc, char *argv[]) { int a[4] = {0, 2, 4, 8}; int b[3] = {0}; int i = 1; int sum = 0; int *p1; → 변수 정의 for (i = 1; i < 4; i++) { p1 = a + i; b[i - 1] = *p1 - a[i - 1]; sum = sum + b[i - 1] + a[i]; ![]() ※ p1 : 시작 지점의 방 번호(주소), 강남구 역삼동 100번지라는 위치 정보 ※ *p1 : 그 주소에 살고 있는 사람(값), 100번지 문을 열고 들어갔을 때 만나는 데이터 → 그렇기 때문에 p1 의 값을 구했어도, *p1을 해야, 그 안에 있는 값 하나를 호출할 수 있다. printf("%d\n", sum); return 0; → sum 값은 22 |
[23년 2회]
1. 다음은 C언어 코드의 문제이다. 보기의 조건에 맞도록 괄호안에 알맞은 코드를 작성하시오.
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;
}
[보기] 입력값이 54321일 경우 출력값이 43215로 출력되어야 한다.
| 답: n[(i+1) % 5] scanf 로 입력된 54321 이 'n배열(&n[i])로 들어감. 결과값이 43215로 한칸씩 밀렸으므로, 배열의 위치값을 바꿔주는 식이 필요함. ![]() 배열의 시작 위치를 한 칸 옆(i + 1)으로 옮기고, 배열의 크기(5)로 나눈 나머지를 구해서 인덱스 범위를 유지 ![]() |
[22년 3회]
1. 아래는 C언어의 2차원 배열 형태이다. field의 경우 2차원 배열 형태는 예시처럼 출력되므로, 이를 참고하여 mines의 2차원 배열 형태를 작성하시오.
void main{
field {{0,1,0,1},{0,0,0,1},{1,1,1,0},{0,1,1,1}};
mines {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
int w = 4, h = 4;
for(y=0; y<h; y++) {
for(x=0; x<w; x++) {
if(field[y][x] == 0) continue;
for(i=y-1; i<=y+1; i++) {
for(j=x-1; j<=x+1; j++) {
if(calculate(w,h,j,i) == 1) {
mines[i][j] += 1;
}
}
}
}
}
for(y=0; y<h; y++){
for(x=0; x<w; x++)
printf("%d", mines[y][x]);
printf("\n");
}
}
int calculate(w,h,j,i) {
if (i >= 0 && i < h && j >= 0 && j < w) return 1;
return 0;
}
| 답: 1 1 3 2 3 4 5 3 3 5 6 4 3 5 5 3 지뢰 찾기 매커니즘을 이해해야 풀 수 있다. |
[24년 2회]
13. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
#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 int main() { int arr[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; ![]() int* parr[2] = {arr[1], arr[2]}; * parr[2] : 주소값을 담는 바구니 2개를 만듦 int* parr[2] = {arr[1], arr[2]} : parr[0] = arr[1]의 시작 주소를 가짐, parr[1] = arr[2]의 시작주소를 가짐 ![]() printf("%d", parr[1][1] + *(parr[1] + 2) + **parr); parr[1][1] : parr[1] 은 arr[2]의 시작주소. 거기서 [1]번 인덱스를 찾아라 ![]() *(parr[1] + 2) : parr[1] 은 arr[2]의 시작주소. 시작주소에 +2를 하고, 그 주소에 있는 값(*)을 가져와라 ![]() parr : 포인터 배열 그 자체의 주소. parr = parr[0]이 있는 곳을 가리킴 *parr : parr[0] 에 담긴 주소값인 arr[1]의 주소를 꺼내라 (※parr 이 arr의 주소를 지정했기 때문) **parr : 그 주소로 직접 찾아가서 값을 꺼내라. arr[1][0] ![]() printf("%d", parr[1][1] + *(parr[1] + 2) + **parr) : 8 + 9 + 4 |
[25년 1회]
10. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
#include <stdio.h>
char Data[5] = { 'B', 'A', 'D', 'E' };
char c;
int main() {
int i, temp, temp2;
c = 'C';
printf("%d\n", Data[3] - Data[1]);
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]);
}
return 0;
}
| 답: 4 BACDE ![]() |
[24년 3회]
16. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
#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 = 10;
func(pp, 5);
num = arr[2]
printf("%d", num);
return 0;
}
답: 1![]() |
'자격증 요약 > 정보처리기사' 카테고리의 다른 글
| [정보처리기사 실기] C언어 기출 유형_3 (구조체) (0) | 2026.04.08 |
|---|---|
| [정보처리기사 실기] C언어 기출 유형_2 (포인터, 문자열) (0) | 2026.04.08 |
| [정보처리기사 실기] 자바(JAVA) 기출 유형_5 (기타 주요 문법) (0) | 2026.04.08 |
| [정보처리기사 실기] 자바(JAVA) 기출 유형_4 (정적 멤버 static, 싱글톤) (0) | 2026.04.07 |
| [정보처리기사 실기] 자바(JAVA) 기출 유형_3 (상속, 오버라이딩, 생성자) (0) | 2026.04.07 |













