输入一个字符串,判断其是否是C的合法标识符。
Input
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。
Output
对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。
Sample Input
3
12ajf
fi8x_a
ff ai_2
Sample Output
no
yes
no
3条回答 默认 最新
- 与春风 2021-10-12 03:24关注解决 无用评论 打赏 举报
- qfl_sdu 2021-10-12 03:28关注
#include <stdio.h> #include <stdlib.h> int main() { int i,n,j; char**p; scanf("%d",&n); p = (char**)malloc(sizeof(char*)*n); for(i=0;i<n;i++) { p[i] = (char*)malloc(sizeof(char)*50); gets(p[i]); j = 0; //标识符必须以字母a~z、 A~Z或下划线开头 if(p[i][j]== '_' || (p[i][j]>='a' && p[i][j]<='z') || (p[i][j]>='A' && p[i][j]<='Z')) { j++; while(p[i][j]) { if(p[i][j]== '_' || (p[i][j]>='a' && p[i][j]<='z') || (p[i][j]>='A' && p[i][j]<='Z') || (p[i][j]>='0' && p[i][j]<='9')) j++; else { printf("no\n"); break; } } if(p[i][j]==0) printf("yes"); }else printf("no\n"); } //释放空间 for(i=0;i<n;i++) { free(p[i]); p[i] = 0; } free(p); p = 0; return 0; }
解决 无用评论 打赏 举报 - 偷窃月亮的贼 2021-10-12 03:45关注
#include <stdio.h> #include <stdlib.h> int main() { int i, n, j; char **p; scanf("%d", &n); p = (char **)malloc(sizeof(char *) * n); for (i = 0; i < n; i++) { p[i] = (char *)malloc(sizeof(char) * 50); gets(p[i]); } //判断 for (i = 0; i < n; i++) { //gets(p[i]); j = 0; //标识符必须以字母a~z、 A~Z或下划线开头 if (p[i][j] == '_' || (p[i][j] >= 'a' && p[i][j] <= 'z') || (p[i][j] >= 'A' && p[i][j] <= 'Z')) { j++; while (p[i][j]) { if (p[i][j] == '_' || (p[i][j] >= 'a' && p[i][j] <= 'z') || (p[i][j] >= 'A' && p[i][j] <= 'Z') || (p[i][j] >= '0' && p[i][j] <= '9')) j++; else { printf("no\n"); break; } } if (p[i][j] == 0) printf("yes\n"); } else printf("no\n"); } //释放空间 for (i = 0; i < n; i++) { free(p[i]); p[i] = 0; } free(p); p = 0; return 0; }
解决 无用评论 打赏 举报