#include
using namespace std;
struct quesion {
// 题号,本题的满分值,选项个数,正确选项个数,学生的错误次数
int no,sc,optnum,rightnum=0,wrong_cnt=0;
set opt; // *:review一下set的特性
} que[1001];
int cmp(quesion a, quesion b) {
if(a.wrong_cnt!=b.wrong_cnt)
return a.wrong_cnt>b.wrong_cnt;
else return a.no>n>>m; // 学生人数,多选题个数
for(int i=0; i>que[i].sc>>que[i].optnum>>que[i].rightnum;
que[i].no=i;
for(int j=0; j>a;
que[i].opt.insert(a);
}
}
for(int i=0; i0) scanf(" ");
scanf("(%d",&l);
for(int k=0; k
1、set 是集合,⼀个 set 中的各元素各不相同,而且 set 会按照元素从小到大排序,用法:
set
s; // 定义⼀个空集合s s.insert(1); // 向集合s⾥⾯插⼊⼀个1 cout << *(s.begin()) << endl; // 输出集合s的第⼀个元素 (前⾯的星号表示要对指针取值) /* 查找集合s中的值, 如果结果等于s.end()表示未找到 (因为s.end()表示s的最后⼀个元素的下⼀个元素所在的位置) */ if(s.find('a')!=s.end()) cout<<"能找到";
2、注意以下 scanf() 的用法:
scanf("("%d", &a); scanf(")");
3、结构体数组、vector咋sort?
struct stu { int number; //学号 int score; //分数 } bool cmp(stu a, stu b) { // cmp函数,返回值是bool,传⼊的参数类型应该是结构体stu类型 if (a.score != b.score) // 如果学⽣分数不同,就按照分数从⼤到⼩排列 return a.score > b.score; else // 如果学⽣分数相同,就按照学号从⼩到⼤排列 return a.number < b.number; } sort(v.begin(), v.end(), cmp); sort(array, array + 10, cmp);
做这样的题一定要仔细,头脑要清楚。