杭电2024

这个题的输入问题比较多,防止接受n后面的那个回车,!!的那行可以改成

while(cin>>n){getchar();}

getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符.


while(scanf("%d ",&n)!=EOF)


while(scanf("%d\n",&n)!=EOF)


scanf(“%*c”),作用是这个字符不读取!


while(cin>>n){cin.ignore();}

ignore()读入的字符的个数默认为1,所以,不用参数调用ignore()就意味着“丢掉下一个字符”


#include<iostream>
#include<string>
using namespace std;
int main()
{
int n,i,l,m,j;
char a[50];
while(scanf("%d%*c",&n)!=EOF)!!

    for(i=1;i<=n;i++)
    {
      m=1;
          gets(a);
      l=strlen(a);
      if((a[0]<'A'||a[0]>'Z')&&a[0]!='_'&&(a[0]<'a'||a[0]>'z'))
           m=0;
      if(l>1) 
      {
                    
           for(j=1;j<l;j++)
           {
            if((a[j]<'A'||a[j]>'Z')&&a[j]!='_'&&(a[j]<'a'||a[j]>'z')&&(a[j]<'0'||a[j]>'9'))
                {
                   m=0;
                   break;
                     }
           }
           
       }
       if(m) cout<<"yes"<<endl;
       else cout<<"no"<<endl;
      }
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值