ACM中的runtime error,怎么解决?

#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

这个一般是数组越界问题,你把数组开大点,数据会越界,所以把求余放到循环里面去传递求于。这是我改的代码:
#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;
}
试试看。祝你好运!
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-09
char a[6],b[6];
以上定义限制输入的长度不能超过5,超过则出现runtime error。要按题目中输入的最大长度来定义。追问

如何修改才能AC啊?
我长度改了后,就是WA了。。。

追答

同意ywanghong的修改

杭电acm总是Runtime Error (ACCESS_VIOLATION)
可以用传递数组元素个数的方法解决即:用两个实参,一个是数组名,一个是数组的长度。runtime error (运行时错误)就是程序运行到一半,程序就崩溃了。比如说:除以零 数组越界:int a[3]; a[10000000]=10 指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10 ...

acm中runtime error怎么解决
这个一般是数组越界问题,你把数组开大点,数据会越界,所以把求余放到循环里面去传递求于。这是我改的代码: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...

runtime ERROR ACM (求解决)
runtime error一般都是数组越界或是非法访问 你的程序一看明显就存在一些数组越界的问题 比如bi就只加不减 做几次肯定就超过200 可以在count=0;后加上ai=bi=0;另外算法采用效率比较低下的排序方法,很有可能后来又编程Time limited exceed 你可以先试试吧再给反馈 ...

acm出来运行错误要怎么改(反序数出的题)先输入n代表总个数后输入n个...
实现有点复杂,但是看不出来有错,如果是报“runtime error”,有可能是越界了,数组开的大一点。ps:倒序输出只要把数字保存起来,输出时循环由大到小即可,如下:for(int a = (this->len) -1; i >= 0; i--)cout << this->data[i];...

c语言 acm runtime error
楼主你数组开不够大,把N宏定义为100000就能过了。

为什么会出现runtime error?一般都是什么情况?ACM
runtime error (运行时错误)就是程序运行到一半,程序就崩溃了。比如说:①除以零 ②数组越界:int a[3]; a[10000000]=10;③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10;④使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free...

北大acm poj2714 程序运行 runtimeerror 一般 程序runtime error 有...
我觉得楼主需要补全数据规模什么的,Runtime Error 一般来说是数组越界或者函数堆栈溢出,超过规定的时间是TL不是RE,RE一般是访问越界...

Runtime Error(ACCESS_VIOLATION) 总是出现 跪求解答
Runtime Error 就是ACM中常说的RE,出现这种错误往往是数组越界造成的,你应该检查数组开的是否足够大,或者在程序处理过程中是否存在数组下表越界的情况。由于你没有说具体是那道题,因此我也无法提供具体的帮助。

ACM 提交的时候老是runtime error
你数组越界了 printf("%d\\n",a[k-1]);这里的话当k=0的时候也,就是说m1,m2之间没有数字是素数的情况下,你会错误。还有,题目说是m1,m2之间的,如果m1大于m2的话要换一下

...但在acm中提交出现runtime error,这是什么问题?如何解决?
仔细对照题目的 数据输入,与数据输出的要求;输入输出连一个空格 或者回车换行符都不能多 提示runtime error,多半是输入的数据格式不正确,做ACM的题目一定要细心

相似回答