杭电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 展开
这道水题,帮我看看问题出在哪里???
#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 展开
展开全部
大概看了下,我觉得你得算法可以改进下
不用双重循环,一重就够了
循环。。。
如果
是下标为0 则判断是否为英文字母或下划线
如果
不是下标为0 ,则判断是否为英文字母或下划线或数字
(其中当不符合规范条件时break退出)
最后通过判断是否中途退出,选择输出yes还是no(判断语句是if( i>=sizeof(s)))
不用双重循环,一重就够了
循环。。。
如果
是下标为0 则判断是否为英文字母或下划线
如果
不是下标为0 ,则判断是否为英文字母或下划线或数字
(其中当不符合规范条件时break退出)
最后通过判断是否中途退出,选择输出yes还是no(判断语句是if( i>=sizeof(s)))
追问
有一个循环式求长度的……
对呀,我的想法就是这样的仙子阿就是不知道问题主要在哪里
总是wa
在编译器上检验是没有问题的呀!!
追答
有没有这个可能,前面有空格多出来,那第一个判断开头的时候就有问题了?起码你的s要处理过,去掉开头和后尾的空格
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询