c语言 输入一个字符串,判断其是否是C的合法标识符。

输入一个长度不超过50的字符串。如果输入数据是C语言的合法标识符,则输出yes,否则,输出no。
例:输入:fi8x_a
输出:yes

1、使用中文当标识符,其前提是编译器支持中文当标识符,C++11之后,通用字符名覆盖到了汉字。

2、使用中文作为标识符时,其头文件与原来一样。

3、程序中的名字空间,保持不变。

4、可以将保留字定义为中文,用define定义。

5、可以用类型名,直接定义中文的变量名。

6、中文标识符的使用,和普通标识符一样。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-03
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    char a[50];
    int i;
    while(gets(a)){
        if(!(a[0]>='a' && a[0]<='z' || a[0]>='A' && a[0]<='Z' || a[0]=='_'))//不以字母或下划线开头则不是
            printf("no\n");
        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("no\n");
                    break;
                }
            if(a[i]=='\0')//排除以上情况剩下的肯定是
                printf("yes\n");
        }
    }
    return 0;
}

本回答被网友采纳
第2个回答  2017-08-22
你吧c语言的关键字列出来放到数组中,先比较不在这个数组中,然后再截取输入的字符串,第一个必须是字母或者下划线,再遍历此字符串各个字符是否合法,用多重if判断下就好
第3个回答  2015-04-25
#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;
}本回答被网友采纳
相似回答