北京理工大学复试上机--2006

1、写一个程序判断字符串中数字的位置.
例如:输入 a3b4c5   输出 2 4 6 
#include <iostream>
using namespace std;
int main() {
    string s;
    while(cin >> s) {
        for (int i = 0; i < s.length(); i++) {
            if (!isalpha(s[i])) cout << i + 1 << " ";
        }
    }
    return 0;
}
2、写一个能接受int 型的变量,接收变量后能存储原变量(譬如12345)和其反向变量(54321) 最多处理数量为 10 个,当输入达到 10 个或者输入变量为 0 的时候停止。并且在类销毁前输出存储的所有变量。
例如: 
输入:
12345 2234 0 
输出:
12345 54321
2234 4322
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int rev(int n) {
    int i = 0, j, m = 1, sum = 0;
    vector<int> v;
    while (n > 0) {
        v.push_back(n % 10);
        n /= 10;
    }
    int cnt = 0;
    for (j = v.size() - 1; j >= 0; j--) {
        if (v[j] == 0 && cnt == 0)
            continue;
        cnt++;
        sum += v[j] * m;
        m *= 10;
    }
    return sum;
}

int main() {
    int n;
    int i = 0;
    vector<int> v;
    vector<int> v2;
    while (cin >> n) {
        if (n == 0) break;
        v.push_back(n);
        v2.push_back(rev(n));
        i++;
        if (i == 10) break;
    }
    for (i = 0; i < v.size(); i++) {
        cout << v[i] << " " << v2[i] << endl;
    }
    return 0;
}
3、写一个CTriangle 类,要求可以接受CTriangle(y,x)形式的构造。表示含义如下:A(0,y) B(0,0) C(x,0)。要求能够处理若干个三角形的相加(点B保持不变,两直角边相加)。
创建在坐标系中的直角三角形样子如下: 
|   
|     
|       
B----C 
输入: 输入有若干行,每行两个数y,x,读到0表示结束。
输出: 输出一行表示三点坐标,格式参见样例。
示例1
输入
10 20
1 31
0 0
输出
A(0,11),B(0,0),C(51,0)
#include <iostream>
#include <vector>
using namespace std;

class CTriangle
{
public:
    int x = 0, y = 0;
    vector<int> vx, vy;
    void show() {
        for(int i = 0; i < vx.size(); i++) {
            x += vx[i];
            y += vy[i];
        }
        cout << "A(0," << x << "),B(0,0),C(" << y << ",0)" << endl;
    }
};


int main() {
    int a, b;
    vector<int> v1, v2;
    while(cin >> a >> b) {
        if(a == 0 || b == 0) {//这里可能需要读取两个数都为0,因为前面cin是两个
            CTriangle cc;
            cc.vx = v1;
            cc.vy = v2;
            cc.show();
            v1.clear();
            v2.clear();
            continue;//继续下一组数据的循环
        }
        v1.push_back(a);
        v2.push_back(b);
    }
    return 0;
}

PS: 又是类类类!! 害   以后一定搞懂它,如有不对地方,欢迎大佬指正!

原文地址:https://www.cnblogs.com/ache/p/12539574.html