这是一个水题,但是怎么提高程序的可读性是一个无止境的问题
程序是用来:测试多组字符串是否符合C语言的命名规则
程序首先定义test case(tc)
然后每次读入一行字符串,这行“字符串”不是标准读入的,包含了换行符
首先判断str的第一个字符是否为数字,是的话即可以下结论输出NO后进入下一次测试;
否则判断字符串是否含有 合法字符集(isalnum or is'_') 以外的字符,是的话即可以下结论输出NO后进入下一次测试;
遍历完字符串后还未发现有 非法字符集(合法字符集取否)的字符,那么就是合法的,下结论输出YES。
#include <stdio.h>
#include <ctype.h>
#define N 55
char str[N];
int
main(void)
{
int tc;
char *p;
scanf("%d%*c", &tc);
while (tc--) {
fgets(str, sizeof(str), stdin);
if (isdigit(*str)) {
printf("no\n");
continue;
}
for (p = str; *p != '\n'; p++) {
if (!(isalnum(*p) || '_' == *p)) {
printf("no\n");
break;
}
}
if (*p == '\n')
printf("yes\n");
}
return 0;
}