0

http://www.spoj.com/problems/PRIME1/ 这个程序在 SPOJ 上运行时显示 SEGMENTATION 错误,但在我的 PC 上运行良好(即代码块),缺陷在哪里?

#include<stdio.h>
int main()
{
    int t,m,n,fl=0;
    int i,j,q,w;
    scanf("%d",&t);
    int arr[t];
    for(i=0;i<2*t;++i)
    {
        scanf("%d",&arr[i]);
    }
    for(i=0;i<t*2;i+=2)
    {

        n=arr[i];m=arr[i+1];
        if(n==1)++n;
        for(j=n;j<=m;++j)
        {
            q=j;
            for(w=2;w<q;++w)
            {
                if(q%w==0){fl=1;break;}
            }
            if(fl==0){printf("%d",q);printf("\n");}
            fl=0;
        }
        printf("\n");
    }
    return 0;
}
4

2 回答 2

0

您创建一个大小数组,t然后将其与最大索引一起使用2*t。您可能应该从大小2*t开始创建它。

int arr[2*t];

您通常可以通过在valgrind或类似工具下运行程序来捕获这些类型的错误。

于 2013-10-02T22:31:04.387 回答
0

这段代码是错误的:

int arr[t];
for(i=0;i<2*t;++i)
{
    scanf("%d",&arr[i]);
}

您创建一个 size 数组t,然后将2*t元素放入其中。卡布姆。您的代码也可能有其他错误 - 一个刚刚向我跳出来的错误。

于 2013-10-02T22:31:19.530 回答