杭电acm2024 c语言合法标识符

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

#include  
#include  
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"<continue;  
        }   

        for(int i=0;iif(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"<else 
        {
            cout<<"no"<return 0;  
}

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

你可能感兴趣的:(杭电acm2024 c语言合法标识符)