정보처리기사 실기 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회 일정은 실기 일정 안내에서 확인하세요.
