2016-08-27 216 views
1
#include<stdio.h> 
int max_pairwise(int *array,int n) { 
    int result=0; 
    int i,j; 

    for(i=0; i<n; i++) 
     for(j=i+1; j<n; i++) { 
      if(array[i]*array[j]>result) 
       result=array[i]*array[j]; 
     } 
    return result; 
} 

int main(void) { 

    int n; 
    scanf("%d",&n); 

    int array[n]; 
    int i; 
    for(i=0; i<n; i++) 
     scanf("%d",&array[i]); 


    int result=max_pairwise(array,n); 
    printf("%d",result); 

    return 0; 
} 
+1

外的範圍將發生訪問。嘗試使用調試器來找到它。 – MikeCAT

+1

這個'for(j = i + 1; j jwpfox

+0

作爲一般說明,檢查你所引用的指針是否在該函數開始時不是'null'('max_pairwise') – ThunderWiring

回答

3

你增加了錯誤的變量在你的內循環:

// here------v 
for(j=i+1;j<n;i++) 

結果,i不斷得到無限制地增加。這導致讀取數組的末尾,導致undefined behavior,其中一個可能的症狀是段錯誤。

你想這樣的:

for(j=i+1;j<n;j++) 
+0

agraahhh ...非常感謝:) –

+0

@RafiqReefat - 如果這個解決你的問題,請花時間接受答案。這對我們所有人都有幫助,因爲我們可以看到問題已經解決。 – 4386427

1

在功能max_pairwise(),在第二個for循環你輸入我++而不是J ++

+0

我不明白你的答案如何增加任何價值。這已經在6分鐘前由@dbush覆蓋了 – 4386427

+0

@ 4386427我看不出您的評論如何添加任何值。 – nicomp

+0

@nicomp - 這是傷心 – 4386427

相關問題