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年