C语言合法标识符Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 89017 Accepted Submission(s): 34261
Problem Description 输入一个字符串,判断其是否是C的合法标识符。 Input 输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。 Output 对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。 Sample Input 3 12ajf fi8x_a ff ai_2
Sample Output no
yes
no
#include<stdio.h>
#include<string.h>
int main() {
int n;
scanf("%d",&n);
getchar();
while(n--) {
char a[51];
int i,l;
gets(a);
int c=0;
l=strlen(a);
if(a[0]>='a'&&a[0]<='z'||a[0]>='A'&&a[0]<='Z'||a[0]=='_') {
for(i=1; i<l; i++)
if((a[i]>='a' && a[i]<='z')||(a[i]>='A' && a[i]<='Z')|| a[i]=='_' || (a[i]>='0' && a[i]<='9'))
c++;
else {
printf("no\n");
break;
}
if(c+1==l)printf("yes\n");
}
else
printf("no\n");
}
}
#include<stdio.h> #include<string.h> int main() { int n; scanf("%d",&n); getchar(); while(n--) { char a[51]; int i,l; gets(a); int c=0; l=strlen(a); if(a[0]>='a'&&a[0]<='z'||a[0]>='A'&&a[0]<='Z'||a[0]=='_') { //做题时一定要细心再细心,当初由于少一个“=”号,导致一下 for(i=1; i<l; i++) //子耗费近一个小时 if((a[i]>='a' && a[i]<='z')||(a[i]>='A' && a[i]<='Z')|| a[i]=='_' || (a[i]>='0' && a[i]<='9')) c++; else { printf("no\n"); break; } if(c+1==l)printf("yes\n"); } else printf("no\n"); } } C++: #include<iostream> #include<string.h> using namespace std; int main() { char str[55]; int n; cin>>n; getchar(); while(n--) { cin.getline(str,55); int len=strlen(str); int mark=1; if((str[0]>='a'&&str[0]<='z')||(str[0]>='A'&&str[0]<='Z')||(str[0]=='_')) { mark=1; } else { mark=0; } if(mark==1) { for(int i=1; i<len; i++) { if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')||(str[i]=='_')||(str[i]>='0'&&str[i]<='9')) { mark=1; } else { mark=0; break; } } } if(mark==1) { cout<<"yes"<<endl; } else { cout<<"no"<<endl; } } return 0; } |