C语言合法标识符
时间: 1ms 内存:64M
描述:
输入一个字符串,判断其是否是C的合法标识符。
输入:
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。
输出:
对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。
示例输入:
3
12ajf
fi8x_a
ff ai_2
示例输出:
no
yes
no
提示:
参考答案(内存最优[0]):
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
char a[50];
int i;
while(1){
printf("Pleale input a string(## end)...\nstr=");
if(gets(a),a[0]=='#' && a[1]=='#')//输入了两个##则结束
break;
if(!(a[0]>='a' && a[0]<='z' || a[0]>='A' && a[0]<='Z' || a[0]=='_'))//不以字母或下划线开头则不是
printf("\'%s\' --- NO!\n",a);
else{
for(i=1;a[i];i++)//中间若有不是字母、数字、下划线的则不是
if(!(a[i]>='a' && a[i]<='z' || a[i]>='A' && a[i]<='Z' || a[i]=='_' || a[i]>='0' && a[i]<='9')){
printf("\'%s\' --- NO!\n",a);
break;
}
if(a[i]=='\0')//排除以上情况剩下的肯定是
printf("\'%s\' --- YES!\n",a);
}
}
return 0;
}
参考答案(时间最优[0]):
#include <ctype.h>
#include <stdio.h>
int main(void)
{
int n, d, i;
char sym[64];
scanf("%d%*c", &n);
while (n--)
{
gets(sym);
if (sym[0] != '_' && !isalpha(sym[0]))
{
puts("no");
continue;
}
for (d = i = 1 ; sym[i] ; i++)
{
if (!isalnum(sym[i]) && sym[i] != '_')
{
d = 0;
break;
}
}
puts(d ? "yes" : "no");
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。