Menu
CoddyTech

复习:结构体数组

本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 62 课,共 63 课。

challenge icon

挑战

简单

创建一个 C 程序,使用结构体数组管理产品库存系统。你的程序应当:

  1. 定义一个名为 Product 的 struct,包含以下成员:
    • 一个大小为 30 的字符数组 name
    • 一个浮点数 price
    • 一个整数 stock
  2. 编写一个名为 findMostExpensive 的函数,该函数:
    • 将一个 struct Product 数组和一个整数 size 作为参数
    • 返回一个整数,表示价格最高的产品的索引
    • 使用循环遍历所有产品并比较它们的价格
    • 返回第一个找到的最高价格产品的索引
  3. 编写一个名为 calculateTotalValue 的函数,该函数:
    • 将一个 struct Product 数组和一个整数 size 作为参数
    • 返回一个浮点数,表示库存总价值
    • 通过将每个产品的(价格 × 库存)相加来计算总价值
  4. 编写一个名为 findLowStock 的函数,该函数:
    • 将一个 struct Product 数组、一个整数 size 和一个整数 threshold 作为参数
    • 返回一个整数,表示库存低于阈值的产品数量
    • 使用循环统计库存低于阈值的产品数量
  5. 在 main 函数中:
    • 创建一个包含 3 个 struct Product 的数组,并命名为 inventory
    • 按以下顺序读取每个产品的输入:名称、价格、库存
    • 使用输入数据填充数组
    • 按以下确切格式打印每个产品的信息:Product [index]: [name] - Price: [price], Stock: [stock]
    • 调用 findMostExpensive 函数,并按以下确切格式打印结果:Most expensive product: [name]
    • 调用 calculateTotalValue 函数,并按以下确切格式以 2 位小数打印结果:Total inventory value: [total_value]
    • 读取一个表示低库存阈值的整数
    • 使用该阈值调用 findLowStock 函数,并按以下确切格式打印结果:Products with low stock: [count]
    • 检查价格最高的产品库存是否大于 10:
      • 如果是:打印 Most expensive product is well stocked
      • 如果否:打印 Most expensive product needs restocking

这个挑战会测试你使用结构体数组、实现处理结构体数组的函数,以及对结构化数据进行各种计算和比较的能力。你将练习结构体数组的索引操作、数据处理函数的设计,以及组合多种操作来分析库存信息。

亲手试试

#include <stdio.h>
#include <string.h>

// TODO:在这里定义 Product 结构体

// TODO:在这里实现 findMostExpensive 函数

// TODO:在这里实现 calculateTotalValue 函数

// TODO:在这里实现 findLowStock 函数

int main() {
    // 创建包含 3 个产品的数组
    struct Product inventory[3];
    
    // 读取每个产品的输入数据
    for (int i = 0; i < 3; i++) {
        scanf("%s", inventory[i].name);
        scanf("%f", &inventory[i].price);
        scanf("%d", &inventory[i].stock);
    }
    
    // TODO:输出每个产品的信息
    
    // TODO:找出并输出价格最高的产品
    
    // TODO:计算并输出库存总价值
    
    // 读取低库存阈值
    int threshold;
    scanf("%d", &threshold);
    
    // TODO:找出并输出库存不足的产品
    
    // TODO:检查价格最高的产品库存是否充足
    
    return 0;
}

逻辑与流程中的所有课

自己练习: C 在线编译器