您的位置:首页 > 编程语言 > C语言/C++

08华科机试第五题(判定一个C语言变量的命名是否正确)

2011-09-10 19:18 323 查看
/*(2)判定一个C语言变量的命名是否正确*/
/*对于C语言中的变量名,满足以字母开头或者下划线开头即可。至于特殊的如$这种,在VC里也没报错,但
不符合C语言命名规范.本题的实质是个编译器,本人水平不够,这里就做一个简单的匹配程序好了。*/
/*测试数据 12ab_asb     输出结果:变量命名不正确
测试数据 _qwqwe_12_qw 输出结果:变量命名正确
测试数据 _$12_qqq_22  输出结果:变量命名不正确*/
/*程序:*************************爱X的味道 *****************************/
/*这个程序参考了一下别人的,感觉就是目的性明显,没*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int Match(char *str)
{
int i=1,j,flag=0;
char *apart[]={"auto","goto","if","int","long","register","return","short","signed",
"sizeof", "static", "struct", "switch", "typedef","break","case",
"char","const","for",	"union", "unsigned","void", "volatile", "while"
"continue","default","do","double","else","enum","extern","float",
};
for(j=0;j<32;j++)
if( 0==strcmp(str,apart[j]) )
return 0;
if( str[0]=='_' || ((str[0]>'A') && (str[0]<'Z')) || ((str[0]>'a') && (str[0]<'z')) )
flag=1;
else
return 0;
while( (str[i]!='\0') && (1==flag) )
{
if( ((str[i]>'A')&&(str[i]<'Z')) || ((str[i]>'a')&& (str[i]<'z'))
|| (str[i]=='_') || ((str[i]>'0')&&(str[i]<'9')) )
i++;
else
{
//	flag=0;
return 0;
}
}
return 1;
}
int main()
{
char str[100];
int result;
printf("请输入一个变量名:\n");
gets(str);
result=Match(str);
if(1==result)
printf("变量命名正确!\n\n");
else
printf("变量命名不正确!\n\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