文中要把字母A对应到1,Z对应到26,这时候就要用上ASCII表了。A对应的ASCII码值是65,要让A对应1,只要将A减去64,后面的字母也是一样的只要减去64,就能对应其26字母中的顺序。
要存储字符串对应的每个元素的数字的乘积,可以先创建一个字符数组,再用循环的方式进行储存乘积。循环的次数要根据字符串的长度来决定,要用strlen求出两个字符数组的长度,当作各自的循环次数。
每次存储乘积的变量只要乘以相应字符减去64,最终便可以获得最后的数字。
最终让s1和s2都模上一个47,判断模上47后两者的值是否相等。相等则输出GO,不相等则输出STAY。
#include <stdio.h>
#include <string.h>
int main()
{
char arr[7] = { 0 };
char str[7] = { 0 };
scanf("%s", arr);
scanf("%s", str);
int m = strlen(arr);
int n = strlen(str);
int s1 = 1;
int s2 = 1;
int i = 0;
for (i = 0; i < m; i++)
{
s1 *= (arr[i] - 64);
}
int j = 0;
for (j = 0; j < n; j++)
{
s2 *= (str[j] - 64);
}
int m1 = s1 % 47;
int m2 = s2 % 47;
if (m1 == m2)
{
printf("GO");
}
else
{
printf("STAY");
}
return 0;
}