2024

判断c语言的字符串是否是合法的变量名

令人遗憾的是 我的for循环竟然多打了一个分号

调试好久才发现

我竟然瞎想是不是gets函数是不是有什么特殊属性 唉 天真

#include <stdio.h>

int main()
{
    int n,i,j;
    char a[51];
    while (scanf("%d%*c",&n))
    {
        for (i = 0;i < n;i++)
        {
            gets(a);
            if ((a[0] >= ‘a‘ && a[0] <= ‘z‘) || (a[0] >= ‘A‘ && a[0] <= ‘Z‘) || (a[0] == ‘_‘))
            {
                for (j = 1; a[j] != ‘\0‘; j++)
                {
                    if ((a[j] >= ‘a‘ && a[j] <= ‘z‘) || (a[j] >= ‘A‘ && a[j] <= ‘Z‘) || (a[j] == ‘_‘) || (a[j] >= ‘0‘ && a[j] <= ‘9‘))
                    {
                        printf("yes\n");
                        break;
                    }
                    else
                    {
                        printf("no\n");
                        break;
                    }
                }

            }
            else
            {
                printf("no\n");
            }
        }
    }
    return 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;
}

  

时间: 2025-01-13 23:38:55

2024的相关文章

杭电2024(C语言合法标识符)

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

hdu 2020~2024

hdu 2020 对三个字符按 ASCII 码排序,水 1 #include<stdio.h> 2 int main() 3 { 4 int n,a[54],i; 5 for (i=0;i<4;i++) a[i]=i+1; 6 for (i=4;i<=53;i++) a[i]=a[i-1]+a[i-3]; 7 while (scanf("%d",&n)!=EOF) if (n!=0) printf("%d\n",a[n-1]); 8

hdu 2024 C语言合法标识符

C语言合法标识符 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 35855    Accepted Submission(s): 14431 Problem Description 输入一个字符串,判断其是否是C的合法标识符. Input 输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行

杭电 2024

1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 int main() 6 { 7 int n; 8 string str; 9 int flag; 10 while (cin>>n) 11 { 12 cin.get();// 上一行的处理回车 13 for (int i=0; i<n; i++) 14 { 15 16 getline(cin,str); 17 // cin&g

EonStor GSa 2024 全闪存阵列获得国际权威媒体的五星级认可

EonStor GSa 2024 全闪存阵列获得国际专业IT杂志的五星好评,斩获编辑选择大奖. 这家媒体的资深存储专家对EonStor GSa 2024 全闪存阵列给出了这样的评语:"EonStor GSa 2024RC 功能齐全,不仅提供丰富多样的数据存储服务,更具备优异的全闪存存储性能.巨大的存储空间扩展能力,以及多种规格的数据传输端口."GSa 2024为统一存储,具备双冗余控制器 (dual-redundant controllers) ,以及 24 个热插拔 (hot-swa

HDOJ 2024 C语言合法标识符

C语言合法标识符 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 37056    Accepted Submission(s): 14897 Problem Description 输入一个字符串,判断其是否是C的合法标识符. Input 输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行

杭电2024

1 #include<stdio.h> 2 char s[51]; 3 int lenth(char s[]) 4 { 5 int i=0; 6 while(s[i]) 7 ++i; 8 return i; 9 } 10 int main() 11 { 12 int i,n; 13 while(~scanf("%d",&n)) 14 { 15 getchar(); 16 while(n--) 17 { 18 gets(s); 19 int len=lenth(s);

hdu 2024 C语言合法标识符 (java)

问题: 参考了别人的才做出来,有一个疑问: 不知道为什么要以比字数串长度来判断,为什么不可以直接不再if之列就直接判断为"no". 得到一行字符 : s=cin.nextLine(); 之前要有cin.nextLine(); ,原因不明. C语言合法标识符 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 45431    Ac

hdu 2024

背景:水.主要是#include<cctype>还忘了 #include<cstdio> #include<iostream> #include<cctype> using namespace std; int main(void){ int t; scanf("%d",&t); while(t--){ bool ok=true; for(int i=0;;i++){ char c=getchar(); if(i == 0){ i