求教C语言,RE: 无效内存引用

2025-04-27 07:54:45
推荐回答(1个)
回答1:

提示堆栈溢出……

局部变量(自动变量)的数组不要开太大,改成全局变量就好了。
以下VC上运行通过……

#include"stdio.h"
#define N (100000)

unsigned long int * up(unsigned long int s[],unsigned long int count)
{ unsigned long int i,j,p,temp;
for(i=0;i { p=i;
for(j=i+1;j if(s[i]>s[j]) p=j;
if(p!=i)
{ temp=s[p];
s[p]=s[i];
s[i]=temp;
}
}
return s;
}

unsigned long int a[N] = {0},b[N] = {0},s[N] = {0};
int main()
{ unsigned long int t,i,j,k=0,flag=0,count=0;
unsigned long int n,m;
for(i=0;is[i]=1000000001;
scanf("%d",&t);
for(;t>0;t--)
{ scanf("%d%d",&n,&m);
for(i=0;i scanf("%d",&a[i]);
for(j=0;j scanf("%d",&b[j]);
for(i=0;i for(j=0;j { if(a[i]==b[j]) {s[k++]=a[i]; flag=1;}
}

for(i=0;s[i]<=1000000000;i++)
count++;
up(s,count);
printf("%d\n",count);
if(flag)
{for(i=0;iprintf("%d ",s[i]);
printf("%d\n",s[i]);
}
k=0;flag=0;count=0;
}
return 0;
}