25-1아래 C 프로그램을 실행했을 때 화면에 찍히는 값을 적으시오.#… | 2025년 정보처리기사실기 1회차 기출문제 상세 페이지
11
25-1
아래 C 프로그램을 실행했을 때 화면에 찍히는 값을 적으시오.
#include <stdio.h>
#include <stdlib.h>
void fill(int **g, const int *src, int r, int c) {
for (int k = 0; k < r * c; k++)
g[k / c][(k + 1) % c] = src[k];
}
int main(void) {
int r = 2, c = 4, acc = 0;
int src[] = {6, 1, 9, 3, 7, 2, 8, 4};
int **g = (int **)malloc(sizeof(int *) * r);
for (int i = 0; i < r; i++)
g[i] = (int *)malloc(sizeof(int) * c);
fill(g, src, r, c);
for (int i = 0; i < r; i++)
for (int j = 0; j < c; j++)
acc += ((i + j) % 2 == 0) ? g[i][j] : -g[i][j];
for (int i = 0; i < r; i++)
free(g[i]);
free(g);
printf("%d", acc);
return 0;
}해설
-2
[해설]
fill은 k번째 원소를 행 k/c, 열 (k+1)%c에 넣으므로 각 행 안에서 열이 한 칸씩 오른쪽으로 밀려 들어간다.
- 0행: src[0..3] = 6, 1, 9, 3 → 열 1, 2, 3, 0 → [3, 6, 1, 9]
- 1행: src[4..7] = 7, 2, 8, 4 → 열 1, 2, 3, 0 → [4, 7, 2, 8]
합산은 (i+j)가 짝수면 더하고 홀수면 뺀다(체크무늬 부호).
- 0행: +3 −6 +1 −9 = −11
- 1행: −4 +7 −2 +8 = 9
합계는 −11 + 9 = -2다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.