本蒟蒻第一篇题解
其实很简单,一堆if判断是否有奖学金或写函数判断
我这里只展示函数判断
废话不多说,上代码
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; struct P//people { string name;//名字 int qimo, banji, lunwen, id, sum;//各个成绩,id,总和 char ganbu, xibu;//是否为干部,西部学员 }; P a[105]; bool isyuanshi(int x, int y)//判断是否有院士奖学金 { if(x > 80 && y >= 1) return true; else return false; } bool iswusi(int x, int y)//判断是否有五四奖学金 { if(x > 85 && y > 80) return true; else return false; } bool isyouxiu(int x)//判断是否有成绩优秀奖 { if(x > 90) return true; else return false; } bool isxibu(int x, char y)//判断是否有西部奖学金 { if(x > 85 && y == 'Y') return true; else return false; } bool isgongxian(int x, char y)//判断是否有班级贡献奖 { if(x > 80 && y == 'Y') return true; else return false; } bool cmp(P x, P y)//按奖学金总和排序 { if(x.sum != y.sum) return x.sum > y.sum; else//若总和一样,按id号 { return x.id < y.id; } } int main() { int n;//总数 long long asum = 0;//N个学生获得的奖学金的总数 cin >> n;//读入 for(int i = 0;i < n;i++) { cin >> a[i].name >> a[i].qimo >> a[i].banji >> a[i].ganbu >> a[i].xibu >> a[i].lunwen;//读入 a[i].id = i;//id号 } for(int i = 0;i < n;i++)//判断奖学金总数 { if(isyuanshi(a[i].qimo, a[i].lunwen) == true) a[i].sum += 8000; if(iswusi(a[i].qimo, a[i].banji) == true) a[i].sum += 4000; if(isyouxiu(a[i].qimo) == true) a[i].sum += 2000; if(isxibu(a[i].qimo, a[i].xibu) == true) a[i].sum += 1000; if(isgongxian(a[i].banji, a[i].ganbu) == true) a[i].sum += 850; } sort(a, a + n,cmp);//排序 for(int i = 0;i <= n;i++) { asum += a[i].sum;//总和 } cout << a[0].name << endl << a[0].sum << endl << asum;//输出 return 0;//结束 }