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

C 語言合法標識符判定:OJ 題目完整解法與字符分類邏輯

     編輯:C 語言入門

題目要求

輸入字串(長度 ≤ 50),判斷是否符合 C 標識符規則:首字符為字母或底線,其餘為字母、數字或底線。多組測資,輸出 yes/no。

標識符規則(C99)

  • 首字符:[A-Za-z_]
  • 後續字符:[A-Za-z0-9_]
  • 區分大小寫,無長度上限(實作限制除外)。

解法邏輯

  1. 讀取測資筆數 n,逐行處理。
  2. 檢查首字符合法性,不合法直接輸出 no。
  3. 遍歷剩餘字符,任一非法輸出 no。
  4. 全通過輸出 yes。

精簡代碼

#include 
#include 
#include 

int main() {
    int T; scanf("%d", &T); getchar();
    while (T--) {
        char s[55]; fgets(s, sizeof(s), stdin);
        s[strcspn(s, "\n")] = 0;  // 去換行
        int ok = isalpha(s[0]) || s[0]=='_';
        for (int i=1; ok && s[i]; i++)
            ok = isalnum(s[i]) || s[i]=='_';
        puts(ok ? "yes" : "no");
    }
    return 0;
}

關鍵函數

  • isalpha、isalnum:<ctype.h> 標準字符分類,處理地區設定更安全。
  • strcspn:移除 fgets 保留的換行符。

測試樣本

輸入:
3
12ajf
fi8x_a
ff ai_2

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