Problem 1629 Above Average. 题意 输入: 测试用例的数量C 随后C行:学生人数N(1 <= N <= 1000)。N个整数,学生成绩。输出: 高于(等于不算)平均分的学生人数占比,四舍五入到小数点后三位 思路 计算平均分成绩数组从大到小排序,遍历累加,直到当前学生成绩小于平均分高于平均分的人数/总人数*100,输出 笔记 输出百分号需要连着打两个:%% 代码 #include<cstdio> #include<string.h> #include<algorithm> using namespace std; int score[1010]; bool cmp(int a, int b){ if(a!=b) return a>b; } int main(){ int c, n; double avg, ans; scanf("%d", &c); while(c--){ memset(score, 0, sizeof(score)); avg = 0; ans = 0; scanf("%d", &n); for(int i=0; i<n; i++){ scanf("%d", &score[i]); avg += score[i]; } avg = avg/n; sort(score, score+n, cmp); for(int i=0; i<n; i++){ if(score[i]<=avg) break; ans++; } ans = ans/n*100; printf("%.3f%%\n", ans); } return 0; }