杭电ACM2024题求解

大神们这道水题,帮我看看问题出在哪里???#include<iostream>#include<string>usingnamespacestd;intmain(){in... 大神们
这道水题,帮我看看问题出在哪里???

#include<iostream>
#include<string>
using namespace std;
int main()
{
int n;
cin>>n;
getchar();
while(n--)
{
char s[100];
gets(s);
for(int l=0;s[l];l++);
if(s[0]>='A'&&s[0]<='Z'||s[0]>='a'&&s[0]<='z'||s[0]=='_')
{
for(int i=1;i<l;i++)
{
if(s[i]>='0'&&s[i]<='9'||s[i]>='A'&&s[i]<='Z'||s[i]=='_'||s[i]>='a'&&s[i]<='z');
else
{
//cout<<"a[i]:"<<s[i]<<endl;
break;
}
}
if(i==l)
cout<<"yes"<<endl;
else
{
//cout<<"i:"<<i<<endl;
cout<<"no"<<endl;
}

}
else
{
cout<<s<<endl;
cout<<"no"<<endl;
}
}
return 0;
}
C语言合法标识符
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 37504 Accepted Submission(s): 15054

Problem Description
输入一个字符串,判断其是否是C的合法标识符。

Input
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。

Output
对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。

Sample Input
3
12ajf
fi8x_a
ff ai_2

Sample Output
no
yes
no
展开
 我来答
renshijie1018
2014-10-26 · TA获得超过1006个赞
知道小有建树答主
回答量:1063
采纳率:94%
帮助的人:966万
展开全部
大概看了下,我觉得你得算法可以改进下
不用双重循环,一重就够了
循环。。。
如果
是下标为0 则判断是否为英文字母或下划线
如果
不是下标为0 ,则判断是否为英文字母或下划线或数字

(其中当不符合规范条件时break退出)
最后通过判断是否中途退出,选择输出yes还是no(判断语句是if( i>=sizeof(s)))
追问
有一个循环式求长度的……
对呀,我的想法就是这样的仙子阿就是不知道问题主要在哪里
总是wa
在编译器上检验是没有问题的呀!!
追答
有没有这个可能,前面有空格多出来,那第一个判断开头的时候就有问题了?起码你的s要处理过,去掉开头和后尾的空格
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式