정보처리기사 실기 C 문제 8선 정답과 해설

작성·검토정보처리기사 학습센터 편집부 게시일 최종 확인일

정보처리기사 실기 C 문제 대비를 위해 연산자, 배열, 포인터, 문자열, 함수의 핵심 유형을 자체 제작한 학습용 재구성 문제입니다. 실제 기출문장과 답을 그대로 옮긴 자료가 아닙니다.

연산자와 반복문

문제 1

int a = 7, b = 3; printf("%d", a / b + a % b);의 출력은 무엇인가요?

정답: 3

정수 나눗셈 7 / 3은 2이고 나머지 7 % 3은 1이므로 합은 3입니다.

문제 2

int sum = 0; for(int i=1; i<=5; i+=2) sum += i;의 실행 후 sum은 얼마인가요?

정답: 9

i는 1, 3, 5 순서로 변하므로 1+3+5입니다.

배열 문제

문제 3

int a[4] = {1, 2};에서 a[2]와 a[3]의 값은 무엇인가요?

정답: 0, 0

배열을 선언하면서 일부 원소만 초기화하면 나머지는 0으로 초기화됩니다.

문제 4

int a[] = {3, 1, 4, 2};에서 가장 큰 값을 찾는 반복문이 max= a[0]으로 시작합니다. 모든 원소를 비교한 뒤 max는 얼마인가요?

정답: 4

포인터 문제

문제 5

int x = 10; int *p = &x; *p += 5; printf("%d", x);의 출력은 무엇인가요?

정답: 15

p는 x의 주소를 저장하고 *p는 x 자체의 값을 가리킵니다.

문제 6

int a[] = {10, 20, 30}; int *p = a; printf("%d", *(p+2));의 출력은 무엇인가요?

정답: 30

배열 이름 a는 첫 원소의 주소처럼 사용되며 p+2는 세 번째 원소를 가리킵니다.

문자열과 함수

문제 7

char s[] = "CODE";에서 strlen(s)의 결과는 얼마인가요?

정답: 4

strlen은 문자열 끝의 널 문자 \0을 길이에 포함하지 않습니다.

문제 8

void swap(int a, int b) 함수 안에서 두 매개변수를 교환해도 호출한 쪽 변수값이 바뀌지 않는 이유는 무엇인가요?

정답: 값에 의한 호출이므로 원본이 아니라 복사된 값이 전달되기 때문입니다.

호출한 변수 자체를 바꾸려면 주소를 받는 포인터 매개변수를 사용해야 합니다.

C 문제에서 자주 틀리는 부분

  • 후위 증가 연산자는 현재 값을 사용한 뒤 증가합니다.
  • 정수끼리 나누면 소수점 이하가 버려집니다.
  • 배열 인덱스는 0부터 시작합니다.
  • *p는 포인터가 가리키는 값이고 &x는 x의 주소입니다.
  • 문자열 끝에는 널 문자 \0이 저장됩니다.

같은 날 Java 문제SQL 문제를 번갈아 풀기보다 한 언어의 오답 원인을 정리한 뒤 다음 언어로 넘어가는 편이 좋습니다. 3회 일정은 실기 일정 안내에서 확인하세요.

같은 분류의 글

XP(eXtreme Programming) 모델 5대 가치 리눅스 Bash 쉘에서 export란? 정보처리기사 실기 Python 문제 8선 정답과 해설 정보처리기사 실기 Java 문제 8선 정답과 해설 정보처리기사 실기 SQL 문제 10선 정답과 해설
카톡에서 정보 얻기