首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

HDOJ 2024 C語言合法標識符判定

     編輯:關於C++

HDOJ 2024 C語言合法標識符 詳解

題目:輸入 n 個字符串(長度 ≤50),判斷每個是否為 C 語言合法標識符。規則:
1. 僅含字母(大小寫)、數字、下劃線 _。
2. 首字符必須是字母或下劃線。
輸出 yes 或 no。

判定邏輯

  1. 檢查首字符:isalpha(s[0]) || s[0]=='_'。否則 no。
  2. 遍歷剩餘字符:isalnum(c) || c=='_'。遇到非法字符即 no。
  3. 全通過 → yes。

參考代碼 (C++)

#include <bits/stdc++.h>
using namespace std;

bool isValid(const string& s) {
    if (s.empty()) return false;
    if (!isalpha(s[0]) && s[0] != '_') return false;
    for (size_t i = 1; i < s.size(); ++i) {
        if (!isalnum(s[i]) && s[i] != '_') return false;
    }
    return true;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n; cin >> n;
    string s;
    while (n--) {
        cin >> s;
        cout << (isValid(s) ? "yes" : "no") << '\n';
    }
    return 0;
}

關鍵細節

  • 標準庫函數:<cctype> 中的 isalpha、isalnum 簡潔可靠(注意輸入為 unsigned char 或 ASCII 範圍內安全)。
  • 空字符串:題目保證長度 ≥1,但防禦性檢查無害。
  • 大小寫敏感:C 標識符區分大小寫,isalpha 自動處理。
  • 關鍵字:題目不要求排除關鍵字(如 int、for),僅判斷語法形式。

測試用例

輸入輸出說明
12ajfno首字符為數字
fi8x_ayes合法
ff ai_2no含空格(非法字符)
_Valid123yes下劃線開頭合法
invalid-charno連字符非法

總結

HDOJ 2024 是基礎字符串檢查題。核心考點:熟悉 C 標識符命名規則,並能準確轉化為代碼邏輯。使用 isalpha/isalnum 可避免手寫 ASCII 範圍判斷的錯誤(如忘記大小寫、遺漏下劃線)。此類題目雖簡單,但體現了對語言詞法規範的理解。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved