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;
} |
所有评论(0)