我正在解决有关 USACO 的问题。在这个问题中,我必须将两个字符串作为输入并计算模数 47 的数值。如果值相同,则要打印 GO,否则必须打印 STAY。初始数值将通过取字母表的数值的乘积来计算(A 为 1,Z 为 26),然后使用模数计算最终数字。
我的程序正在编译,没有任何错误,并且在我的计算机上运行良好。但是,它显示分段错误作为分级计算机的执行错误。程序和输出如下:-
程序:-
#include<stdio.h>
#include<string.h>
main()
{
int cal(char *ptr);
char *comet,*group;
int a,b;
scanf("%s",comet);
a=cal(comet);
scanf("%s",group);
b=cal(group);
if(a==b)
printf("GO");
else
printf("STAY");
return 0;
}
int cal(char *ptr)
{
int i=0,c,prod=1,mod;
while(ptr[i]!='\0')
{
if(ptr[i]>='A'&&ptr[i]<='Z')
{
c=ptr[i]-'@';
prod=prod*c;
i++;
}
}
mod=prod%47;
return mod;
}
输出:-
我的问题是如何查明分段错误。我已阅读有关此故障的信息,但不知道在此程序中该做什么。任何帮助都会很棒。