结构体运用——sort排序
结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。
通俗的来说其实就是,开辟一个新的变量来存储这个变量的不同属性。
可以用来储存不同学生的各科成绩以及总成绩,在这种情况下就可以对结构体中某一特定值来对整个结构体组进行相关的大小排序,且
其中常用到的就是sort排序+cmp函数的运用;
简单的一个题练习:https://www.luogu.com.cn/problem/P5738
1 #include <iostream> 2 #include <string> 3 #include <algorithm> 4 #include <bits/stdc++.h> 5 using namespace std; 6 7 typedef long long ll; 8 9 struct pp { 10 int fs[21] = {0}; 11 double sum = 0; 12 13 } p[101]; 14 15 bool cmp(struct pp x, struct pp y) { 16 return x.sum > y.sum; 17 } 18 19 int main() { 20 int a, b; 21 cin >> a >> b; 22 for (int i = 0; i < a; i++) { 23 for (int j = 0; j < b; j++) { 24 cin >> p[i].fs[j]; 25 p[i].sum += p[i].fs[j]; 26 } 27 sort(p[i].fs, p[i].fs + b); 28 p[i].sum = (p[i].sum - p[i].fs[0] - p[i].fs[b - 1]) / (b - 2) * 1.0; 29 } 30 sort(p, p + a, cmp); 31 // C++中保留小数方式 32 cout << setprecision(2) << fixed << p[0].sum << endl; 33 return 0; 34 }
同时记录一个c++下保留小数的方式,
cout << setprecision(2) << fixed << p[0].sum << endl;
其中setprecision(n)填入想要保留的数字,fixed设置后可以保证保留的小数不会省略末尾的0
同时也可以写成
cout << setprecision(2) << fixed; cout << p[0].sum << endl;
在本程序中集体设置输出保留n位小数(四舍五入)