北京理工大学计算机学院复试上机题目
由于编者水平有限,如有错误,请多多包涵。欢迎各位指正,转载请注明,谢谢合作!
1.写一个程序判断字符串中数字的位置(不限制使用面向对象编程)
例如:输入 a3b4c5
输出 2 4 6。
#include<iostream>
#include<string>
using namespace std;
int main(){
string str;
cin>>str;
int i=0;
while(str[i]!='\0')
if(str[i++]>='0'&&str[i-1]<='9')
cout<<i<<" ";
cout<<endl;
return 0;
}
2.写一个类,能接受 int 型的变量,接收变量后能存储原变量(譬如 12345)和其反向变量
(54321),最多处理数量为 10 个,当输入达到 10 个或者输入变量为 0 的时候停止。并且在
类销毁前输出存储的所有变量。
例如:输入:12345,2234,0
输出:12345 54321
2234 4322
#include<iostream>
#include<vector>
using namespace std;
class Int{
public:
vector<int> a;
vector<int> b;
};
int reverse(int a){
int b=0;
while(a){
b=b*10+a%10;
a/=10;
}
return b;
}
int main(){
Int *inte;
// 分配空间
inte = new Int;
vector<int>::iterator it1,it2;
int count=0,t;
cout<<"输入: ";
while(count<10){
cin>>t;
if(t==0)
break;
inte->a.push_back(t);
inte->b.push_back(reverse(t));
count++;
}
// 遍历输出
cout<<"输出: "<<endl;
for(it1=inte->a.begin(),it2=inte->b.begin();it1!=inte->a.end();it1++,it2++)
cout<<*it1<<" "<<*it2<<endl;
// 销毁对象
delete inte;
return 0;
}
3.写一个 CTriangle 类,要求可以接受CTriangle(y,x)形式的构造,创建在坐标系中的直角三角形样子如下:
A
| \
| \
| \
| \
B -----------C
三点的坐标分别是 A(0,y)、B(0,0)、C(x,0)实现+运算,并且能够处理键盘连续输入若干个(少于十个)三角形,并且连加(相加时候三角形边长长度相加,方向同第一个三角形)。输入0 后结束并输出最后得出的三角形的三个坐标值。
例如:输入:
1 2
-1 -5
输出: A(0,7),B(0,0),C(2,0)
#include<iostream>
#include<math.h>
using namespace std;
int flag_x,flag_y; // 记录方向
class CTriangle{
public:
double y;
double x;
CTriangle(){}
CTriangle(double yl,double xl){
y=yl;
x=xl;
}
CTriangle operator+(CTriangle A){
return CTriangle(flag_y*(abs(y)+abs(A.y)),flag_x*(abs(x)+abs(A.x)));
}
};
int main(){
int count=1; // 记录三角形个数
double sum_x,sum_y,x,y;
cin>>x>>y;
// 输入不合法
if(x*y==0)
return 0;
flag_x=x>0?1:-1;
flag_y=y>0?1:-1;
CTriangle t(y,x);
while(count<10){
cin>>x;
if(x==0)
break;
cin>>y;
CTriangle temp(y,x);
t=t+temp;
}
cout<<"A(0,"<<t.y<<")"<<",B(0,0),C("<<t.x<<",0)"<<endl;
return 0;
}