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

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

2012年机试题解及真题
1.输入是个正整数数字,从小到大排序输入:1,2,57,9,10,45,67,24,26
输出:1,2,5,7,9,10,,24,26,45,67
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[15];
for(int i=0; i<10; i++)
cin>>a[i];

sort(a,a+10);

for(int i=0; i<9; i++)
cout<<a[i]<<",";
cout<<a[9]<<endl;

return 0;
}
2. 学生有(学号,姓名,性别,年龄),初始化三个学生的信息(10,wes, f, 23) (20, ert, f, 45) (30,str, t, 89),然后对学生信息进行插入和删除处理例如: I12,rt,f, 67表示插入12,rt,f, 67
D10表示删除学号为10的学生的信息每次操作完成以后输出所有学生的信息按学号从大到小排序
输入: I12,rt,f,67
输出(10,wes,f,23), (12,rt,f, 67), (20,ert,f,45), (30, str, t, 89)
输入: D10 输出: (12,rt,f, 67),(20,ert,f, 45), (30, str, t, 89)
#include <iostream>
#include <stdio.h>
#include <string>
#include <algorithm>
using namespace std;

struct Stu
{
int num;
string name;
string sex;
int age;
};

bool cmp(Stu a,Stu b)
{
return a.num<b.num;
}

int main()
{
char op[105];
int i,num,age,n=3;
Stu stu[105];
stu[0].num=10;stu[0].name="wes";stu[0].sex="f";stu[0].age=23;
stu[1].num=20;stu[1].name="ert";stu[1].sex="f";stu[1].age=45;
stu[2].num=30;stu[2].name="str";stu[2].sex="t";stu[2].age=89;

while(1)
{
gets(op);

if(op[0]=='0')
break;
else if(op[0]=='I')//插入
{
char name[105],sex[105];
int num,age;

sscanf(op,"I%d,%[^,],%[^,],%d",&num,name,sex,&age);//sscanf用法
stu[n].num=num;
stu[n].name=name;
stu[n].sex=sex;
stu[n].age=age;
n++;

sort(stu,stu+n,cmp);

for(i=0; i<n-1; i++)
cout<<"("<<stu[i].num<<","<<stu[i].name<<","<<stu[i].sex<<","<<stu[i].age<<"),";
cout<<"("<<stu[n-1].num<<","<<stu[n-1].name<<","<<stu[n-1].sex<<","<<stu[n-1].age<<")"<<endl;
}
else if(op[0]=='D')//删除
{
int t;
sscanf(op,"D%d",&t);
for(i=0; i<n; i++)
{
if(stu[i].num==t)
{
if(i==n-1)
{
n--;
}
else
{
stu[i].num=stu[n-1].num;
stu[i].name=stu[n-1].name;
stu[i].sex=stu[n-1].sex;
stu[i].age=stu[n-1].age;
n--;
}
break;
}
}

sort(stu,stu+n,cmp);

for(i=0; i<n-1; i++)
cout<<"("<<stu[i].num<<","<<stu[i].name<<","<<stu[i].sex<<","<<stu[i].age<<"),";
cout<<"("<<stu[n-1].num<<","<<stu[n-1].name<<","<<stu[n-1].sex<<","<<stu[n-1].age<<")"<<endl;
}
}

return 0;
} 3. 利用后序和中序确定前序遍历结果
示例:
输入(按后序中序): CHBEDA
CBHADE
输出:
ABCHDE
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

char a[20],b[20];

void f(int ab,int ae,int bb,int be)
{
int i;
if(ab>ae) return;
cout<<a[ae];
for(i=bb; b[i]!=a[ae]; i++); //后序序列的最后一个为根
f(ab,ab+i-bb-1,bb,i-1);//递归求左子树先序
f(ab+i-bb,ae-1,i+1,be);//递归求右子树先序,注意ae-1
}

int main()
{
//a为后序,b为中序
while(scanf("%s%s",a,b)!=EOF)
{
int len=strlen(a);
f(0,len-1,0,len-1);
cout<<endl;
}

return 0;
}
[cpp] view plain copy
#include <iostream>
#include <string>
using namespace std;
//建树
string a,b;

