2015-11-04 62 views
0

我正在創建一個程序,它將三個不同的標記存儲爲數組。當我運行該程序,我得到以下錯誤:帶for循環的數組給出分段錯誤

Enter marks: 95 
Enter marks: 64 
Segmentation fault 

這是我寫的程序:

#include <stdio.h> 
int main(void) { 

     int num[3]; 
     int i; 
     float total; 

     for (i=0;i<4;i++) { 

       printf("Enter marks: "); 
       scanf("%d", num[i]); 
     } 

     total = num[0] + num[1] + num[2]/300 * 100; 

     printf("Average: %.2f", total); 
} 
+1

你的循環應該是'<3'。 – molbdnilo

+0

@ user3121023 ops,這是一個愚蠢的錯誤。謝謝 –

回答

0

有兩個問題與您的代碼:

第(如其他已注意到)是你需要scanf因此進入一個位置:

scanf("%d", &num[1]); 

不做這是導致分段錯誤。

您還需要獲取數組大小和循環限制才能匹配。

您已經定義數組:

int num[3]; 

具有索引0,1,2

但是你的循環從0..3

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

迭代。

一旦你解決你的第一個問題,你會參考num[3]這是無效的,並會導致另一個錯誤。