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