北京理工大学复试上机--2016

1、输入学生信息,姓名成绩(成绩的数目不一定)输出每个学生的学号和平均成绩,以及不及格课程数超过2的学生,按不及格课程数从大到小排好序输出。

input:

stu1

60 70 80 30

stu2

10 20 30 40 50

stu3

10 20 30 40 50 60 30

stu4

60 80 100

stu5

50 40 30 60 70

#

output:

stu1 60

stu2 30

stu3 34.2857

stu4 80

stu5 50

不及格课程数超过2的学生有:

stu3 34.2857

stu2 30

stu5 50

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct student
{
    string name;
    vector<int> grade;
    int lownum = 0;
    double avgs;
};

bool cmp(student s1, student s2) {
    return s1.lownum > s2.lownum;
}

int main() {
    vector<student> v, vv;
    string s;
    cout << "请输入学生信息:姓名,成绩……  输入#结束" << endl;
    while(cin >> s) {
        if(s == "#") break;
        student stu;
        stu.name = s;
        int score, sum = 0, cnt = 0;
        while(cin >> score) {
            stu.grade.push_back(score);
            if(score < 60) stu.lownum++;
            sum += score;
            cnt++;
            if(getchar() == ‘\n‘) break;
        }
        stu.avgs = sum / (double)cnt;
        v.push_back(stu);
        if(stu.lownum > 2) vv.push_back(stu);
    }
    sort(vv.begin(), vv.end(), cmp);
    for(int i = 0; i < v.size(); i++) {
        cout << v[i].name << " " << v[i].avgs << endl;
    }
    cout << "不及格课程数超过2的学生有:" << endl;
    for(int i = 0; i < vv.size(); i++) {
        cout << vv[i].name << " " << vv[i].avgs << endl;
    }
    return 0;
}

2、输入字符串,输出字符串中包含的数字

input: 2.3ABC0-2.3

output:2.3 0 -2.3。

input: +004.500

output:4.5

(原本输出+4.5,但我感觉应该不需要‘+‘,具体问题具体对待吧)

#include <iostream>
#include <vector>
using namespace std;

int main() {
    string s;
    while(cin >> s) {
        string str;
        vector<string> v;
        int dot;
        for(int i = 0; i < s.length(); i++) {
            if (s[i] == ‘+‘) continue;
            if (!isalpha(s[i])) str += s[i];
            if (isalpha(s[i]) || i == s.length() - 1 || s[i + 1] == ‘-‘) {
                if (str != "") {
                    if(str.length() != 1) {
                        int num = 0, num1, flag = 0, num2;
                        for(int j = 0; j < str.length(); j++) {
                            if(str[j] == ‘0‘) num++;
                            if(str[j] != ‘0‘ && !flag) {
                                flag++;
                                num1 = num;
                            }
                        }
                        num = 0;flag = 0;
                        for(int j = str.length() - 1; j >= 0; j--) {
                            if(str[j] == ‘0‘) num++;
                            if(str[j] != ‘0‘ && !flag) {
                                flag++;
                                num2 = num;
                            }
                        }
                        str = str.substr(num1, str.length() - num2 - num1);
                    }
                    v.push_back(str);
                    str = "";
                }
            }
        }
        for(int i = 0; i < v.size(); i++) {
            cout << v[i];
            if(i < v.size() - 1) cout << " ";
        }
        cout << endl;
    }
    return 0;
}

PS: 第二题好像还不完善,抽空再改吧!

后面的有保研夏令营题目,也都是网上的,有时间更

原文地址:https://www.cnblogs.com/ache/p/12585215.html

时间: 2024-08-02 08:34:34

北京理工大学复试上机--2016的相关文章

北京理工大学复试上机--2009

1.请输入字符串,最多输入4 个字符串,要求后输入的字符串排在前面,例如 输入:EricZ 输出:1=EricZ 输入:David 输出:1=David 2=EricZ 输入:Peter 输出:1=Peter 2=David 3=EricZ 输入:Alan 输出:1=Alan 2=Peter 3=David 4=EricZ 输入:Jane 输出:1=Jane 2=Alan 3=Peter 4=David 2.把上述最后结果保存到Name.txt中; #include <iostream> #i