struct node
{
char c;
node *l;
node *r;
};

void dfs(node *T)
{
if(T==NULL)
return ;
cout<<T->c;
dfs(T->l);
dfs(T->r);
}

//a后序 b中序
//CHBEDA CBHADE
void f(int aa,int ae,int bb,int be,node *&T)
{
if(aa>ae||bb>be)
return ;

if(T==NULL)
{
T=new node;
T->l=T->r=NULL;
}

int i;

T->c=a[ae];

for(i=0; i<b.length(); i++)
if(b[i]==a[ae])
break;
f(aa,aa+i-bb-1,bb,i-1,T->l);//左子树
f(aa+i-bb,ae-1,i+1,be,T->r);//右子树,注意ae-1
}

int main()
{
node *T=NULL;
cin>>a>>b;
f(0,a.length()-1,0,b.length()-1,T);
dfs(T);

return 0;
}
2013年机试真题及题解
1.求两个数的最大公约数示例: : 输入 :24,18 输出 :6
#include<iostream>
using namespace std;

/**
* 辗转相除法
*/
int gcd(int m,int n){
int t=n;
if(n>m){
n=m;
m=t;
}
while(n!=0){
t=m%n;
m=n;
n=t;
}
return m;
}

int main()
{
int x,y;
cout<<"输入:";
cin>>x>>y;
cout<<"输出:"<<gcd(x,y)<<endl;
return 0;
}
2.输入一组英文单词, , 按字典顺序( ( 大写与小写字母具有相同大小写) )排序输出. .示例: :输入:Information Info Inform info Suite suite suit输出:Info info Inform Information suit Suite suite
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

// 排序规则
bool cmp(string x,string y){
int t=0;
while(x[t]!='\0'&&y[t]!='\0'){
// 统一为小写进行比较
if(x[t]>'Z')
x[t]-=32;
if(y[t]>'Z')
y[t]-=32;
// 比较当前字母大小
if(x[t]!=y[t])
return x[t]<y[t];
// 当前位置相等,比较下一位
t++;
}
if(y[t]!='\0')
return true;
return false;
}

int main()
{
string voc[100];
int n=0;
while(cin>>voc[n++]);
n--;

sort(voc,voc+n,cmp);
for(int i=0;i<n;i++)
cout<<voc[i]<<" ";
cout<<endl;

return 0;
}
3.编写程序:输入表达式,输出相应二叉树的先序遍历结果输入: a+b*(c-d)-e/f输出: -+a*b-cd/ef
#include<iostream>
#include<string>
#include<stack>
using namespace std;

/**
* 问题转化
* 前缀表达式=前序遍历;
* 中缀表达式=中序遍历;
* 后缀表达式=后序遍历;
* 因此原问题可转化为求波兰式
*/

/**
* 求波兰式:(自己研究的方法,不知道是否主流)
* 建立两个栈,s1,s2;
* 从中缀表达式的右端开始检索,遇到非运算符直接压入栈s2;
* 遇到运算符,若栈s1为空,直接压栈s1;
* 若s1非空,比较当前运算符与栈顶运算符优先级,若栈顶运算符优先级高,s1弹栈,并立刻压入s2;若当前运算符优先级高,压入s1;
* 若已经检索完表达式,s1非空,则按顺序弹栈压入s2;
* s2弹栈即为所求。
*/

// 判断字符是否为运算符
bool isOp(char a){
if(a=='('||a=='+'||a=='-'||a=='*'||a=='/'||a==')')
return true;
return false;
}

// 表达式中运算符的优先等级
int pe(char a){
// 定义运算符的优先级分别为(+-*/)
int priority[6]={0,1,1,2,2,3};
char op[6]={'(','+','-','*','/',')'};
for(int i=0;i<6;i++){
if(op[i]==a)
return priority[i];
}
}

// 栈顶运算符的优先等级
int ps(char a){
// 定义运算符的优先级分别为(+-*/)
int priority[6]={0,1,1,2,2,0};
char op[6]={'(','+','-','*','/',')'};
for(int i=0;i<6;i++){
if(op[i]==a)
return priority[i];
}
}

