结构体数组
结构体数组
结构体数组。
结构体数组即「每个元素都是一条 struct 记录」的数组,如 Student cls[30]; 表示 30 名学生。下标访问后仍用 . 取成员:cls[i].score。
四级卷面常见:按条件统计人数、找最高分、或按某字段排序(与排序知识点联动)。注意数组下标不能越界;循环边界应写 < 数组长度 而不是 <=。
Student team[3] = {{"A",80}, {"B",90}, {"C",85}};
int best = 0;
for (int i = 1; i < 3; ++i)
if (team[i].score > team[best].score) best = i;
把「结构体数组」想成表格:每一行是一个 struct,每一列是一个成员字段。初始化时可以用 { {...}, {...} } 逐行写清;若只写部分元素,其余成员按规则零初始化,卷面读输出时要记得这一细节。
下面的描述中,( )不能正确定义一个名为 Student 的结构体以及一个包含20个元素的结构数组。
原文保真说明:原卷印刷错误 4 处(照原卷保留,未作修改)
原卷印刷如此版式选项 1
原卷作
struct Student students[20];原卷此行类型名与变量名之间是 2 个空格(450 dpi 图像测量确认),不得归一化为 1 个空格。
原卷印刷如此版式选项 2
原卷作
Student students[20];原卷此行类型名与变量名之间是 2 个空格(450 dpi 图像测量确认),不得归一化为 1 个空格。
原卷印刷如此版式选项 3
原卷作
Student* students = new Student[20];原卷此行类型名与变量名之间是 2 个空格(450 dpi 图像测量确认),不得归一化为 1 个空格。
原卷印刷如此版式选项 4
原卷作
Student students = new Student[20];原卷此行类型名与变量名之间是 2 个空格(450 dpi 图像测量确认),不得归一化为 1 个空格。
以下 C++ 代码合法。
struct Student {
string name;
int age;
float score;
};
Student* students = new Student[20];
下面程序输出结果是( )。
struct Book {
string title;
int pages;
};
int main() {
Book books[2] = {{"Math", 120}, {"Science", 150}};
cout << books[1].title;
return 0;
}
下面程序可以正确计算并输出 3 名学生的平均成绩。
struct Student {
int id;
int score;
};
int main() {
Student students[3] = {
{1, 90},
{2, 80},
{3, 100}
};
int sum = 0;
for (int i = 0; i < 3; i++) {
sum += students[i].score;
}
double average = sum / 3.0;
cout << average << endl;
return 0;
}