2014-01-21 66 views
0

我給1000位數字作爲輸入,並使用此程序來查找5個連續整數的最大乘積。該陣列被用來保持與最高product.I我卻得到了意想不到的答案序列(我懷疑問題是在轉換,從焦炭到int)字符到int轉換錯誤在c

#include <stdio.h> 
int main(void) 
    { 
    int a[5],c=0,b,i=1; 
    char *num[1000]; 
    scanf("%s",&num); 
    while(i<5) 
    { 
     a[i]=num[i]-'0'; 
     i++; 
    } 
    while(i<1000) 
    { 
     b=(char)num[i]-'0'; 
     if(a[c]<b) 
     { 
      a[c]=b; 
      c=(c+1)%5; 
     }i++; 
    } 
    printf("%d",a[0]*a[1]*a[2]*a[3]*a[4]); 
    return 0; 
} 
+1

除了固定類型,如果你想存儲1000個字符,你需要在末尾分配額外的內存空間來終止空值,所以使'num'至少爲1001. – woolstar

回答

2

您的代碼來分配和讀取的字符串是錯誤的。你正在分配一個1000個指針的數組。你的意思是寫:

char num[1000]; 
scanf("%s", num); 

你的代碼的其餘部分也充滿了錯誤。你的意思是把我初始化爲0,並且你需要在第二次循環之前將它設置回0。而你的第二個循環運行到1000,因此訪問未初始化的num元素。

+0

謝謝你的糾正,我打算在第二個循環前保留我的值爲5 – codeln

+0

我向你保證它不是。第二個循環讀取未初始化的值。 –

+0

是的,我應該初始化爲0,謝謝 – codeln