北理复试上机题2006年

1、写一个程序判断字符串中数字的位置(不限制使用面向对象编程)例如:输入 a3b4c5,输出 2 4 6 。

#include <iostream>
#include <string>
#include<vector>
using namespace std;
/*
1、写一个程序判断字符串中数字的位置(不限制使用面向对象编程)例如:输入 a3b4c5,输出 2 4 6 。
*/
int main()
{
	vector<int> pos;
	cout<<"请输入一串字符串:";
	string str;
	cin>>str;
	for(int i=0;i<str.length();i++){
		if(str[i]>='0' and str[i]<='9')
			pos.push_back(i+1);
	}  
	for(int i=0;i<pos.size();i++){
		cout<<pos[i]<<" ";
	} 
    return 0;
}

2、写一个类,能接受int 型的变量,接收变量后能存储原变量(譬如 12345)和其反向变量(54321) ,最多处理数量为 10 个,当输入达到 10 个或者输入变量为 0 的时候停止。并且在类销毁前输出存储的所有变量。 例如:
输入:12345,2234,0

输出:12345 54321

           2234 4322

#include <iostream>
#include<vector>
using namespace std;
/*
2、写一个类,能接受int 型的变量,接收变量后能存储原变量(譬如 12345)和其反向变量(54321) ,
   最多处理数量为 10 个,当输入达到 10 个或者输入变量为 0 的时候停止。并且在类销毁前输出存储的所有变量。 
   例如:
输入:12345,2234,0

输出:12345 54321

      2234 4322
*/
class re{
	private:
		vector<int> vc;
	public:
		re(){}
		void reverse(int& a){
			int num=0;
			while(a){
				num=num*10+a%10;
				a=a/10;
			}
			a=num;
		}
		void dispose(){
			for(vector<int>::iterator it=vc.begin();it!=vc.end();it++){
				int s = *it;
				cout<<s;
				reverse(s);
				cout<<" "<<s<<endl;
			}
		}
		void push(int t){
			this->vc.push_back(t);
		}
};
int main()
{
	re *r;
	r = new re;
	int count=1, t;
	cout<<"请输入:";
	while(count<10){
		cin>>t;
		if(t==0) break;
		r->push(t);
		count++;
	}
	r->dispose();

    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<cmath>
using namespace std;

int firstDirX, firstDirY; 
class CTriangle{
	private:
		int m_x;
		int m_y;
		int m_dirx;//1 正  -1 负数
		int m_diry; 
	public:
		CTriangle(){}
		CTriangle(int y, int x):m_y(y),m_x(x){
		}
		void assign(int y, int x){
			this->m_y = y;
			this->m_x = x;
		}
		CTriangle& operator+(CTriangle a); 
		void show(){
			cout<<"A(0,"<<m_y*firstDirY<<")、B(0,0)、C("<<m_x*firstDirX<<",0)"<<endl;
		}
};
CTriangle& CTriangle::operator+(CTriangle a){
	CTriangle c;
	c.m_x = abs(m_x)+abs(a.m_x);
	c.m_y = abs(m_y)+abs(a.m_y);
	return c;
}
int main()
{
    CTriangle c1, c2;
    int count=1, x, y;
    cout<<"请输入三角形A(0,y)、B(0,0)、C(x,0)中的 y  x 值:<输入0结束>"<<endl;
    cin>>y>>x;
    if(y*x==0) {
		cout<<"输入非法,不能为0"<<endl;
		exit(0); 
	}
    c1.assign(y, x);
    firstDirX = x>0?1:-1;
    firstDirY = y>0?1:-1;
    while(count<10){
    	if(y==0||x==0) {
    		break;
		}
		cin>>y>>x;
		CTriangle temp(y, x);
		c1=c1+temp;
    	count++;
	}
 	c1.show();
    return 0;
}

作者:无涯明月

上篇: 北理复试上机题2005年

猜你喜欢

转载自blog.csdn.net/qq_26460841/article/details/88335532