复试上机准备之二零一四上机题
问题描述
- 在三位整数(100 至 999)中寻找符合下列条件的整数并依次从小到大输出。
 
(1)完全平方数。
(2)含有两位数字相同。
例:144,676…
- 输入一串字符串,把下标为奇数的小写字母(从 0 开始编号)转换为大写字母。
 
输出转换后的字符串。
代码分别如下
第一题
# include <iostream>
# include <cmath>  // 用来求平方根
using namespace std;
bool is_square(int num) {
    double x = sqrt(num);
    int y = (int)x;
    return x == y;
}
bool has_same_nums(int num) {
    int x = num / 100;
    int y = (num - x * 100) / 10;
    int z = num - x * 100 - y * 10;
//    cout << x << ' ' << y << ' ' << z;
    return x == y || x == z || y == z;
}
int main() {
    for (int i = 100; i <= 999; ++i) {
        if (is_square(i) && has_same_nums(i)) {
            cout << i << ' ';
        }
    }
    cout << endl;
    return 0;
}
第二题
# include <iostream>
# include <string>
using namespace std;
int main() {
    string str;
    int interval = 'a' - 'A';
    while (cin >> str) {
        for (int i = 0; i < str.length(); ++i) {
            if (i % 2 == 1) continue;
            if (str[i] - 'a' >= 0 && str[i] - 'z' <= 0) {
                str[i] -= interval;
            }
        }
        cout << str << endl;
    }
    return 0;
}