题目

编写程序,演示结构体(struct)数据类型:创建描述一辆汽车参数的结构体变量(包含品牌、排量、是否上险、动力曲线等不同类型字段),使用点语法(dot notation)读写字段,并使用 <code>isfield</code> 检查字段是否存在。

输入格式:无需外部输入。

输出格式:输出结构体的内容展示与字段访问日志。

数据范围与约定:结构体数据结构。

思路与算法

1. 结构体与点语法
通过 car.brand = "Toyota"; car.engine = 2.0; 随时动态附加不同类型的命名属性。

2. 字段检测 isfield
在读取可选配置字段时,使用 isfield(struct_var, "field_name") 进行防御,防止访问不存在的字段抛出致命异常。

3. 动态字段名
可以通过字符串动态寻址字段,如 car.("brand")。

完整程序

% Octave / MATLAB 第76题:结构体 struct 基础
% 1. 点语法创建结构体
car.brand     = "Sedan-X";
car.engine_cc = 1998;
car.is_active = true;
car.powers    = [120, 150, 180]; % 数组字段

% 2. 字段访问与打印
fprintf("汽车品牌: %s\n", car.brand);
fprintf("排量参数: %d cc\n", car.engine_cc);
fprintf("最大马力: %d HP\n", max(car.powers));

% 3. 安全检测字段是否存在
if isfield(car, "turbo")
    fprintf("涡轮配置: %s\n", car.turbo);
else
    fprintf("未检测到 turbo 字段,当前为自然吸气版本。\n");
end

运行示例

输出:

汽车品牌: Sedan-X
排量参数: 1998 cc
最大马力: 180 HP
未检测到 turbo 字段,当前为自然吸气版本。