文中要把字母A对应到1,Z对应到26,这时候就要用上ASCII表了。A对应的ASCII码值是65,要让A对应1,只要将A减去64,后面的字母也是一样的只要减去64,就能对应其26字母中的顺序。
要存储字符串对应的每个元素的数字的乘积,可以先创建一个字符数组,再用循环的方式进行储存乘积。循环的次数要根据字符串的长度来决定,要用strlen求出两个字符数组的长度,当作各自的循环次数。
每次存储乘积的变量只要乘以相应字符减去64,最终便可以获得最后的数字。
最终让s1和s2都模上一个47,判断模上47后两者的值是否相等。相等则输出GO,不相等则输出STAY。
- #include
- #include
- 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;
- }