【3.3】C++结构体介绍_哔哩哔哩_bilibili
举例1 :最厉害的学生结构体
最厉害的学生
现有N名同学参加了期末考试,并且获得了每名同学的信息:
1 姓名(不超过8个字符的仅有英文小写字母的字符串)
2 语文、数学、英语成绩(均为不超过150的自然数)。
3 总分最高的学生就是最厉害的。
请输出最厉害的学生各项信息(姓名、各科成绩)。
如果有多个总分相同的学生,输出靠前的那位。
输入格式
1 第一行输入一个正整数 N,表示学生个数。
2 第二行开始,往下N行,对于每一行首先先输入一个字符串表示学生姓名,
再输入三个自然数表示语文、数学、英语的成绩。
均用空格相隔。
输入格式:最厉害的学生
#include<iostream>
using namespace std;
const int maxn = 1000;
struct Student{
string name;
int chinese;
int math;
int english;
int getsum(){
return chinese+math+english;
}
};
int n;
Student s[maxn]; // s 是一个包含多个 Student 对象的数组
int main(){
cin >> n;
int best = 1;
for (int i=1; i <=n; ++i){
cin >> s[i].name >> s[i].chinese >> s[i].math >> s[i].english;
if (s[i].getsum()>s[best].getsum()){
best = i;
}
}
cout << s[best].name << " " << s[best].chinese << " " << s[best].math << " " << s[best].english << endl;
return 0;
}
假设输入
3
Alice 80 90 70
Bob 85 95 75
Charlie 70 80 60
输出为 Bob 85 95 75
www.runoob.com
https://www.runoob.com/cplusplus/cpp-struct.html一、结构体介绍 (语法-定义变量方法-初始化)
(0)语法规则
(1)结构体声明时,不定义变量(对象)
(2)结构体声明时,定义一个变量
(3)结构体声明时,定义多个变量
初始化(1) 列表初始化
1.1 结构体声明时初始化
1.2 声明变量时初始化
(2) 构造函数初始化
2.1 结构体定义时直接声明并初始化对象
2.2 定义对象时使用构造函数初始化
(0) 语法规则
结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起。
与类(class)类似,结构体允许你定义成员变量和成员函数。
为了定义结构,您必须使用 struct 语句。
struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下:
struct type_name {
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
.
.
} object_names;
type_name 是结构体类型的名称,
member_type1 member_name1 是标准的变量定义,比如 int i; 或者 float f; 或者其他有效的变量定义。
在结构定义的末尾,最后一个分号之前,您可以指定
(1)不定义变量、(2)定义一个变量、(3)定义多个结构变量,这是可选的。
(1)下面是声明一个结构体类型 Books,不定义变量(不定义结构体的对象):
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
}; // 结构体定义结束,没有定义变量
int main()
{
Books book1; // 单独声明变量
// 初始化变量
strcpy(book1.title, "C++ Primer");
strcpy(book1.author, "Stanley B. Lippman");
strcpy(book1.subject, "Programming");
book1.book_id = 1;
return 0;
}
(2)下面是声明一个结构体类型 Books,定义一个变量为 book(结构体的对象):
指定一个结构变量
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
} book;
(3)定义多个结构变量,后面是初始化
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
} book1, book2; // 同时声明 book1 和 book2
int main()
{
// 初始化 book1
strcpy(book1.title, "C++ Primer");
strcpy(book1.author, "Stanley