当前位置:首页>java>【每日编程-40期】BS上机题(二)

【每日编程-40期】BS上机题(二)

  • 2026-08-25 15:57:27
【每日编程-40期】BS上机题(二)
北师大上机题(二)

每日编程中遇到任何疑问、意见、建议请公众号留言或加入每日编程群聊739635399

 输入一组学生的成绩,以及一个给定区间,输出区间中成绩最高的学生的排名和成绩最低的学生排名。

输入格式:

输入成绩的条数

输入成绩(以空格隔开)

输入要查询成绩的区间【m,n】m,n以空格隔开

输出格式:

输出最高排名和最低排名

输入样例:

1075 82 67 88 90 56 43 95 70 3260 90

输出样例:

2 7
解决方法:

(1)算法的基本思想:

通过结构体数组来存储学生的信息,然后根据成绩来进行降序排序,排序后的下标+1即是排名,再在给定区间范围内查找最大值和最小值即可。

(2)代码实现:

#include<iostream>usingnamespacestd;voidsort(int* grade,int length);intmain(void){int grade[100];int length;int m,n;cout << "请输入成绩的条数:" << endl;cin >> length;cout << "请输入成绩:" << endl;for(int i = 0; i < length; i++){cin >> grade[i];    }cout << "请输入成绩要查询的区间[m,n](直接输入m和n):" << endl;cin >> m;cin >> n;    sort(grade,length);int min = length-1,max = 0;while(min >= 0 && grade[min] < m ) min--;while(max < length && grade[max] > n) max++;cout << "最高排名:" << max+1 << " 最低排名:" << min+1 << endl;return0;}voidsort(int* grade,int length){for(int i = 0; i < length-1; i++){for(int j = length-1; j > i; j--){if(grade[j] > grade[j-1]){int temp = grade[j];                grade[j] = grade[j-1];                grade[j-1] = temp;            }        }    }}
明日预告:北师大上机题(三)
        输入一堆要完成的任务,每个任务有开始时间和要完成的时间,求把这些任务做完最快要多久。(原题是回忆版题目,题意表述不是很明确,这里简单认为个任务可以在相同时间段内进行不会冲突,时间的格式采用的是整数)

输入格式:

输入任务的总数各个任务开始的时间和所需要的时间

输出格式:

所需时间

输入样例:

52 105 34 96 37 7

输出样例:

12

最新文章

随机文章