杭电ACM-2024

题目:

杭电ACM-2024_第1张图片
2024题

代码:

#include
int main()
{
    char a[55];
    int n,i,flag1,flag2;
    scanf("%d",&n);
    getchar();
    while(n>0)
    {

        flag1=0;
        flag2=0;
        gets(a);
        for(i=0;a[i]!='\0';i++)
        {
            if(((a[0]>='A'&&a[0]<='Z')||(a[0]>='a'&&a[0]<='z')||a[0]=='_'))
            {
                flag1=0;
            }
            else
            {
                flag1=1;
                break;
            }
            if(i!=0)
            {
                if((a[i]>='A'&&a[i]<='Z')||(a[i]>='a'&&a[i]<='z')||a[i]=='_'||(a[i]>='0'&&a[i]<='9'))
                {
                    flag2=0;
                }
                else
                {
                    flag2=1;
                    break;
                }
            }
        }
        if(flag1==1||flag2==1)
            printf("no\n");
        else
            printf("yes\n");
        n--;
    }
    return 0;
}

C语言合法标识符百科:

1. 所有标识符必须由一个字母(a~z或A~Z)或下划线(_)开头;
2. 标识符的其它部分可以用字母、下划线或数字(0~9)组成;
3. 大小写字母表示不同意义, 即代表不同的标识符,如cout和Cout;
在定义标识符时,虽然语法上允许用下划线开头,但是,我们最好避免定义用下划线开头的标识符,因为编译器常常定义一些下划线开头的标识符。
4:关键字是保留字,不能用来做标识符(如变量名),例如:int double; 是错误的,因为 double 是关键字,不能做变量名。使用关键字来做变量名是一种语法错误,不能通过编译!下表列出了 C 语言的所有关键字:
auto enum restrict unsigned
break extern return void
case float short volatile
char for signed while
const goto sizeof _Bool
continue if static _Complex
default inline struct _Imaginary
do int switch
double long typedef
else register union

注意getchar()的位置,作用是吃回车,但是在字符串循环中,注意不要放进循环里面!!!

你可能感兴趣的:(杭电ACM-2024)