2013-10-02 24 views
0

http://www.spoj.com/problems/PRIME1/ 當我在SPOJ上運行它時,該程序顯示SEGMENTATION錯誤,但它在我的PC上正常運行(即代碼塊),該缺陷在哪裏?程序顯示SPOJ上的分段錯誤,儘管在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; 
} 
+0

你試過調試嗎? –

回答

0

您創建一個大小t的數組但隨後指數高達2*t使用它。你可能應該創建它的大小爲2*t開始。

int arr[2*t]; 

你通常可以通過valgrind或類似工具下運行您的程序捕獲這些類型的錯誤。

0

這段代碼是錯誤的:

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

您創建一個大小t的數組,然後把2*t元素進去。 KABOOM。你的代碼也可能有其他的錯誤 - 那個只是跳到我身上。

相關問題