카테고리 없음

[C언어] 213-17

codecodekode 2024. 10. 19. 14:46

17. 다음 C언어 코드에 대한 알맞는 출력값을 쓰시오.

#include 
 
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("%dn", (p+1)->hab + (p+1)->hhab);
}

1. 구조체 초기화

  • 구조체 배열 st는 3개의 jsu 구조체로 초기화됩니다. 각 구조체는 다음과 같은 값들을 가집니다:
    • st[0]: nae = "데이터1", os = 95, db = 88
    • st[1]: nae = "데이터2", os = 84, db = 91
    • st[2]: nae = "데이터3", os = 86, db = 75

2. 포인터 연산

  • p는 st 배열의 첫 번째 요소인 st[0]의 주소를 가리킵니다.

3. hab와 hhab 계산

  1. (p + 1)->hab:
    • p + 1은 st[1]을 가리킵니다.
    • os는 st[1].os로 84입니다.
    • db는 st[2].db로 75입니다.
    • 따라서, (p + 1)->hab = (p + 1)->os + (p + 2)->db의 결과는:
      • hab = 84 + 75 = 159
  2. (p + 1)->hhab:
    • hhab는 st[1].hhab입니다.
    • 따라서, (p + 1)->hhab = (p + 1)->hab + p->os + p->db의 결과는:
      • hhab = 159 + 95 + 88
      • hhab = 159 + 95 + 88 = 342

4. 최종 출력

  • 마지막으로 printf("%d\n", (p + 1)->hab + (p + 1)->hhab);에서:
    • (p + 1)->hab는 159이고,
    • (p + 1)->hhab는 342입니다.
  • 결과는:
    • 159 + 342 = 501