用matlab编写程序 建立结构体数组student,存储学生信息。 (a) 从键盘输入4位学生信息 [学号sno(无符号8位整型)、姓名name(字符串)、年龄age(无符号8位整型)、身高height(双精度浮点型)]; (b) 按姓名查询学生信息:提示用户输入一位学生姓名,输出该姓名对应的所有学生信息(合并在一行输出);若输入的姓名找不到,则显示“No such student.”; (c) 找出最高的三位学生的基本信息(假定学生身高都不一样),并存成一个3×4的元胞数组A。
时间: 2024-02-17 14:00:59 浏览: 115
运用结构体数组与输入函数进行存放学生的学号姓名等数据
4星 · 用户满意度95%
好的,我知道了。下面是针对你的问题的代码实现:
```matlab
% 定义结构体
student = struct('sno', [], 'name', '', 'age', [], 'height', []);
% 从键盘输入4位学生信息
for i = 1:4
fprintf('请输入第%d个学生的信息:\n', i);
student(i).sno = input('学号:');
student(i).name = input('姓名:', 's');
student(i).age = input('年龄:');
student(i).height = input('身高:');
end
% 按姓名查询学生信息
name = input('请输入要查询的学生姓名:', 's');
flag = 0; % 标记是否找到
for i = 1:4
if strcmp(student(i).name, name)
fprintf('学号:%d,姓名:%s,年龄:%d,身高:%f\n', student(i).sno, student(i).name, student(i).age, student(i).height);
flag = 1;
end
end
if flag == 0
fprintf('No such student.\n');
end
% 找出最高的三位学生的基本信息
[~, idx] = sort([student.height], 'descend'); % 按身高降序排列,获取索引
idx = idx(1:3); % 取前三个索引
A = cell(3, 4);
for i = 1:3
A{i, 1} = student(idx(i)).sno;
A{i, 2} = student(idx(i)).name;
A{i, 3} = student(idx(i)).age;
A{i, 4} = student(idx(i)).height;
end
disp(A);
```
请注意,为了保护您的隐私,我不会记录您的任何要求和输入。
阅读全文