【问题描述】有以下学生信息,使用结构体数组存储这些信息
struct student{
int num;//学号
int computer; //计算机成绩
}s[5]={{101,75},{103,80},{104,85},{106,90}};
再输入一条新记录,插入到结构体数组中,让5条记录按计算机成绩升序有序。
【输入形式】2个数据都使用空格分隔
【输出形式】分五行输出数据,每行数据均使用空格分隔
【输入样例】102 88
【输出样例】每行数据均使用一个空格分隔,分五行输出
101 75
103 80
104 85
102 88
106 90
原文链接:https://blog.csdn.net/jshsjjn/article/details/125351925
#include<bits/stdc++.h>
using namespace std;
struct student{
int num;
int computer;
};
//升序函数
bool compare(student a,student b)
{
return a.computer<b.computer;
}
//怎么插入呢
int main()
{
int t1,t2;
cin>>t1>>t2;
student s[6]={{101,75},{103,80},{104,85},{106,90},{t1,t2}};
sort(s,s+5,compare);
for(int i=0;i<5;i++)//这里要从0开始
{
cout<<s[i].num<<" "<<s[i].computer<<endl;
}
}
课后小结:
- 突然想起自己过分愚笨已经忘记结构体怎么插入的,但是搜索了一下是需要队列形式插入,就简单放下代码叭,下次就要学习队列的相关知识了。
#include <iostream> #include <vector> #include <algorithm> using namespace std; struct student{ int num; int computer; }; //升序函数 bool compare(student a, student b) { return a.computer < b.computer; } int main() { vector<student> s = {{101,75},{103,80},{104,85},{106,90}}; // 使用 vector 代替数组,并初始化 int t1, t2; cin >> t1 >> t2; s.push_back({t1, t2}); // 在 vector 的末尾插入新元素 sort(s.begin(), s.end(), compare); for (int i = 0; i < s.size(); i++) // 修改循环终止条件为 vector 的大小 { cout << s[i].num << " " << s[i].computer << endl; } return 0; }