#include <stdio.h>
struct profile{
int age;
double height;
};
struct student{
struct profile pf;
int id;
double grade;
};
int main(void){
struct student yuni;
yuni.pf.age = 17;
yuni.pf.height = 164.5;
yuni.id = 315;
yuni.grade = 4.3;
printf("age : %d\n", yuni.pf.age);
printf("height : %d\n", yuni.pf.height);
printf("class ; %d\n", yuni.id);
printf("grade : %.1lf\n", yuni.grade);
return 0;
}
### 코드 설명
- `struct profile`은 나이와 키를 멤버로 가지는 구조체입니다.
- `struct student`는 `struct profile` 타입의 `pf` 멤버를 포함하여, 추가적으로 학번과 성적을 멤버로 가지는 구조체입니다. 이렇게 하여 `student` 구조체는 `profile` 정보를 내장하게 됩니다.
### 학생 정보 초기화 및 출력
- `struct student yuni;`를 통해 `student` 구조체 타입의 변수 `yuni`를 선언합니다.
- `yuni.pf.age = 17;`, `yuni.pf.height = 164.5;`, `yuni.id = 315;`, `yuni.grade = 4.3;`을 사용하여 `yuni`의 나이, 키, 학번, 성적을 초기화합니다.
- `printf` 함수를 사용하여 `yuni`의 나이, 키, 학번, 성적을 출력합니다. 여기서 키를 출력할 때 사용된 형식 지정자 `%d`는 잘못되었습니다. 키는 `double` 타입이므로, 이를 정확하게 출력하기 위해서는 `%f` 또는 `%lf` 형식 지정자를 사용해야 합니다.
### 코드 수정
키를 출력하는 부분에서 형식 지정자를 `%d`에서 `%f`로 수정해야 합니다. 이렇게 하면 `double` 타입의 키 값이 정확히 출력됩니다.
```c
printf("height : %.1lf\n", yuni.pf.height);
```
수정된 코드는 다음과 같은 출력을 생성합니다:
```
age : 17
height : 164.5
class : 315
grade : 4.3
```
'개념 > 혼자 공부하는 C언어' 카테고리의 다른 글
chapter 17) 배열과 포인터를 멤버로 갖는 구조체 사용 (0) | 2024.10.01 |
---|---|
chapter 17) 명령형 인수를 출력하는 프로그램 (0) | 2024.09.30 |
chapter 17) 구조체를 변환하여 두 변수의 값 교환 (1) | 2024.09.28 |
chapter 17) 구조체 포인터의 사용 (0) | 2024.09.27 |
chapter 17) 공동체를 사용한 학번과 학점 데이터 처리 (0) | 2024.09.26 |