一道ACM题,为什么会这样?

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

Input
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。输入保证不为C++的关键字(保留字)。

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

Sample Input
3
12ajf
fi8x_a
ff ai_2
Sample Output
no
yes
no

这是我的代码;
#include
#include
using namespace std;
int main()
{
char a[49],f[1];
int e;
cin >> e;
for (int j = 1; j <= e; j++)
{
cin.ignore();
cin.getline(a, 50); int b = 0, c, d;
c = strlen(a);
d = c - 1;
if ((a[0] >= 65 && a[0] <= 90) || (a[0] == 95) || (a[0] >= 97 && a[0] <= 122))
{
for (int i = 1; i <= c-1; i++)
{
if ((a[i]57 && a[i]90 && a[i]122))
{
cout << "no" << endl; break;
}
else b++;
}
if (b == d)cout << "yes" << endl;
}
else cout << "no" << endl;
}
return 0;
}

为什么到第二次执行时就从第二个字符开始判断,第三次执行时又从第三个字符开始判断?图片说明

1个回答

你的图和你的问题没有矛盾

qq_31956465
qq_31956465 我如果把空格放在第一个,就会yes了
接近 5 年之前 回复
qq_31956465
qq_31956465 什么意思呢
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