2015-11-09 92 views
-1
int main() //task 10 
{ 
    int num[9], i, counter = 0, minNum, maxNum = 0, sum = 0; 
    for (i = 0; i <= 9; ++i) 
    { 
     scanf("%d", &num[i]); 
     if (num[i] > maxNum) 
     { 
      maxNum = num[i]; 
      minNum = maxNum; 
     } 
     else if (num[i] < minNum) 
      minNum = num[i]; 
     sum += num[i]; 
    } 
    printf("minNum: %d, maxNum: %d\nThe average is:%d\n", minNum, maxNum, sum/10); 
    return 0; 
} 

陣列試圖運行這個節目,我得到這個錯誤: 運行時檢查失敗#2 - 圍繞堆棧變量「民」已損壞。 我想知道我的數組有什麼問題。下面你錯誤,而通過在C

+3

'int num [9]' - >'int num [10]'。還'minNum = maxNum;'?? – BLUEPIXY

回答

6

使用代碼將讀取陣列越界

for (i = 0; i <= 9; ++i) 

的你只能從0接入元件直至幷包括8在這種情況下。更改爲i < 9

PS。邏輯中可能還有其他缺陷(查看一些評論)。這裏這是一個棘手的也

if (num[i] < minNum) 

minNum未初始化的,所以如果上述條件時環路評估首先,你會得到不確定的行爲,由於讀未初始化的變量。

2

更改<=9在for循環中編號從零開始。改用<9