07 다음 C 언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
#include <stdio.h>
struct jsu {
char nae[12];
int os, db, hab, hhab
};
int main() {
struct jsu st[3] = { {"데이터1", 95, 88}, {"데이터2", 84, 91}, {"데이터3", 86, 75} };
struct jsu* p;
p = &st[0];
(p+1)->hab = (p+1)->os + (p+2)->db;
(p+1)->hhab = (p+1)->hab + p->os + p->db;
printf("%d", (p+1)->hab + (p+1)->hhab);
}
답
더보기
501
해설
코드 | 실행순서 및 해석 | ||
1 | #include <stdio.h> | ||
2 | struct jsu { | jsu라는 구조체 정의 | |
3 | char nae[12]; | 문자형 데이터가 저장되는 12개짜리 배열 선언 | |
4 | int os, db, hab, hhab | 정수형 변수 4개가 멤버로 들어감 | |
5 | }; | ||
6 | int main() { | 1 | 실행 |
7 | struct jsu st[3] = { {"데이터1", 95, 88}, {"데이터2", 84, 91}, {"데이터3", 86, 75} }; | 2 | jsu라는 구조체 배열 3개를 생성한 후 데이터를 삽입한다 |
8 | struct jsu* p; | 3 | 포인트변수 p를 선언한다 → 포인트변수이기 때문에 주소를 기억한다 |
9 | p = &st[0]; | 4 | &st[0]의 주소값을 p에 넣어라 → 1000(임의의 주소값) |
10 | (p+1)->hab = (p+1)->os + (p+2)->db; | 5 | (p+1)의 hab에 (p+1)의 os값과 (p+2)의 db값을 더해 넣어라: 84+75=159 |
11 | (p+1)->hhab = (p+1)->hab + p->os + p->db; | 6 | (p+1)의 hhab에 (p+1)의 hab값과 p의 os값과 p의 db값을 더해 넣어라: 159+95+88=342 |
12 | printf("%d", (p+1)->hab + (p+1)->hhab); | 7 | (p+1)의 hab값과 (p+1)의 hhab값을 더해 출력 : 159+342=501 |
13 | } |
nae[0] | nae[1] | nae[2] | ... | nae[11] | |
char nae[12] | |||||
int os | |||||
int db | |||||
int hab | |||||
int hhab |
실제 데이터에 저장될 때는 문자열은 12바이트, 정수는 각 4바이트씩 총 16바이트를 차지한다
nae[12] | os | db | hab | hhab | |||||
총 12Byte | |||||||||
1Byte | 1Byte | 1Byte | … | 1Byte | 1Byte | 4Byte | 4Byte | 4Byte | 4Byte |
7.
char nae[12] | int os | int db | int hab | int hhab | |
st[0] | st[0].nae[0]~st[0].nae[11] | st[0].os | st[0].db | st[0].hab | st[0].hhab |
st[1] | st[1].nae[0]~st[1].nae[11] | st[1].os | st[1].db | st[1].hab | st[1].hhab |
st[2] | st[2].nae[0]~st[2].nae[11] | st[2].os | st[2].db | st[2].hab | st[2].hhab |
char nae[12] | int os | int db | int hab | int hhab | |||||
st[0] | 데 | 이 | 터 | 1 | \0 | 95 | 88 | ||
st[1] | 데 | 이 | 터 | 2 | \0 | 84 | 91 | ||
st[2] | 데 | 이 | 터 | 3 | \0 | 86 | 75 |
8. 포인트 변수 주소 삽입
0000 | |||||||||||||||
… | nae | os | db | hab | hhab | nae | os | db | hab | hhab | nae | os | db | hab | hhab |
1000 | 데이터1 | 95 | 88 | 데이터2 | 87 | 91 | 159 | 342 | 데이터3 | 86 | 75 | ||||
p | p+1 | p+2 | |||||||||||||
… | &st[0] | &st[1] | &st[2] | ||||||||||||
9999 |
'자격증 > 정보처리기사 실기 - 기출문제' 카테고리의 다른 글
[정보처리기사 실기] 2021년 3회 09 - 프로그래밍 [Python] (0) | 2025.07.18 |
---|---|
[정보처리기사 실기] 2021년 3회 08 - 애플리케이션 테스트 (0) | 2025.07.18 |
[정보처리기사 실기] 2021년 3회 06 - 결합도 (0) | 2025.07.18 |
[정보처리기사 실기] 2021년 3회 05 - 디자인 패턴 (0) | 2025.07.17 |
[정보처리기사 실기] 2021년 3회 04 - 용어 (0) | 2025.07.17 |