北京理工大学复试上机--2010

1.输入一串整数,输入命令排序! 输入 a t 在这串整数后面添加整数 t, 输入 c\m\n 有 n 替换 m, 输入 d t 删除 t, 输入 s 排序. #include <iostream> #include <vector> #include <cstring> #include <algorithm> using namespace std; int tonum(string s, int l) { int n = 1, sum = 0; for

北京理工大学复试上机--2013

1.求两个数的最大公约数 示例: 输入:24 18 输出:6 #include <iostream> #include <math.h> using namespace std; int main() { int a, b, i, j, m; while (cin >> a >> b) { m = min(a, b); j = 0; for (i = 1; i <= m; i++) { if (a % i == 0 && b % i =

北京理工大学复试上机--2020

PS: 2020的是夏令营试题 1.题目:给你一个 m*n 大小的矩阵,每个点有 0,1,2 三种取值:0 代表障碍物,1代表白纸,2 代表墨滴.每一秒墨滴可以向其上下左右扩散,将四周的白纸染色,被染色之后的白纸可以继续向四周扩散,以此类推.问经过几秒,矩阵中所有的白纸都被染色. 如果可以,则输出扩散时间: 如果不可以,则输出FALSE. 输入: m n 的大小以及矩阵每个点的值 输出: 扩散时间 或 FALSE 例如: 3 3 0 1 0 1 2 1 0 1 0 输出: 1 3 3 0 1 0

北京理工大学复试上机--2019

1.字符串解析将字符串看成不同的字符切片,切片不可重复,按字母序输出所有切片(每个切片一行) 输入: aaabbcaaabaa 输出: aa aaa b bb c #include <iostream> #include <set> using namespace std; int main() { string s; while (cin >> s) { set<string> ss; string str; int i; for (i = 0; i &l

2018北京理工大学区块链技术讲座

活动主题 活动详情 区块链行业对技术研发人员的需求持续升温,与此同时区块链技术人才的培养体系还有待完善.为了加深技术人才对区块链技术的了解和参与度,「BC Spark开发者社区」携手「链得得」「北京理工大学研究生会」,共同发起「2018北京理工大学区块链技术讲座」,为在校学生.开发者普及区块链知识,宣传区块链技术,打开了解区块链理论与行业最新实践的大门,深度参与到优秀区块链开源项目的学习和实践中去,为区块链行业输送新鲜血液. 活动时间 2018-11-22 18:30 ~ 2018-11-22

HDU 1234 (浙大计算机研究生复试上机考试-2005年) 开门人和关门人 (水)

开门人和关门人 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 11133    Accepted Submission(s): 5667 Problem Description 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签 到.签离记录,请根据记录找出当天开门和关门的人. Input 测试输入的第一

hdu 4416 水题 浙大计算机研究生复试上机考试-2005年 可是发现自己写代码有问题

Spring3与Hibernate4整合时出现了nested exception is java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider. hibernate3的时候,用spring来控制sessionfactory用的可以是org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean,因为用的是hibernate4所以照猫画

北京航空航天大学计算机系考研复试上机真题及答案---2014

第一题,阶乘数. 输入一个正整数,输出时,先输出这个数本身,跟着一个逗号,再输出这个数的各位数字的阶乘和,等号,阶乘和的计算结果,并判断阶乘和是否等于原数,如果相等输出Yes,否则输出No.题目说明输入的正整数以及其各位阶乘和都不会超出int型的表示范围. 输入样例1: 145 输出样例1: 145,1!+4!+5!=145 Yes 输入样例2: 1400 输出样例2: 1400,1!+4!+0!+0!=27 No 第二题,五子棋. 输入一个19*19的矩阵,只包含数字0.1.2,表示两人下五子