你不用`switch`,直接`c[i2]-'A'+1`即可
by _Herobrine_ @ 2020-02-05 20:29:24
@[qjyz202268](/user/312929) 这是根据你的代码调的,已经AC,有三处问题,和原来的对照一下吧
```cpp
#include <iostream>
#include <string>
using namespace std;
string a, b;
char c[8];
int a1[8];
int main()
{
int i2, i1, m;
long long int ren = 1, xin = 1;
bool x = 0;
cin >> a >> b;
m = a.length();
i1 = b.length();
st:
for (i2 = 0; i2 < m; i2++)
{
if (x == 0)
c[i2] = a[i2];
else
c[i2] = b[i2];
switch (c[i2])
{
case 'A':
a1[i2] = 1;
break;
case 'B':
a1[i2] = 2;
break;
case 'C':
a1[i2] = 3;
break;
case 'D':
a1[i2] = 4;
break;
case 'E':
a1[i2] = 5;
break;
case 'F':
a1[i2] = 6;
break;
case 'G':
a1[i2] = 7;
break;
case 'H':
a1[i2] = 8;
break;
case 'I':
a1[i2] = 9;
break;
case 'J':
a1[i2] = 10;
break;
case 'K':
a1[i2] = 11;
break;
case 'L':
a1[i2] = 12;
break;
case 'M':
a1[i2] = 13;
break;
case 'N':
a1[i2] = 14;
break;
case 'O':
a1[i2] = 15;
break;
case 'P':
a1[i2] = 16;
break;
case 'Q':
a1[i2] = 17;
break;
case 'R':
a1[i2] = 18;
break;
case 'S':
a1[i2] = 19;
break;
case 'T':
a1[i2] = 20;
break;
case 'U':
a1[i2] = 21;
break;
case 'V':
a1[i2] = 22;
break;
case 'W':
a1[i2] = 23;
break;
case 'X':
a1[i2] = 24;
break;
case 'Y':
a1[i2] = 25;
break;
case 'Z':
a1[i2] = 26;
break;
}
if (x == 0)
xin *= a1[i2];
else
ren *= a1[i2];
}
m = i1;
if (x == 0)
{
x = 1;
goto st;
}
if (ren % 47 == xin % 47)
cout << "GO";
else
cout << "STAY";
return 0;
}
```
by Sophon @ 2020-02-05 20:45:23
你怕是不知道有ASCII这种东西。。。
还有你的switch不用break的吗?
by PragmaGCC @ 2020-02-05 20:46:32
@[Sophon](/user/159730)
谢谢,又是粗心了。???
by 鄙人逆水行舟 @ 2020-02-05 21:23:44