ACM中的runtime error,怎么解决?

#include<stdio.h>#include<string.h>intmain(){chara[6],b[6];inti,s(1),q(1),x,y;gets(a)... #include <stdio.h>
#include <string.h>
int main()
{
char a[6],b[6];
int i,s(1),q(1),x,y;
gets(a);
gets(b);
x=strlen(a);
y=strlen(b);
for(i=0;i<x;i++)
{ a[i]=a[i]-64;
s=s*a[i];

}
for(i=0;i<y;i++)
{
b[i]=b[i]-64;
q=q*b[i];
}
s=s%47;
q=q%47;
if(s==q)
printf("GO\n");
else
printf("STAY\n");

return 0;
}
举例来说,团体 "USACO" 会是 21*19*1*3*15=17955 。 如果团体的数字 mod 47 等于慧星的数字 mod 47,那么你要告诉这个团体准备好被带走 !
写一个程序读入慧星的名字和团体的名字,如果搭配打印"GO"否者打印"STAY"
团体的名字和慧星的名字将会是没有空格或标点的一串大写字母(不超过6个字母),
Input Output
COMETQHVNGAT
GO
ABSTARUSACO
STAY
Input
输入包括两行:
第1行:彗星的名字(一个长度为1到6的字符串)
第2行:团体的名字(一个长度为1到6的字符串)
Output
单独一行包含"STAY"或"GO".
Sample Input
COMETQ
HVNGAT
Sample Output
GO
展开
 我来答
ywanghong
推荐于2018-04-13 · 超过21用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:48.1万
展开全部
这个一般是数组越界问题,你把数组开大点,数据会越界,所以把求余放到循环里面去传递求于。这是我改的代码:
#include <stdio.h>
#include <string.h>
int main()
{
char a[10],b[10];
int i,s(1),q(1),x,y;
gets(a);
gets(b);
x=strlen(a);
y=strlen(b);
for(i=0;i<x;i++)
{ a[i]=a[i]-64;
s=(s*a[i])%47;

}
for(i=0;i<y;i++)
{
b[i]=b[i]-64;
q=(q*b[i])%47;
}
//s=s%47;
//q=q%47;
if(s==q)
printf("GO\n");
else
printf("STAY\n");

return 0;
}
试试看。祝你好运!
logiciel
2011-04-09 · TA获得超过140个赞
知道小有建树答主
回答量:223
采纳率:0%
帮助的人:376万
展开全部
char a[6],b[6];
以上定义限制输入的长度不能超过5,超过则出现runtime error。要按题目中输入的最大长度来定义。
追问
如何修改才能AC啊?
我长度改了后,就是WA了。。。
追答
同意ywanghong的修改
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式