结构体是在信奥学习道路中必学的一个知识点,没学之前你可能会觉得结构体很难,看完这篇文章你一定会觉得很简单。
结构体的定义
结构体可以理解为是可以把多种不同或相同类型数据放在一起的结构。
结构体的声明
在主函数之前声明
struct 类型名{ //// struct 是关键字,类型名可以⾃定义
变量类型 变量名;//成员变量1
变量类型 变量名;//成员变量2
变量类型 变量名;//成员变量3
......
};//以;号结束
复制代码
例如,定义一个包含姓名、学号、成绩的结构体 student
方法一:
struct student { //定义结构体student
string name; // 学⽣姓名
string ID; // 学号
float score; // 成绩
};
int main( ){ student a; //定义student类型的变量
student b[100]; //定义student类型的数组
}
复制代码
方法二:
struct student {
string name; // 学⽣姓名
string ID; // 学号
float score; // 成绩
}s; //s为student类型的变量
复制代码
方法三:
struct student {
string name; // 学⽣姓名
string ID; // 学号
float score; // 成绩
}s[100]; //s为student类型变量的数组
复制代码
结构体的简单应用
【题目描述】输入 N 个学生的姓名和语文、数学的得分,按总分从高到低输出。分数相同的按输入先后顺序输出。
【输入格式】
第一行:有一个整数 N,1<=N<=100;
下面有 N 行,每行一个姓名,2 个整数。姓名有不超过 10 个的小写字母组成,整数范围是[0~100]。
【输出格式】
总分排序后的名单,共 N 行,每行格式:姓名 语文 数学 总分。
【输入样例】
4
gaoxiang 78 96
wangxi 70 99
liujia 90 87
zhangjin 78 91
【输出样例】
liujia 90 87 177
gaoxiang 78 96 174
wangxi 70 99 169
zhangjin 78 91 169
#include<bits/stdc++.h>
using namespace std;
struct student{
string name;
float chinese;
float math;
float sum;
}s[101];
bool cmp(student a,student b){
return a.sum>b.sum;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>s[i].name>>s[i].chinese>>s[i].math;
s[i].sum=s[i].chinese+s[i].math;
}
sort(s,s+n,cmp);
for(int i=0;i<n;i++){
cout<<s[i].name<<" "<<s[i].chinese<<" "<<s[i].math<<" "<<s[i].sum<<endl;
}
return 0;
}
复制代码
==觉得对你有帮助的朋友,点个赞再走吧!!!
评论