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

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


2010年机试真题
1.输入一串整数,输入命令排序!
输入 a t 在这串整数后面添加整数 t,
输入 c\m\n 有 n 替换 m,
输入 d t 删除 t,
输入 s 排序。
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
vector<int> data;
vector<int>::iterator i;
string t;
cout<<"请输入一串整数,以#结尾:";
cin>>t;
while(t!="#"){
int r=0,j=0;
while(t[j]!='\0'){
r=r*10+t[j]-'0';
j++;
}
data.push_back(r);
cin>>t;
}
// 操作
cout<<"请输入:"<<endl;
while(cin>>t){
// 添加的情况
if(t[0]=='a'){
int num;
cin>>num;
// 在末尾添加数字
data.push_back(num);
}
// 修改的情况
else if(t[0]=='c'){
int j=2,num1=0,num2=0;
// 提取数字
while(t[j]!='\\'){
num1=num1*10+t[j++]-'0';
}
j++;
while(t[j]!='\0'){
num2=num2*10+t[j++]-'0';
}
// 替换
for(i=data.begin();i!=data.end();i++)
if(*i==num1){
data.erase(i);
data.insert(i,num2);
}
}
// 删除的情况
else if(t[0]=='d'){
int num;
cin>>num;
for(i=data.begin();i!=data.end();i++)
if(*i==num)
data.erase(i);
}
// 排序的情况
else if(t[0]=='s'){
sort(data.begin(),data.end());
}
else{
cout<<"输入不合法!"<<endl;
}

// 输出
for(i=data.begin();i!=data.end();i++)
cout<<*i<<" ";

cout<<"请输入:"<<endl;
}

return 0;
}
2. 输入表达式,输出值。
即中缀表达式求值:先将中缀表达式转化为后缀表达式,然后再求值。
#include<iostream>
#include<string>
#include<stack>
#include<queue>
using namespace std;

/**
* 输入中缀表达式,转化为计算机可以计算的后缀表达式,即逆波兰表达式。
* 定义运算符的优先级次序依次是+-*/(),权值越大,优先级越高
* 在栈顶时的优先级别
* int op_pri_s[6]={1,1,2,2,0,0};
* 在字符串中的优先级别
* int op_pri_q[6]={1,1,2,2,3,0};
*/
/**
* ()输入是英文的符号,记得调好输入法,我因为这个调了半个小时bug
*/
// 判定栈顶优先级权值的函数
int psta(string opt){
char op[6]={'+','-','*','/','(',')'};
int op_pri_s[6]={1,1,2,2,0,0};
for(int i=0;i<6;i++)
if(opt[0]==op[i])
return op_pri_s[i];
}
// 判定字符串中优先级权值的函数
int pstr(char opt){
char op[6]={'+','-','*','/','(',')'};
int op_pri_q[6]={1,1,2,2,3,0};
for(int i=0;i<6;i++)
if(opt==op[i])
return op_pri_q[i];
}
int main(){
stack<string> s;
queue<string> q;
string data;
cin>>data;
// 转后缀表达式
int i=0;
while(data[i]!='\0'){
string t="";
// 如果是运算符时
if(data[i]=='+'||data[i]=='-'||data[i]=='*'||data[i]=='/'||data[i]=='('||data[i]==')'){
// 栈空,直接压栈
if(s.empty()){
t+=data[i++];
s.push(t);
t="";
}
// 栈顶运算符优先级较高
else if(psta(s.top())>=pstr(data[i])){
// ***可能多次弹栈,直到字符串的运算符,优先级较高
while(psta(s.top())>=pstr(data[i])){
if((data[i]==')'&&s.top()=="("))
break;
q.push(s.top());
s.pop();
// 防止栈空,造成空指针异常
if(s.empty())
break;
}
// 括号匹配的情况,!s.empty()防止栈空,造成空指针异常
if(!s.empty()&&data[i]==')'&&s.top()=="("){
i++;
s.pop();
}
else{
t+=data[i++];
s.push(t);
t="";
}
}
// 字符串运算符优先级较高
else{
t+=data[i++];
s.push(t);
t="";
}

}
// 如果是数字
else
{
// 提取数字
while(data[i]!='+'&&data[i]!='-'&&data[i]!='*'&&data[i]!='/'&&data[i]!='('&&data[i]!=')'&&data[i]!='\0'){
t+=data[i++];
}
// 直接入队
q.push(t);
t="";
}
}
// 把栈弹空
while(!s.empty()){
q.push(s.top());
s.pop();
}

// 测试输出后缀表达式
/*while(!q.empty()){
cout<<q.front();
q.pop();
}
cout<<endl;*/

// 计算,还得用到栈。遇到数字压栈,遇到运算符弹出栈顶两个数字,进行计算。
double a=0,b=0;
stack<double> st;
while(!q.empty()){
string d=q.front();
q.pop();
if(d=="+"){
b=st.top();
st.pop();
a=st.top();
st.pop();
st.push(a+b);
}
else if(d=="-"){
b=st.top();
st.pop();
a=st.top();
st.pop();
st.push(a-b);
}
else if(d=="*"){
b=st.top();
st.pop();
a=st.top();
st.pop();
st.push(a*b);
}
else if(d=="/"){
b=st.top();
st.pop();
a=st.top();
st.pop();
st.push(a/b);
}
else{
double temp=0;
int k=0,
flag=0; // 小数部分的标志
// 提取数字
while(d[k]!='\0'){
if(d[k]=='.'){
k++;
flag=10;
continue;
}
if(flag){
temp=temp+(d[k++]-'0')/(flag/1.0);
flag*=10;
}
else{
temp=temp*10+d[k++]-'0';
}
}
st.push(temp);
}
}

cout<<st.top()<<endl;

return 0;
}
2011年机试真题

