杭電acm 2024 c言語合法識別子

3283 ワード

識別子とは、あなたがつけた名前です.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();  //     
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入力が終了すると、入力ストリームにもう1つの改行符があり、このときgetsやgetlineを使えば、入力しなくてもすぐに改行符がもらえます...だからgetchar()などの影響を除去します