合法 C 标识符

总时间限制: 
1000ms
内存限制: 
65536kB
描述

给定一个不包含空白符的字符串,请判断是否是C语言合法的标识符号(注:题目保证这些字符串一定不是C语言的保留字)

C语言标识符要求:

1. 非保留字;

2. 只包含字母、数字及下划线(“_”)。

3. 不以数字开头。

输入
一行,包含一个字符串,字符串中不包含任何空白字符,且长度不大于20。
输出
一行,如果它是C语言的合法标识符,则输出yes,否则输出no。
样例输入
RKPEGX9R;TWyYcp
样例输出
no
来源

北京大学 计算概论 06 心理及信管 期末考试


刚开始一看,感觉这题好水...

于是我肥肠愉快的打下了这条代码...

#include<stdio.h>
#include<string.h>
char a[101]={0};
int main()
{
	int i,n;
	gets(a);
	n=strlen(a);
	if(a[0]>='0'&&a[0]<='9')
	{
		printf("no");
		return 0;
	}
	for(i=0;i<n;i++)
	{
		if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z'||a[i]=='_')
		{
			printf("yes");
		}
		else printf("no");
	}
	return 0;
}

后面就收到了来自Noip的结果...Wrong Answer...

对此一脸懵逼...

后面发现自己特别蠢,因为我只判断了循环语句中i当前的字母就直接输出了结果...

然后改了改就过了...

源代码如下:

#include<stdio.h>
#include<string.h>
char a[25];
int main()
{
	int i,n;
	gets(a);
	n=strlen(a);
	if(a[0]>='0'&&a[0]<='9')
	{
		printf("no");
	}
	else
      for(i=0;i<n;i++)
	  {
		if(!((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')||(a[i]>='0'&&a[i]<='9')||(a[i]=='_')))
		{
			printf("no");
			break;
		}
     
	 }
	 if(i==n)
	 {
	 	printf("yes");
	 } 
	return 0; 
}

猜你喜欢

转载自blog.csdn.net/yang_2002/article/details/79547462