简单题hdu 1004 Runtime Error(ACCESS_VIOLATION)

2024-11-30 11:50:51
推荐回答(2个)
回答(1):

问题真不少...下面代码能ac
STACK_OVERFLOW是栈空间溢出,什么是栈请自行google,你这里表现为a开得太大了,将大数组开到外面就可以解决。
ACCESS_VIOLATION一般是数组越界了,你这里表现为b开的太小,当n>100时,i、j下标就会越界

#include
#include
char a[1001][20]; //500改小就成WA,改大就STACK_OVERFLOW
int main()
{

int b[1001],i,maxi,max,j,n;
while(scanf("%d",&n)!=EOF)
{
if(n==0) break; //题干给出的结束条件,请不要忽略
for(i=0;i scanf("%s",a[i]);
for(i=0;i {
b[i]=0;
for(j=i+1;j if(strcmp(a[j],a[i])==0)
b[i]++;
}
max=b[0];
for(i=0;i if(b[i]>=max)
{ max=b[i];
maxi=i;
}
printf("%s\n",a[maxi]);
}
return 0;
}

回答(2):

第二个是数组越界,第一个不知道,平时没注意哇……
你这个问题嘛有三个~
1.char a[1001][500]开的太大了(数组越界了),char a[1001][20]够了
2.你这个b[100]哇……太小了,int b[1000]起码的
3.当n=0的时候你没考虑啊,会输出一个垃圾数据的。
Ps:新年快乐!!
.