3-1 상품 주문 관리 구조체 만들기
문제설명
상품과 주문 정보를 구조체로 설계하고, 구조체 배열과 포인터를 활용하여 주문 정보를 출력하는 프로그램을 작성하시오.
목표
이 문제 하나로 다음 개념을 모두 확인한다:
- 구조체 정의 및 초기화
- 구조체 배열
- 구조체 포인터
- -> 연산자
- 구조체 내부 포인터
- typedef
- 구조체 주소 개념
요구사항
1. 구조체 정의 - 다음 구조체를 정의하시오.
상품(product)
- name (문자열)
- price (정수)
주문(order)
- quantity (정수)
- product를 가리키는 포인터
- typedef를 사용하여 Product, Order로 정의하시오.
2. 데이터 생성 - 다음 데이터를 생성하시오.
- 상품 배열 2개
- "Keyboard", 50000
- "Mouse", 30000
- 주문 배열 2개
- 첫 번째 주문 → Keyboard, 수량 2
- 두 번째 주문 → Mouse, 수량 3
3. 출력 - 다음 형식으로 출력하시오.
Product Price Qty Total Amount
========================================
Keyboard 50000 2 100000
Mouse 30000 3 90000
========================================
4. 포인터 활용 - 반드시 아래 방식 모두 사용
- orders[i].product->name
- (*orders[i].product).price
5. 주소 확인 - 다음을 출력하고 결과를 확인하시오.
&products[0]
&products[0].name
질문) 결과가 같은지 왜 그런지 설명하시오.
출력예시
Product Price Qty Total Amount
========================================
Keyboard 50000 2 100000
Mouse 30000 3 90000
========================================
000000e6cbbffc20
000000e6cbbffc20
예상코드
더보기
#include <stdio.h>
typedef struct {
char name[20];
int price;
} Product;
typedef struct {
int quantity;
Product *product;
} Order;
int main(void)
{
Product products[2] = {
{"Keyboard", 50000},
{"Mouse", 30000}
};
Order orders[2] = {
{2, &products[0]},
{3, &products[1]}
};
printf("%-10s %6s %4s %6s\n", "Product", "Price", "Qty", "Total Amount");
printf("========================================\n");
for(int i=0; i<2; i++) {
int total = orders[i].quantity * (*orders[i].product).price;
printf("%-10s %6d %4d %6d\n",
orders[i].product->name,
(*orders[i].product).price,
orders[i].quantity,
total);
}
printf("========================================\n");
// 주소 확인
printf("%p\n", &products[0]);
printf("%p\n", &products[0].name);
return 0;
}
'[1] 프로그래밍1 및 실습(C언어) > 10주차. 구조체' 카테고리의 다른 글
| [10주차][구조체] 2단계 연습문제 - 개념연습(새로운 구조체) (0) | 2026.05.01 |
|---|---|
| [10주차][구조체] 1단계 연습문제 - 개념복습 (0) | 2026.05.01 |