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;
}
为什么到第二次执行时就从第二个字符开始判断,第三次执行时又从第三个字符开始判断?