B2155 合法 C 标识符

· · 题解

欢迎报名洛谷网校,期待和大家一起进步!

本题考察字符串。

我们首先读入字符串 s。首先,我们先检查 s 的第一个字符。如果是字母(大写或小写)或下划线,就继续后面的检查。否则直接判定为非法。参考代码:

char c0 = s[0];
if (!((c0 >= 'A' && c0 <= 'Z') || (c0 >= 'a' && c0 <= 'z') || c0 == '_'))
    ok = false;

再检查 s 的每个字符。如果它是字母、数字或下划线,就继续;否则判定为非法。

for (int i = 1; ok && i < s.length(); ++i) {
    char c = s[i];
    bool isLetter = (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'); // 大小写字母
    bool isDigit = (c >= '0' && c <= '9'); // 数字
    bool isUnder = (c == '_'); // 下划线
    if (!(isLetter || isDigit || isUnder))
        ok = false;
}