杭电acm2024 c语言合法标识符

所谓标识符,就是你起的一个名字。c/c++中,是你用来标识变量名、符号常量名、函数名、数组名、文件名、类名、对象名等的。(就好像你父母有了你以后给你起的名字)~~ c/c++有效标识符的构成规则如下
(1)第一个字符必须是字母(不分大小写)或下划线(_);
(2)后跟字母(不分大小写)、下划线(_)或数字组成;
(3)标识符中的大小写字母有区别。
(4)不能与c编译系统已经预定义的、具有特殊用途的保留标识符(即关键字)同名。比如,不能将标识符命名为float,auto,break,case,this,try,for,while,int,char,short, unsigned,等等
这就简单了吧。。合法标识符是啥都忘了。。。

#include <iostream> 
#include <string.h> 
using namespace std;  
int main()  
{  
    int n,sum;  
    int flag;  
    cin>>n;  
    getchar();  //消除换行符\n对cin.getline的影响   
    while(n--)
    {  
        char ch[51];          
        cin.getline(ch,51);  
        flag=0;  
        sum=0;  
        int len=strlen(ch);  
        if(!(ch[0]=='_'||(ch[0]>='a'&&ch[0]<='z')||(ch[0]>='A'&&ch[0]<='Z')))
        {  
            cout<<"no"<<endl;   
            continue;  
        }   

        for(int i=0;i<len;i++)
        { 
            if(ch[i]=='_'||(ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z')||(ch[i]<='9'&&ch[i]>='0'))  
            {
                sum++;
            }
        }
        if(sum==len)
        {   
            cout<<"yes"<<endl;
        }
        else 
        {
            cout<<"no"<<endl;
        }
    }  
    return 0;  
}

cin输入结束后,输入流中还有一个换行符\n,这个时候如果用gets或者getline,即使不输入,也会立马会得到一个换行符。。。。。所以要加上一个getchar()之类的消除影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值