C语言 是什么导致了分段错误?


#include<stdio.h>
#include<math.h>
int main(void)
{
int n=15,i,j,c=1,arr[n/2],prime=0;
arr[0]=2;
for(i=3;i<=n;i+=2)
{
int count=0;
for(j=2;j<(sqrt(i));j++)
{
if(i%j==0)
{
count=1;
break;
}
}
if(count==0)
{
arr[c]=i;
c++;
}
}  
for(i=c;i>0;i++)     
{
int sum=0;
int k=arr[i];
for(j=0;sum<=k;j++)
{
sum=sum+arr[j];  **segmentation error in this line**
if(sum==k)
{
prime++;
break;
}
}
printf("%d",prime);
}

我上面提到的那行导致我分段错误是数组的错误使用吗? 根据此函数,C 的值为 6。arr={2,3,5,7,11,13,15} 的内容,即 7 个元素,我使用 c=6 作为索引值。

for ( i = c; i > 0; i++ )

c至少是1.在i = c,条件i > 0和每次迭代后(i++(i的(!(递增(不是递减(,循环变得无限 -i将永远大于0

分段错误发生在任何其他运行时错误之前,因为程序尝试在无限循环中的某个点使用arr[i]arr[j]来访问数组arr之外的元素。

首先尝试用i--替换i++

相关内容

  • 没有找到相关文章

最新更新