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保持不变,两直角边相加)。
创建在坐标系中的直角三角形样子如下:
A
|
|
|
|
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: 又是类类类!! 害 以后一定搞懂它,如有不对地方,欢迎大佬指正!