解题思路:定义包含三种形式元素的结构体,并重载小于号,for循环用户输入后,先用sort排序,之后用for循环输出。注意b输出时要保留两位小数。
错因:1.忘记重载小于号
2.保留小数格式错误,没有打fixed:(
include <iostream>
#include <algorithm>
#include <string>
#include<iomanip>
using namespace std;
const int N = 10010;//最大为10000
struct Date {
int x;
double y;
string z;//定义结构体
bool operator< (const Date &t) const {//重载小于号
return x < t.x;
}
}a[N];//定义结构体数组
int main() {
int n;
cin >> n;//用户输入n
for(int i = 0; i < n; i++) {
cin >> a[i].x >> a[i].y >> a[i].z;//for循环输入每个结构体的三个元素
}
sort(a, a + n);//排序
for(int i = 0; i < n; i++) {
cout << a[i].x << " " <<fixed<<setprecision(2)<<a[i].y << " " << a[i].z << endl;//按x的顺序输出。并保留两位小数
}
return 0;
}