北京理工大学计算机近几年机试真题及题解 下

本站小编 Free考研网/2019-05-28


2016年机试真题及题解
1.输入学生信息,姓名 成绩(成绩的数目不一定)
输出每个学生的姓名和平均成绩,按不及格课程数从大到小排好序输出,以及不及格课程数超过2的学生。#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

struct stu{
string name;
int score[100];
int number;
double avg;
int unum;
};

// 定义学生按不及格科目数量的排序规则
bool cmp(stu x,stu y){
return x.unum>y.unum;
}

int main()
{
string str[100]; // 记录原始输入情况
int n=0; // 用于记录学生的数量
// 读取原始数据
while(getline(cin,str[n++]));
n--;
// 整理数据
stu s[100];
for(int i=0;i<n;i++){
int j=0;
// 提取姓名
while(str[i][j]!=' '&&str[i][j]!='\0')
s[i].name+=str[i][j++];
// 提取成绩
int count=0; // 记录成绩的数量
while(str[i][j]!='\0'){
int temp=0; // 存储局部成绩
while(str[i][++j]!=' '&&str[i][j]!='\0'){
temp=temp*10+(str[i][j]-'0');
}
s[i].score[count++]=temp;
}
s[i].number=count; // 记录每个学生的成绩数量
}

/*// 测试数据的输入及处理正确性
for(int i=0;i<n;i++){
cout<<s[i].name<<": ";
int t=0;
while(t<s[i].number)
cout<<s[i].score[t++]<<" ";
cout<<s[i].number;
cout<<endl;
}*/

// 计算学生的平均成绩及不及格科目数量
for(int i=0;i<n;i++){
int t=0, // 科目游标
sum=0, // 局部总成绩
u=0; // 不及格科目数量
while(t<s[i].number){
if(s[i].score[t]<60)
u++;
sum+=s[i].score[t++];
}
s[i].avg=sum/(s[i].number*1.0);
s[i].unum=u;
}

// 按照不及格成成数量从大到小排序
sort(s,s+n,cmp);

// 按照不及格成绩数量从大到小输出学生信息
for(int i=0;i<n;i++){
cout<<s[i].name<<": "<<s[i].avg<<endl;
}

// 输出不及格成绩超过两门的学生姓名
cout<<"不及格成绩超过两门的学生姓名为:"<<endl;
bool f=true; // 用于记录无不及格成绩超过两门的学生的情况
for(int i=0;i<n;i++){
if(s[i].unum>2){
f=false;
cout<<s[i].name<<" ";
}
}
if(f)
cout<<"无不及格成绩超过两门的学生!";
cout<<endl;

return 0;
}
2.输入字符串,输出字符串中包含的数字,比如2.3ABC0-2.3 输出 2.3 0 -2.3。注意一些特殊的情况如+004.500值为+4.5。#include<iostream>
#include<string>
using namespace std;

void f(int &op,string &temp,int &t){
if(temp==""){
if(t==1)
cout<<0<<" ";
op=0;
t=0;
return;
}
// 之前有有效数字
if(op==1){
cout<<"+"<<temp<<" ";
}
else if(op==-1){
cout<<"-"<<temp<<" ";
}
else
cout<<temp<<" ";
temp="";
op=0;
t=0;
}