1. 输入一组单词(区分大小写),统计首字母相同的单词个数,相同的单词不累加,输出格式:“字母,个数”#include <iostream>
#include <map>
#include <set>
using namespace std;

int main()
{
set<string> s;
map<char,int> m;
string str;
while(cin>>str)
{
s.insert(str);
}

set<string>::iterator it;
for(it=s.begin(); it!=s.end(); it++)
{
++m[(*it)[0]];
}

map<char,int>::iterator mit;

for(mit=m.begin(); mit!=m.end(); mit++)
{
cout<<mit->first<<" "<<mit->second<<endl;
}

return 0;
}
2. 输入一组单词(区分大小写),输出其字典排序
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
int n=0;
string a[105],s;
while(cin>>s)
{
if(s=="0")
break;
else
a[n++]=s;
}
sort(a,a+n);
for(int i=0;i<n;i++)
cout<<a[i]<<endl;
return 0;
} 3.给一个字符串(aaaa(bbbb(cccc,dddd),eeee(ffff)))该字符串表明的是各个人的层次关系。比如aaaa是bbbb和eeee的领导,bbbb是cccc和dddd的领导。先输入一个名称,比如ffff,要求输出其领导关系,输出aaaa>eeee>ffff。#include <iostream>
#include <string>
using namespace std;
int main()
{
//(aaaa(bbbb(cccc,dddd),eeee(ffff)))
int n=0;
string s,str[105],t;//str为字符串栈
cin>>s>>t;
for(int i=0; i<s.length(); i++)
{
if(s[i]=='(')
{
str[n++]=s[i];
}
else if(s[i]==',')//遇到逗号时将逗号和前一个左括号之间的内容删除
{
for(int k=n-1; k>=0; k--)
{
if(str[k]!="(")
n--;
else if(str[k]=="(")
{
break;
}
}
}
else if(s[i]==')')//遇到右括号将右括号和前一个左括号之间的内容和左括号删除
{
for(int k=n-1; k>=0; k--)
{
if(str[k]!="(")
n--;
else if(str[k]=="(")
{
n--;
break;
}
}
}
else//字母或数字
{
int j;
string tt="";
for(j=i; j<s.length(); j++)
{
if((s[j]>='a'&&s[j]<='z')||(s[j]>='A'&&s[j]<='Z'))
tt+=s[j];
else
{
str[n++]=tt;
break;
}
}
if(tt==t)//找到目标字符串则退出循环
break;
i=j-1;
}
}

for(int i=0; i<n; i++)
{
if(str[i]!="(")
{
if(str[i]!=t)
cout<<str[i]<<">";
else
cout<<str[i];
}
}
cout<<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
  • 西南大学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
  • 2018中国地质大学传播学新闻学真题(回忆版)
    【【咨询电话】**【QQ号码】**【微信号码】** ...
    本站小编 Free考研网 2019-05-28