Q_TY 2021-10-12 03:00 采纳率: 0%
浏览 193

c语言判断标识符程序

输入一个字符串,判断其是否是C的合法标识符。
Input
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。
Output
对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。
Sample Input
3
12ajf
fi8x_a
ff ai_2
Sample Output
no
yes
no

  • 写回答

3条回答 默认 最新

  • 与春风 2021-10-12 03:24
    关注

    1、用二维数组接收输入的字符串
    2、首先判断字符串第一个字符 if ( (str[i][0]>="a" &&str[i][0]>="z") || (str[i][0]>="A" &&str[i][0]>="Z") || str[i][0] == "" )匹配则继续判断后面的字符,否则输出no继续下一个字符串
    3、继续下一个字符串:if ( (str[i][j]>="a" &&str[i][j]>="z") || (str[i][j]>="A" &&str[i][j]>="Z") || str[i][0] == "
    " || (str[i][j]>="0" &&str[i][j]>="9") )匹配则继续判断后面的字符,否则输出no继续下一个字符串,这步是循环判断一个字符串的后面的字符

    评论
  • qfl_sdu 2021-10-12 03:28
    关注
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        int i,n,j;
        char**p;
        scanf("%d",&n);
        p = (char**)malloc(sizeof(char*)*n);
        for(i=0;i<n;i++)
        {
            p[i] = (char*)malloc(sizeof(char)*50);
            gets(p[i]);
            j = 0;
            //标识符必须以字母a~z、 A~Z或下划线开头
            if(p[i][j]== '_' || (p[i][j]>='a' && p[i][j]<='z') || (p[i][j]>='A' && p[i][j]<='Z'))
            {
                j++;
                while(p[i][j])
                {
                    if(p[i][j]== '_' || (p[i][j]>='a' && p[i][j]<='z') || (p[i][j]>='A' && p[i][j]<='Z') || (p[i][j]>='0' && p[i][j]<='9'))
                        j++;
                    else
                    {
                        printf("no\n");
                        break;
                    }
                }
                if(p[i][j]==0)
                    printf("yes");
            }else
                printf("no\n");
        }
    
        //释放空间
        for(i=0;i<n;i++)
        {
            free(p[i]);
            p[i] = 0;
        }
        free(p);
        p = 0;
        return 0;
    
    }
    
    
    

    展开全部

    评论
  • 偷窃月亮的贼 2021-10-12 03:45
    关注
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int i, n, j;
        char **p;
        scanf("%d", &n);
        p = (char **)malloc(sizeof(char *) * n);
        for (i = 0; i < n; i++)
        {
            p[i] = (char *)malloc(sizeof(char) * 50);
            gets(p[i]);
        }
        //判断
        for (i = 0; i < n; i++)
        {
            //gets(p[i]);
            j = 0;
            //标识符必须以字母a~z、 A~Z或下划线开头
            if (p[i][j] == '_' || (p[i][j] >= 'a' && p[i][j] <= 'z') || (p[i][j] >= 'A' && p[i][j] <= 'Z'))
            {
                j++;
                while (p[i][j])
                {
                    if (p[i][j] == '_' || (p[i][j] >= 'a' && p[i][j] <= 'z') || (p[i][j] >= 'A' && p[i][j] <= 'Z') || (p[i][j] >= '0' && p[i][j] <= '9'))
                        j++;
                    else
                    {
                        printf("no\n");
                        break;
                    }
                }
                if (p[i][j] == 0)
                    printf("yes\n");
            }
            else
                printf("no\n");
        }
        //释放空间
        for (i = 0; i < n; i++)
        {
            free(p[i]);
            p[i] = 0;
        }
        free(p);
        p = 0;
        return 0;
    }
    

    展开全部

    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部