int main()
{
stack<char> s1,s2;
string exp;
cin>>exp;
// 从右向左搜索表达式
for(int i=exp.length()-1;i>=0;i--){
bool flag=true;
// 左右括号匹配抵消的情况
if(exp[i]=='('&&s1.top()==')'){
s1.pop();
continue;
}
// 非运算符直接压入s2
if(!isOp(exp[i]))
s2.push(exp[i]);
else{
// s1为空,直接压栈
if(s1.empty())
s1.push(exp[i]);
// s1非空,比较当前运算符与栈顶运算符优先级
else{
// 当前运算符优先级高,压入s1
if(pe(exp[i])>=ps(s1.top()))
s1.push(exp[i]);
// 栈顶运算符优先级高,s1弹栈,并立刻压入s2
else{
while(pe(exp[i])<ps(s1.top())){
char t=s1.top();
s2.push(t);
s1.pop();
// 防止栈空出错
if(s1.empty())
break;
// 左右括号匹配抵消的情况
if(exp[i]=='('&&s1.top()==')'){
s1.pop();
flag=false;
break;
}
}
if(flag)
s1.push(exp[i]);
}
}

}
}

// 已经检索完表达式,s1非空,则按顺序弹栈压入s2
while(!s1.empty()){
char t=s1.top();
s2.push(t);
s1.pop();
}

// 输出结果
while(!s2.empty()){
cout<<s2.top();
s2.pop();
}
cout<<endl;

return 0;
}
2014年机试真题及题解
1.系统中有最近打开文件的记录, , 现用整数表示打开的文件名,, 且只
显示最近 3 3 个打开的文件, , 输出文件序列. .示例: :输入 :1 输出 :1输入 :2 输出 :2,1输入 :3 输出 :3,2,1输入 :4 输出 :4,3,2输入 :1 输出 :1,4,3输入 :4 输出 :1,4,3输入 :3 输出:1,4,3
#include<iostream>
#include<vector>
using namespace std;

int main()
{
vector<int> v; // 定义一个向量,用于存储数据
int temp; // 记录最近打开的文件
cout<<"输入:";
while(cin>>temp){
bool ie=false;
// 如果已打开文件不足三个,直接插入数据
if(v.size()<3)
v.insert(v.begin(),temp);
// 如果已打开文件已有三个,判断输入数据是否存在
else{
for(int i=0;i<v.size();i++)
if(v.at(i)==temp)
ie=true;
// 不存在
if(!ie){
// 删除末尾数据
v.pop_back();
// 首部添加新数据
v.insert(v.begin(),temp);
}
}

// 输出
cout<<"输出:";
// 通过迭代器遍历向量
for(vector<int>::iterator j=v.begin();j!=v.end();j++)
cout<<*j<<" ";
cout<<endl;
cout<<"输入:";
}

return 0;
}
2.在第一题基础上, , 稍作改动, , 显示最新打开的文件. .示例: :输入 :1 输出 :1输入 :2 输出 :2,1输入 :3 输出 :3,2,1输入 :4 输出 :4,3,2输入 :1 输出 :1,4,3输入 :4 输出 :4,1,3输入 :3 输出 :3,4,1
#include<iostream>
#include<vector>
using namespace std;

