求教北大ACM1002题 为何Runtime error

代码如下,请告诉我Runtimeerror的原因,我只要原因.#include<stdio.h>#include<string.h>charchange(charc);i... 代码如下,请告诉我Runtime error 的原因, 我只要原因.
#include<stdio.h>
#include<string.h>
char change(char c);
int main()
{
char c,a[100000][1000],b[100000][8],sort[100000][8],temp[8];
long n,i,j,k,temporary;
int mark,rc[100000],flag[100000]={0};/*以上是变量声明部分*/
scanf("%d",&n);
for(i=0;i<=n-1;i++)
{
scanf("%s",&a[i]);
} /*以上是读取数据部分*/
for(i=0;i<=n-1;i++)
{
j=0;
k=0;
while(a[i][j]!='\0')
{
c=a[i][j];
if(c!='-')
{
b[i][k]=change(c);
k=k+1;
}
j=j+1;
}
b[i][k]='\0';
} /*以上部分将数组a中的数据整合到b中,去掉连字符,完成映射*/
mark=0;
for(i=0;i<=99999;i++)
{
rc[i]=1;
}
k=0;
for(i=0;i<=n-2;i++)
{
if(flag[i]!=1)
{
for(j=i+1;j<=n-1;j++)
{
if((flag[j]!=1)&&(strcmp(b[i],b[j])==0))
{
mark=1;
flag[j]=1;
rc[k]=rc[k]+1;
}
}
}
if(rc[k]>1)
{
strcpy(sort[k],b[i]);
k=k+1;
}
} /*以上部分查找b中重复数据,并计算重复次数,将重复的数据整合到sort中*/
if(mark==0)
{
printf("No duplicates.\n");
}
else
{
for(i=1;i<=k-1;i++)
{
for(j=0;j<=k-i-1;j++)
{
if(strcmp(sort[j],sort[j+1])>0)
{
strcpy(temp,sort[j]);
strcpy(sort[j],sort[j+1]);
strcpy(sort[j+1],temp);
temporary=rc[j];
rc[j]=rc[j+1];
rc[j+1]=temporary;
}
}
}
for(i=0;i<=k-1;i++)
{
for(j=0;j<=2;j++)
{
printf("%c",sort[i][j]);
}
printf("-");
for(j=3;j<=6;j++)
{
printf("%c",sort[i][j]);
}
printf(" %d\n",rc[i]);
}
} /*以上部分用冒泡排序将数据按字典顺序排好并输出*/
return 0;
}
char change(char c)
{
switch(c)
{
case 'A':
case 'B':
case 'C':c='2';break;
case 'D':
case 'E':
case 'F':c='3';break;
case 'G':
case 'H':
case 'I':c='4';break;
case 'J':
case 'K':
case 'L':c='5';break;
case 'M':
case 'N':
case 'O':c='6';break;
case 'P':
case 'R':
case 'S':c='7';break;
case 'T':
case 'U':
case 'V':c='8';break;
case 'W':
case 'X':
case 'Y':c='9';break;
default :break;
}
return c;
}
数组改小后,还是runtime error
改回100000后,time limit exceed
展开
 我来答
迂贸竞举9Q
2009-03-10 · 超过37用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:0
展开全部
1)你定义的数组太大了,数组是在栈分配的空间,应该是栈溢出了。
(把数组改小就不会有问题)
2)建议用new 或 malloc 在堆上分配空间!
海笑认为

2009-03-13 · TA获得超过1538个赞
知道小有建树答主
回答量:1699
采纳率:0%
帮助的人:437万
展开全部
你这个设计的太不好了。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
锁霓fk
2009-03-21
知道答主
回答量:8
采纳率:0%
帮助的人:1.3万
展开全部
把超大的数组声明作为全局变量。

编译器给函数分配的空间有限,但是给全局分配的空间相对较大。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式