您的位置:首页 > 其它

2008年北理复试上机题

2017-02-23 22:21 246 查看
历年北京理工大学复试上机题题目汇总:

http://blog.csdn.net/u014552756/article/details/78505845

1、存储一组姓名,如Apple,Tom,Green,Jack要求能排序、按字母顺序插入、并显示。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
string s;
vector<string> st;

cout<<"请输入单词,以00结束:"<<endl;

vector<string>::iterator i;
while(cin>>s)
{
if(s=="00")
break;
st.push_back(s);

sort(st.begin(),st.end());

for(i=st.begin(); i!=st.end(); i++)
{
if(i==st.begin())
cout<<*i;
else
cout<<" "<<*i;
}
cout<<"请输入单词,以00结束:"<<endl;
}

return 0;
}


#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
int n=0;
string s,str[105];
while(cin>>s)
{
str[n++]=s;

sort(str,str+n);

for(int i=0; i<n; i++)
{
if(i==0)
cout<<str[i];
else
cout<<" "<<str[i];
}
cout<<endl;
}
return 0;
}
2、输入文件名及路径创建该文件,并把从键盘输入的内容保存到该文件,最后将该文件的路径、该文件名及文件中的内容输出到屏幕。

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
string fname,name,road,cont;

cout<<"请输入文件路径及其文件名:格式如E:\\xx\\xx\\xx.txt"<<endl;
cin>>fname;
ofstream out(fname.c_str());//c_str()函数返回一个指向正规C字符串的指针
cout<<"请输入文件的内容,以00结束:"<<endl;
while(cin>>cont)
{
if(cont=="00")
break;
out<<cont<<endl;
}

int j;
for(int i=0; i!=fname.length(); i++)
{
if(fname[i]=='\\')
j=i;
}

road=fname.substr(0,j-1);
name=fname.substr(j+1,fname.length());

cout<<"文件路径为:"<<road<<endl<<"文件名为:"<<name<<endl;
cout<<"文件内容为:";

cont="";
ifstream in(fname.c_str());

while(in>>cont)
{
cout<<cont<<" ";
}

return 0;
}
3、设计捕获两种不同类型的异常,一个是被0除,另一个是数组越界。

#include <iostream>
#include <vector>
using namespace std;
class A {};
class B {};

int main()
{
int a,b,length;
vector<int> arr;

cout<<"请输入除数和被除数:"<<endl;
cin>>a>>b;
try
{
if(b==0)
throw A();
else cout<<"数值正常可以进行计算,其结果为:"<<a/b<<endl;

cout<<"请输入数组长度:"<<endl;
cin>>length;
cout<<"请输入数组内容,以0结束"<<endl;

int i=0;
while(cin>>a)
{
if(a==0)
break;
arr.push_back(a);
i++;
}
if(i>length)
throw B();
else
{
vector<int>::iterator j;
for(j=arr.begin(); j!=arr.end(); j++)
cout<<*j<<" ";
}
}
catch(A)
{
cout<<"0不可以作为除数。"<<endl;
}
catch(B)
{
cout<<"数组发生了越界。"<<endl;
}
catch(...)
{
cout<<"发生了其他异常。"<<endl;
}

return 0;
}

4、设计一个程序能计算日期的间隔,如输入两个日期分别为2008-2-3和2008-3-9计算相隔多少天,或2008-2-3加上100天后的日期是多少。

#include <iostream>
using namespace std;

int Getdays(int y,int m,int d)//求距离1年1月1日的距离
{
int month[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
int year=y-1;
int days=year*365+year/4-year/100+year/400;//求出包括平年闰年的天数总和
if(y%4==0&&y%100!=0||y%400==0)//若当前年为闰年则二月加一天
month[1]=29;

for(int i=0; i<m-1; i++)
days+=month[i];
days+=d-1;
return days;
}

void Getdate(int y,int m,int d,int n)
{
int dd=n;
int month[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
if(y%4==0&&y%100!=0||y%400==0)//若当前年为闰年则二月加一天
month[1]=29;

int t1=month[m-1]-d;//距离当前月结束还有多少天
int t2=0;//距离下一年1月1日还有多少天
for(int i=m-1; i<12; i++)
t2+=month[i];
t2-=d;

if(n<=t1)//加上n天后在本月
{
d+=n;
cout<<"加上"<<dd<<"天后的日期为:";
cout<<y<<" "<<m<<" "<<d<<endl;
}
else if(n>t1&&n<=t2)//加上n天后还在本年
{
m+=1;////将日期转为下个月的1日
d=1;
n=n-t1-1;
if(n==0)
{
cout<<"加上"<<dd<<"天后的日期为:";
cout<<y<<" "<<m<<" "<<d<<endl;
}
else
{
for(int i=m-1; i<12; i++)
{
if(n-month[i]<0)
{
d+=n;
cout<<"加上"<<dd<<"天后的日期为:";
cout<<y<<" "<<m<<" "<<d<<endl;
break;
}
else
{
n-=month[i];
m+=1;
}
}
}
}
else if(n>t2)//加上n天后不在本年
{
int flag=0;
y+=1;//将日期转为下一年的1月1日
m=1;
d=1;
n=n-t2-1;
if(n==0)
{
cout<<"加上"<<dd<<"天后的日期为:";
cout<<y<<" "<<m<<" "<<d<<endl;
}
else
{
for(int j=y; n!=0; j++)
{
if(flag==1)
break;
int t=0;
if(y%4==0&&y%100!=0||y%400==0)//若当前年为闰年
{
t=n-366;
month[1]=29;
}
else
{
t=n-365;
month[1]=28;
}
if(t<=0)//日期在当前年
{
for(int i=m-1; i<12; i++)
{
if(n-month[i]<0)
{
d+=n;
cout<<"加上"<<dd<<"天后的日期为:";
cout<<y<<" "<<m<<" "<<d<<endl;
flag=1;
break;
}
else
{
n-=month[i];
m+=1;
}
}
}
else//日期不在本年
{
n=t;
y+=1;
}
}
}
}
}

int main()
{
int y1,y2,m1,m2,d1,d2,op,n;
cout<<"请输入所需要的功能:1、计算两个日期的间隔。2、计算一个日期加上一百天后的结果。"<<endl;
cin>>op;
if(op==1)//计算两个日期的间隔
{
cout<<"请输入第一个日期:"<<endl;
cin>>y1>>m1>>d1;
cout<<"请输入第二个日期:"<<endl;
cin>>y2>>m2>>d2;

int t1=Getdays(y1,m1,d1);
int t2=Getdays(y2,m2,d2);
if(t1>t2)
cout<<t1-t2<<endl;
else
cout<<t2-t1<<endl;
}
else if(op==2)//计算一个日期加上一百天后的结果
{
cout<<"请输入日期:"<<endl;
cin>>y1>>m1>>d1;
cout<<"请输入相隔天数:"<<endl;
cin>>n;
Getdate(y1,m1,d1,n);
}
else
return 0;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: