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

C語言合法標識符判斷:規則解析與完整代碼實現

     編輯:關於C語言

問題描述

判斷輸入字符串是否為 C 語言合法標識符。輸入第一行為測試用例數 n,隨後 n 行字符串(長度 ≤ 50)。合法標識符規則:首字符須為字母(大小寫)或下劃線;後續字符可為字母、數字或下劃線。輸出 "yes" 或 "no"。

C語言標識符命名規則

  • 首字符:英文字母(a-z, A-Z)或下劃線(_)
  • 其餘字符:英文字母、數字(0-9)或下劃線
  • 不能是關鍵字(本題不檢查關鍵字)
  • 長度無嚴格限制(本題 ≤ 50)

解題算法

  1. 檢查首字符是否合法,不合法直接標記為非法
  2. 遍歷剩餘字符,任一字符不合法即標記非法並跳出
  3. 根據標記輸出結果

代碼實現

#include <stdio.h>
#include <string.h>

int main() {
    int i, flag, num, length;
    char string[101];

    scanf("%d", &num);
    getchar();

    while (num--) {
        gets(string);
        length = strlen(string);
        flag = 1;

        // 檢查首字符
        if (string[0] == '_' || (string[0] >= 'a' && string[0] <= 'z') || 
            (string[0] >= 'A' && string[0] <= 'Z')) {
            // 檢查後續字符
            for (i = 0; i < length; i++) {
                if (string[i] == '_' || (string[i] >= 'a' && string[i] <= 'z') || 
                    (string[i] >= 'A' && string[i] <= 'Z') || 
                    (string[i] >= '0' && string[i] <= '9')) {
                    flag = 1;
                } else {
                    flag = 0;
                }
                if (flag == 0) break;
            }
        } else {
            flag = 0;
        }

        if (flag) printf("yes");
        else printf("no");

        if (num > 0) printf("\n");
    }
    return 0;
}

測試樣例

輸入:

3
12ajf
fi8x_a
ff ai_2

輸出:

no
yes
no

解析:"12ajf" 以數字開頭非法;"fi8x_a" 完全符合規則;"ff ai_2" 含空格非法。

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