int main(){
string str[100];
int n=0,k=0;
while(getline(cin,str[n++]));
n--;

while(k<n){
int i=0; // 字符串游标
int op=0; // 存储运算符
string temp=""; // 存储临时数值
string zero=""; // 存储连续的0
int flag=0; // 记录是否是小数部分
int t=0; // 记录是否有全0的特殊情况
while(str[k][i]!='\0'){
// 如果不是数字元素,直接忽略。
if((str[k][i]>='0'&&str[k][i]<='9')||str[k][i]=='+'||str[k][i]=='-'||str[k][i]=='.'){
/*
* 第一部分处理数字中的特殊符号。
*/
if(str[k][i]=='+'){
// 输出之前的数值
f(op,temp,t);
flag=0;
zero="";
op=1;
}
else if(str[k][i]=='-'){
// 输出之前的数值
f(op,temp,t);
flag=0;
zero="";
op=-1;
}
else if(str[k][i]=='.'){
// 处理+.123的特殊情况
if(temp=="")
op=0;
// 有多余的小数点
if(flag==1){
f(op,temp,t);
flag=0;
zero="";
}
// 有效的小数点
if(temp!=""){
// 标记一下,之后到达了小数部分。小数点不知道是否有效,先暂存。
flag=1;
}
if(temp==""&&t==1){
temp+='0';
flag=1;
}
}
/*
* 第二部分处理纯数字。
*/
else{
// 首部的无效0
if(temp==""&&str[k][i]=='0')
t=1;
// 小数点之后
else if(flag){
// 小数部分的0,不知道是否有效,先暂存
if(str[k][i]=='0'){
zero+='0';
}
// 小数点之后第一位非零数
else if(flag==1){
// 把之前暂存的小数点,0都加上
temp+='.';
temp+=zero;
zero="";
temp+=str[k][i];
flag++;
}
// 小数点之后多位
else{
temp+=zero;
zero="";
temp+=str[k][i];
}
}
// 整数部分
else{
temp+=str[k][i];
}
}
}
// 非字符忽略,并输出其前面的数字
else{
f(op,temp,t);
flag=0;
zero="";
}
// 向后检索
i++;
}
// 输出最后一个数
f(op,temp,t);
// 处理下一个字符串
k++;
cout<<endl;
}


return 0;
}
2017年机试真题及题解1.身份证号的校验
身份证号码共18位,最后一位是校验位
A[18] : aaaaaabbbbbbbbccc d
校验的规则是如下
前十七位的权值分别是:W[17]:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
x=(A[0]*W[0]+A[1]*W[1]+A[2]*W[2]+...+A[16]*W[16]) mod 11x和校验位y的对应规则对应如下:
x:0 1 2 3 4 5 6 7 8 9 10
y:1 0 x 9 8 7 6 5 4 3 2若y等于d则身份证号码正确
输出格式:aaaaaabbbbbbbbcccd 正确
若y不等于d则身份证号码不正确
输出格式:应为:aaaaaabbbbbbbbcccy
测试用例:拿自己身份证实验一下就知道了
#include<iostream>
#include<string>
using namespace std;

