C语言合法标识符(HDOJ2024)

题目:Problem - 2024


题意:判断输入的每一个字符数组是否为合法的字符串;如果每个字符数组的第一个字符为非字母或非下划线,则字符串不合法;如果整个字符数组中存在不是字母、数字、下划线的字符,则字符串不合法;

思路:

1、声明一个整形变量n,定义为测试次数;一个字符数组g[60],用来存储字符串;

2、输入n,并用getchar()清空缓存区,建立循环,控制测试次数;

      用gets()给字符数组赋值【用scanf(“%s”,g);会忽略空格字符】;

3、定义一个整形变量a,它的值只有1和0;判断首字符是否合法(只能为字母和下划线),如果不合法a为0;合法a为1,继续用内循环判断后面的字符是否合法(只能为字母、数字、下划线),若合法,a仍为1;一旦判断到不合法字符,a为零,停止内循环;

4、将a的值作为判断条件,若a=1,则输出yes;若a=0,输出no;

代码:

#include

main()

{

    int n;

    char g[60];

    int i,j,a;

    scanf("%d",&n);

    getchar();

    for(i=0;i

    {

        gets(g);

        if((g[0]>='a'&&g[0]<='z')||(g[0]>='A'&&g[0]<='Z')||(g[0]=='_'))

        {

            a=1;

            for(j=1;g[j]!='\0';j++)

                {

                    if((g[j]>='a'&&g[j]<='z')||(g[j]>='A'&&g[j]<='Z')||(g[j]=='_')||(g[j]>='0'&&g[j]<='9'))

                    {

                        a=1;

                    }

                    else

                    {

                        a=0;

                        break;

                    }

                }

        }

        else a=0;

        if(a==0)printf("no\n");

        if(a==1)printf("yes\n");

    }

}

你可能感兴趣的:(C语言合法标识符(HDOJ2024))