北京理工大学计算机学院复试上机题目
由于编者水平有限,如有错误,请多多包涵。欢迎各位指正,转载请注明,谢谢合作!
1.给定一个程序,关于字符串的,要求输入并调试,说出此程序的意图。意图是按字
母顺序对两个字符串比较排序。第二问要求用尽可能少的语句对该程序进行修改,使其能够
对两个字符串比较长度排序。本题满分 20。
#include<iostream>
#include<string>
using namespace std;
void main()
{
string str1,str2;
cout<<"请输入两个字符串:";
cin>>str1>>str2;
if(str1.length()>str2.length())
cout<<str1<<"is long than"<<str2<<endl;
else if(str1.length()==str1.length())
cout<<str1<<" and "<<str2<<" is equal long"<<endl;
else
cout<<str2<<"is long than "<<str1<<endl;
}
2.要求编写一个日期类,要求按xxxx-xx-xx 的格式输出日期,实现加一天的操作,不考虑闰年问题,所有月份设为 30 天。本题黑盒测试时,输入 2004 年 3 月 20 日,得到加一天后时间为 2004-3-21,能得一部分分数。输入 2004 年 3 月 30 日,得到加一天后时间为2004-4-1,能得一部分分数。输入 2004 年 12 月 30 日,得到加一天后时间为 2005-1-1,且有时间越界处理,能得全部分数。本题满分 30。
#include<iostream>
using namespace std;
class Date{
public:
int year;
int month;
int day;
Date(){}
Date(int y,int m,int d){
year=y;
month=m;
day=d;
}
void nextDate(){
day++;
if(day>30){
day=1;
month++;
if(month>12){
month=1;
year++;
}
}
}
void show(){
cout<<year<<"-"<<month<<"-"<<day<<endl;
}
};
int main(){
int year,month,day;
while(1){
cout<<"请输入日期:";
cin>>year>>month>>day;
if(year<1||month<1||month>12||day<1||day>30){
cout<<"时间不合法,请重新输入!"<<endl;
continue;
}
Date date(year,month,day);
date.nextDate();
date.show();
}
return 0;
}
3.要求编写一个复数类,要求有 4 条。一是有构造函数,能对复数初始化。二是对复数
c1,c2,c3.....能实现连加运算,令c=c1+c2+c3+.....此处可以重载加法操作符。三是有函数
实现两个复数相加,并按照 a+ib 的形式输出。四是能实现对一个复数 c=a+ib,定义 double x=c有效,使 x 的值为实部和虚部之和。本题满分 50
#include<iostream>
using namespace std;
class Complex{
public:
double a;
double b;
Complex(){}
Complex(double at,double bt){
a=at;
b=bt;
}
// 实现两个复数相加
Complex add(Complex B){
return Complex(a+B.a,b+B.b);
}
friend ostream& operator <<(ostream&,Complex&);
Complex operator +(Complex A){
return Complex(a+A.a,b+A.b);
}
// 类型转换函数,实现double类型=Comple类型的赋值运算
operator double(){
return a+b;
}
};
ostream& operator <<(ostream& output,Complex& A){
output <<A.a<<"+"<<"i"<<A.b;
return output;
}
int main(){
Complex a(1,2),b(2,3),d(3,2),c;
cout<<"复数a,b,d分别为:a:"<<a<<" b:"<<b<<" d:"<<d<<endl;
c=a+b+d;
cout<<"c=a+b+d的值为:"<<c<<endl;
cout<<"复数a+b等于:"<<a.add(b)<<endl;
double t=a;
cout<<"double t=a有效,赋值后t的值为:"<<t<<endl;
return 0;
}