合法 C 标识符

GitHub跳转原题关系图返回列表

检查首字符非数字且所有字符为字母、数字或下划线,判断 C 标识符合法性。

OJ: noi_openjudge

题目 ID: ch0107-06

难度:入门

标签:字符串条件判断python

日期: 2026-07-30 23:01

题意

判断非保留字字符串是否是合法 C 标识符。

思路

首字符不能是数字;所有字符必须满足 isalnum() 或为下划线。两个条件同时成立才输出 yes

代码

Python代码

python
identifier = input().strip()
is_valid = not identifier[0].isdigit() and all(character.isalnum() or character == "_" for character in identifier)
print("yes" if is_valid else "no")

C++代码

cpp
#include <cstdio>
#include <cstring>
#define maxn 500

int n;
char str[maxn];

int main(){
    scanf("%s",str+1);
    int i;
    int len = strlen(str+1);
    if( str[1] >= '0' && str[1] <='9'){
            printf("no");
            return 0;
    }
    for (i=1;i<=len;i++){
        char c = str[i];
        if( (c >= 'a' && c <='z' ) || (c >='A' && c <='Z') || c== '_' || ( str[i] >= '0' && str[i] <='9'))
            ;
        else{
            printf("no");
            return 0;
        }
    }
    printf("yes");
    return 0;
}

复杂度

时间复杂度为 O(n)O(n),额外空间复杂度为 O(1)O(1)

总结

标识符判定可拆成“首字符规则”和“全体字符规则”。