int main()
{
vector<int> v; // 定义一个向量,用于存储数据
int temp; // 记录最近打开的文件
cout<<"输入:";
while(cin>>temp){
int pos;
bool ie=false;
// 判断输入数据是否存在
for(int i=0;i<v.size();i++){
if(v.at(i)==temp){
ie=true;
pos=i;
}
}
// 存在,将该数据放在首部
if(ie){
v.erase(v.begin()+pos);
v.insert(v.begin(),temp);
}
// 不存在
else{
// 如果已打开文件不足三个,直接插入数据
if(v.size()<3)
v.insert(v.begin(),temp);
else{
// 删除末尾数据
v.pop_back();
// 首部添加新数据
v.insert(v.begin(),temp);
}
}

// 输出
cout<<"输出:";
// 通过迭代器遍历向量
for(vector<int>::iterator j=v.begin();j!=v.end();j++)
cout<<*j<<" ";
cout<<endl;
cout<<"输入:";
}

return 0;
}
3.求广义表的深度( ( 实际就是括号匹配 ), 示例: : 输入(c,((d,e),f),h)输出:3
#include<iostream>
#include<string>
#include<stack>
using namespace std;

/**
* 实际求括号匹配中,栈的深度
*/

int main()
{
stack<int> s;
int i=0,deep=0,max_deep=0;
string list;
cin>>list;
// 只关心括号匹配问题,其他字符略过。假设左括号压栈为0
while(list[i]!='\0'){
if(list[i]=='('){
s.push(0);
if(max_deep<++deep)
max_deep=deep;
}
else if(list[i]==')'){
s.pop();
deep--;
}
i++;
}
cout<<"输出"<<max_deep<<endl;

return 0;
}

相关话题/数据 信息 真题 序列 系统

  • 领限时大额优惠券,享本站正版考研考试资料!
    大额优惠券
    优惠券领取后72小时内有效,10万种最新考研考试考证类电子打印资料任你选。涵盖全国500余所院校考研专业课、200多种职业资格考试、1100多种经典教材,产品类型包含电子书、题库、全套资料以及视频,无论您是考研复习、考证刷题,还是考前冲刺等,不同类型的产品可满足您学习上的不同需求。 ...
    本站小编 Free壹佰分学习网 2022-09-19
  • 华中师范大学2016年中国近现代史复试真题
    近代史研究所和历史系都用这一套题。一简答1简述洋务运动的历史意义。2简述20世纪30年代关于中国社会性质的论战。二论述1论述孙中山先生的革命思想和革命活动。题目很容易,中规中矩。前两道题分数一样,少于第三道,具体多少分忘记了。三道题总分一百。占复试总成绩的40%。华中师范的初试题目就是有两个特点,一 ...
    本站小编 Free考研网 2019-05-28
  • 西南大学677考研真题回忆
    单选有60道,多选有10道简答5个价值观的特点和类型;情绪的基本维度;测验施测前的准备工作;负强化和惩罚的区别并举例子;观察学习的四个过程。综合3个3个基本感觉都在考实验设计,本人记忆有限,就回忆不出来了。第二个和阈限的测量有关,第三个有统计的内容,不过不是计算给明年考研的孩子的建议西南大学的心理学 ...
    本站小编 Free考研网 2019-05-28
  • 北京理工大学计算机近几年机试真题及题解 上
    2010年机试真题1.输入一串整数,输入命令排序!输入at在这串整数后面添加整数t,输入c\m有n替换m,输入dt删除t,输入s排序。#include#include#include#includeusingnamespa ...
    本站小编 Free考研网 2019-05-28
  • 西南大学2017翻译硕士笔译真题回忆
    考试结束了,想起自己一个人从天黑走到天亮,整个过程不容易,希望能够尽一点点力,帮助后面的考研er。给大家回忆一下真题。第一科211翻译硕士英语西大的不偏,20个单选,2个阅读,2个paraphrase(大概三四行左右,大家用高级英语的课本练习,掌握一定的技巧),一个文学翻译,是那种特别长的长句,有一 ...
    本站小编 Free考研网 2019-05-28
  • 2016华师企管考研真题回忆分享
    一名词解释概念技能事业部制风险控制领导素质沟通战略管理二简答题1简述X理论与Y理论的主要观点极其应对措施2简述决策与计划的关系3简述管理宽度与管理层次的关系4简述熊彼德的创新思维三分析题1论述古典管理理论的主要流派及其主要贡献2试结合我国国有企 ...
    本站小编 Free考研网 2019-05-28
  • 18武大汉语国际教育汉语基础真题
    2018汉语基础(A卷)一名词解释1.偏义复词2.能愿动词3.借代4.同义连文5.避讳二解加点词的意思髧彼两髦,实维我特。帝高阳之苗裔兮,朕皇考曰伯庸师进,次于陉若舍郑以为东道主,行李之往来,共其乏困,君亦无所害王祭不共,无以缩酒,寡人是征。羌中道而改路三标点并翻译声伯之母不聘穆姜曰吾不以妾为姒生声 ...
    本站小编 Free考研网 2019-05-28
  • 真题最新四川大学世界史真题
    一名词解释喜克索斯人安息帝国庇西特拉图大宪章古腾堡印刷术地中海与腓力二世的地中海世界二简答1.简述地理大发现对人类历史进程的影响2.二战后美国战后霸权的体现3.资本主义产生与民族国家的关系4.明治维新成功的原因5.后现代主义史学的内容。三论述1.两次工业革命对美国的影响2.后现代史学的内容四选做题: ...
    本站小编 Free考研网 2019-05-28
  • 2018中科院(国科大)文献情报中心科技信息编辑与传播真题回忆版
    传播学概论真题【名词解释】融媒体网络舆情大数据危机处理3T原则共识会议【简答题】什么是创新扩散理论?如何评价把关理论?【论述题】论述题材料很长,我简略写一下1如何理解如果你的微博有100个粉丝,那就是一本内刊,如果有一亿粉丝,那就是cctv(这段话在网上能找到全的)2材料 ...
    本站小编 Free考研网 2019-05-28
  • 真题2018四川大学文博综合初试回忆
    名词解释8个15分一个1.大汶口文化2?3海昏侯墓4.《大唐西域记》5.?6莫高窟7.定窑8.大明宫简答4个20分一个1.博物馆的社会功能2.汉代玉衣制度3.大遗址博物馆,举例说明。4。汉代铜镜特点论述2个50分一个。1.不可移动文物种类及其特点。2。博物馆学的主要研究对象。2019年!咨询qq:* ...
    本站小编 Free考研网 2019-05-28
  • 真题(经管) 2018最新四川大学的978回忆版
    名词解释确定性决策和风险性决策成本与成本管理第三方物流经营理念选择题真题重复率百分百计算题资本定价模式的期望率(记不清了)工序能力论述题1.税收在财务管理的影响方面2.论述敏捷制造川大的专业课不难,除了每年一道超纲的财务管理题。真的建议大家好好复习专业书,我背了3遍。上去除了财管的论述不会,其他都很 ...
    本站小编 Free考研网 2019-05-28
  • 2018上海财经大学新闻学考研真题
    【614新闻传播史论】一名词解释1.精确新闻学2新世界信息秩序纷争3.分众理论4.徐宝璜和《新闻学》5.邹韬奋6.新闻事业一般功能7.延缓性新闻8.《新青年》改组9.文化帝国主义10.新闻娱乐化二简答题1.《中国日报》和资产阶级革命派报刊的兴起2.主流媒体的社会功能,举例 ...
    本站小编 Free考研网 2019-05-28
  • 2018武大308护理真题回忆版
    考研:十年专注考研名解10分医院感染ACS急性冠脉综合症反常呼吸单选50题100分简答30分需要层次论给护理实践的指导肺结核的分型肿瘤患者化学治疗后的护理大题气管切开术后护理前列腺增生硬脑膜外损伤肺性脑病如何避免肺性脑病的发生TURP术后护理鼻饲的注意事项洗胃的注意事项敌百虫洗胃液不易选择什么溶液高 ...
    本站小编 Free考研网 2019-05-28
  • 真题最新真题!2018川大行管真题回忆版本
    本站小编 Free考研网 2019-05-28
  • 真题最新真题!2018年川大中国通史(605)试题
    四川大学中国史2017/12/24中国通史(605)一1.以规范简体字和现代标点誊录图示文字。(20分)(章学诚:浙东学术一段,即史学所以经世,故非空言著述也那段。)2.图中哪句话最能反映章学诚所谓的斯義?(20分)二简答1.简述你对&ldqu ...
    本站小编 Free考研网 2019-05-28
  • 2018武大法语语言文学真题分享
    专业法语1.变名词句25分2.反义词3.汉译法法国导演米歇尔欧斯洛导的一部动画电影4.阅读lespetitestricheriesdeslycens①开放式问题你怎样看待作弊;你做过弊吗?②近义词15分③法译汉5.阅读lamixitsocialel\' ...
    本站小编 Free考研网 2019-05-28