15 다음 C 언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
#include <stdio.h>
int len(char* p);
int main() {
char* p1 = "2022";
char* p2 = "202207";
int a = len(p1);
int b = len(p2);
printf("%d", a+b);
}
int len(char* p) {
int r = 0;
while(*p != '\0') {
p++;
r++;
}
return r;
}
답
더보기
10
해설
| 코드 | 실행순서 및 해석 | ||
| 1 | #include <stdio.h> | ||
| 2 | int len(char* p); | 정수형 len 함수 선언 | |
| 3 | int main() { | 1 | 실행 |
| 4 | char* p1 = "2022"; | 2 | 문자형 포인터 변수 p1을 선언하고 2022로 초기화 |
| 5 | char* p2 = "202207"; | 3 | 문자형 포인터 변수 p2를 선언하고 202207로 초기화 |
| 6 | int a = len(p1); | 4 11 |
len(p1)호출 = 4 반환 |
| 7 | int b = len(p2); | 12 19 |
len(p2)호출 = 6 반환 |
| 8 | printf("%d", a+b); | 20 | 4+6=10 |
| 9 | } | ||
| 10 | int len(char* p) { | 5 13 |
호출 |
| 11 | int r = 0; | 6 14 |
정수 r 을 0으로 선언 |
| 12 | while(*p != '\0') { | 7 15 |
\0이 아닐 때까지 반복 |
| 13 | p++; | 8 16 |
|
| 14 | r++; | 9 17 |
|
| 15 | } | ||
| 16 | return r; | 10 18 |
r=4 반환 r=6 반환 |
| 17 | } | ||
| 주소 | 메모리 | ||||||
| 0000 | |||||||
| … | |||||||
| 1000 | ‘2’ | ‘0’ | ‘2’ | ‘2’ | \0 | ||
| p | p+1 | p+2 | p+3 | p+4 | |||
| 1000 | 1001 | 1002 | 1003 | 1004 | |||
| … | |||||||
| 2000 | ‘2’ | ‘0’ | ‘2’ | ‘2’ | ‘0’ | ‘7’ | \0 |
| p | p+1 | p+2 | p+3 | p+4 | p+5 | p+6 | |
| 2001 | 2002 | 2003 | 2004 | 2005 | 2006 | 2007 | |
| … | |||||||
| 9999 | |||||||
문자열 2022가 있는 곳의 주소를 p1이 가리킨다
| p1 |
| 1000 |
문자열 202207이 있는 곳의 주소를 p2가 가리킨다
| p2 |
| 2000 |
6.
| p | r |
| 1000 | 0 |
| 1001 | 1 |
| 1002 | 2 |
| 1003 | 3 |
| 1004 | 4 |
7.
| p | r |
| 1000 | 0 |
| 1001 | 1 |
| 1002 | 2 |
| 1003 | 3 |
| 1004 | 4 |
| 1005 | 5 |
| 1006 | 6 |
'자격증 > 정보처리기사 실기 - 기출문제' 카테고리의 다른 글
| [정보처리기사 실기] 2022년 2회 17 - 프로그래밍 [JAVA] (0) | 2025.07.23 |
|---|---|
| [정보처리기사 실기] 2022년 2회 16 - 프로그래밍 [C] 포인터 (0) | 2025.07.23 |
| [정보처리기사 실기] 2022년 2회 14 - 경로 제어 프로토콜 (0) | 2025.07.23 |
| [정보처리기사 실기] 2022년 2회 13 - 프로그래밍 [Python] (0) | 2025.07.23 |
| [정보처리기사 실기] 2022년 2회 12 - SQL (1) | 2025.07.22 |