int main()
{
int x=0;
char y;
// 前十七位的权值数组
int weight[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
// 转化表
char tran[17]={'1','0','x','9','8','7','6','5','4','3','2'};
string data; // 接收输入数据
cin>>data;
for(int i=0;i<17;i++)
x=(x+((data[i]-'0')*weight[i]))%11;
y=tran[x];
// 校验位正确
if(y==data[17])
cout<<data<<"正确"<<endl;
// 校验位错误
else{
cout<<"应为:";
for(int i=0;i<17;i++)
cout<<data[i];
cout<<y<<endl;
}
return 0;
}
2.二分查找
-36 -25 0 ** ** 100(具体数字不一样,但是就是这个类型)
对上述十个数进行二分查找
测试用例:请输入要查找的数据:14
14是第5个数,查找次数为1请输入要查找的数据:-25
-25是第2个数,查找次数为2请输入要查找的数据:121
查找失败
#include<iostream>
using namespace std;

int main()
{
int find;
int data[10]={-36,-25,0,12,14,29,35,47,76,100};
cout<<"请输入要查找的数据:";
while(cin>>find){
int low=0,high=9;
int number=-1,times=0;
while(low<=high){
times++;
int mid=(low+high)/2;
if(data[mid]==find){
number=mid+1;
break;
}
else if(data[mid]<find){
low=mid+1;
}
else{
high=mid-1;
}
}

if(number!=-1)
cout<<find<<"是第"<<number<<"个数,查找次数为"<<times<<endl;
else
cout<<"查找失败"<<endl;
cout<<endl;

cout<<"请输入要查找的数据:";
}
return 0;
}
3.建立一个学生信息系统,输入学生信息,输出有挂科同学的信息,再按照平均成绩从高到低排序输出
输入:
5
zhaoyi ** 240
qianer ** 174
sunsan ** 223
lisi ** 253
wangwu ** 225输出:
*[qianer] **
*[sunsan] **
*[wangwu] **lisi **
zhaoyi **
wangwu **
sunsan **
qianer **#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

struct stu{
string name;
int score[3];
int sum; // 总成绩
double avg; // 平均成绩
bool flag; // 是否挂科
};
bool cmp(stu x,stu y){
return x.avg>y.avg;
}
int main()
{
int n; // 学生数量
stu s[100];
cin>>n;
for(int i=0;i<n;i++){
cin>>s[i].name;
cin>>s[i].score[0]>>s[i].score[1]>>s[i].score[2]>>s[i].sum;
if(s[i].score[0]<60||s[i].score[1]<60||s[i].score[2]<60)
s[i].flag=true;
else
s[i].flag=false;
s[i].avg=s[i].sum/3.0;
}
// 输出有挂科的同学
for(i=0;i<n;i++){
if(s[i].flag)
cout<<"*["<<s[i].name<<"]"<<" "<<s[i].score[0]<<" "<<s[i].score[1]<<" "<<s[i].score[2]<<endl;
}
cout<<endl;
// 按平均成绩从高到低输出
sort(s,s+n,cmp);
for(i=0;i<n;i++){
cout<<s[i].name<<" "<<s[i].score[0]<<" "<<s[i].score[1]<<" "<<s[i].score[2]<<endl;
}

return 0;
}

相关话题/成绩 数据 数字 科目 信息

  • 领限时大额优惠券,享本站正版考研考试资料!
    大额优惠券
    优惠券领取后72小时内有效,10万种最新考研考试考证类电子打印资料任你选。涵盖全国500余所院校考研专业课、200多种职业资格考试、1100多种经典教材,产品类型包含电子书、题库、全套资料以及视频,无论您是考研复习、考证刷题,还是考前冲刺等,不同类型的产品可满足您学习上的不同需求。 ...
    本站小编 Free壹佰分学习网 2022-09-19
  • 2018中科院(国科大)文献情报中心科技信息编辑与传播真题回忆版
    传播学概论真题【名词解释】融媒体网络舆情大数据危机处理3T原则共识会议【简答题】什么是创新扩散理论?如何评价把关理论?【论述题】论述题材料很长,我简略写一下1如何理解如果你的微博有100个粉丝,那就是一本内刊,如果有一亿粉丝,那就是cctv(这段话在网上能找到全的)2材料 ...
    本站小编 Free考研网 2019-05-28
  • 2018中国传媒大学数字媒体艺术723考研真题(回忆版)
    一,简答1.近几年兴起的字幕组现象,谈谈你的认识2.谈谈近年兴起的语音类互联网应用的星期原因3.(忘了)二,创意设计以午餐选择为主题1,设计5分钟的特效短片,写明创意阐述,剧本,分镜设计2,(不是这个方向的忘了)三,论述1,谈谈现今游戏直播游戏实况视频为何深受青少年喜爱2 ...
    本站小编 Free考研网 2019-05-28
  • 2018年北京电影学院声音学院数字媒体技术考研真题
    【声音学院数字媒体技术】一选择题(90分)知识点比较琐碎详细,比如数字图像的宽高比,直方图,1080P逐行扫描,MIDI传输数据,音频接口二简答题(20分)1.简述音频的量化采样过程,对声音质量的影响2.简述混响,均衡,空间类的效果器的用法三论述题(40分)1.你觉得中国电影行业需要什么样的电影技术 ...
    本站小编 Free考研网 2019-05-28
  • 2018年北京电影学院中国电影高新技术研究院-数字电影技术考研真题必看
    【中国电影高新技术研究院-数字电影技术】一选择3*30MIDI传输速率液晶显示技术简称3:2下拉技术适用条件数字图像宽高比二简答题(四选二)1.混响,动态处理,遮蔽的原理和实现方法2.绿幕蓝幕抠图技术影响因素,解决办法3.主流视频显示技术及实现原理。4.三论述你了解哪 ...
    本站小编 Free考研网 2019-05-28
  • 2018年人大信息资源管理学院真题
    考研:十年专注考研!618信息检索一简答题1.简述参考工具书的功能和特点2.简述图像检索工具的现状3.简述信息标引的含义和步骤4.简述《中国期刊全文数据库》的检索步骤和方法二论述题1.试述影响用户检索满意度低的主要原因和解决方法2.试述概念逻辑和概念逻辑的关系840信息管理基础一简答题1.简述信息内 ...
    本站小编 Free考研网 2019-05-28
  • 2018年复旦大学中共党史考研招生人数、考试科目、参考书目
    2018年复旦大学中共党史考研招生人数考试科目参考书目招生院系:马克思主义学院院系说明:本院拟招收学术学位推免生13人。专业代码030204专业名称中共党史招生人数3研究方向01(全日制)中国共产党与中国现代化02(全日制)中国共产党与中国现代思想文化03(全日制)中国共产党执政理论与中国政治发展考 ...
    本站小编 Free考研网 2019-05-28
  • 2019年考研北航信息与通信工程干货经验分享
    前记在刚开始确定考研之前,我就曾经想过如果我被录取了,我会把我的经验分享给大家。好了,下面进入正题。政治  一开始跟着徐涛和肖秀荣的精讲精练学习,然后适当的做点笔记,什么该记什么不该记的,上面介绍的都很清楚。然后做肖秀荣一千题巩固基础,我一千题只刷了一遍(时间充足的话可以多做几遍,加深记忆)。大题的 ...
    本站小编 Free考研网 2019-05-28
  • 2020-2021北京大学比较文学与世界文学考研招生信息、参考书、报录比、考研经验大汇总
    今天给大家分享北京大学中文系比较文学与世界文学考研招生信息参考书目报录情况考研经验。一院系介绍北京大学中文系目前有全国最完整的中国语言文学学科建制,共有5个本科专业方向,8个博士学位授予点,并设有1个博士后流动站。1986年5个二级学科古代文学现当代文学汉语言文字学语言学 ...
    本站小编 Free考研网 2019-05-28
  • 2010年北京理工大学会计硕士(MPAcc)考研最全信息
    管综:数学《MBAMPAcc联考同步复习指导系列:数学分册》袁进等机械工业出版社《MBAMPAMPAcc联考综合能力数学高分指南》陈剑主编北航出版社《管理类专业学位联考数学高分一本 ...
    本站小编 Free考研网 2019-05-28
  • 2019北京大学数据科学(统计学)考研经验分享及备考指导
    自我介绍一下,本科为某985院校统计学专业学生,考研目标院校是北大数据科学(统计学),当北大出拟录取结果的时候,我曾经不止一次地期望这一刻早日到来,但是真正到来的那一刻,我却没有想象中那样激动。因为我知道,未名湖边博雅塔下挑灯夜战的时光,只是我在漫漫求学路上一段短暂的旅程,体验过这一段经历之后,生活 ...
    本站小编 Free考研网 2019-05-28
  • 2020年北京大学风景园林考研招生人数,考试科目,参考书目,复试分数线,注意事项,考研经验
    本文将由考研钟老师对2019北京大学风景园林专业考研进行解析,20考研可以参考。主要有以下几个板块:北京大学,招生人数,研究方向,考研科目介绍,考研参考书目,风景园林备考经验及风景园林专业院校排名情况等几大方面。一北京大学北京大学,简称北大,诞生于1898年,初名京师大学堂,是中国近代第一所国立大学 ...
    本站小编 Free考研网 2019-05-28
  • 北京电影学院2019年全国硕士研究生招生考试初试美术学院、动画学院、当代艺术研究院、数字媒体学院考试绘画工具要求
    招生院系研究方向名称业务课二名称是否绘画考生自备用具美术学院电影特技模型及理论研究(全日制)影片分析否自备文具实验艺术研究(全日制)命题创作是绘画工具(水彩水粉铅笔钢笔均可)中国电影衍生产业发展(全日制)电影衍生产业发展理论与实践否自备文具电影美术创作理论(全日制)影片分析否自备文具电影美术创作(全 ...
    本站小编 Free考研网 2019-05-28
  • 2020年上海师范大学比较文学与世界文学考研考试科目、招生人数、参考书目
    2020年上海师范大学比较文学与世界文学考研考试科目招生人数参考书目学院学科研究方向联系方式拟招人数考试科目专业方向备注专业复试形式与内容101人文与传播学院联系电话:**联系人:张虹050108比较文学与世界文学拟招生人数:23科目说明:633外国文学与比较文学(同卷但不同方向试题)世界文学方向: ...
    本站小编 Free考研网 2019-05-28
  • 天津工业大学2019年硕士研究生招生复试笔试科目 微机原理
    科目编号:科目名称:微机原理与接口技术一考试的总体要求注重考查以8088/8086处理器为代表的微机原理基础知识基本概念的掌握情况,要求具有一定的汇编语言编程能力。二考试的内容1.微型计算机系统,计算机中的数值及编码。2.8088/8086CPU的功能结构存储组织及工作时序。3.8086/8088指 ...
    本站小编 Free考研网 2019-05-28
  • 天津工业大学2019年硕士研究生招生复试笔试科目 有机化学
    参考书:有机化学:第四版,高鸿宾主编,高等教育出版社大纲:(1)正离子和自由基的稳定性(2)烯烃和炔烃活泼氢反应(3)双烯合成(4)取代基规则(5)烯烃聚合及其机理(6)缩合反应(羟醛缩合)(7)酯化反应(包括有机酸反应)及其机理(8)多糖,纤维素,纤维素醚化和酯化,及其机理(9)烯烃和炔烃的氧化反 ...
    本站小编 Free考研网 2019-05-28