2015-11-04 2 views
0

Я создаю программу, в которой хранятся три разные метки в виде массивов. Когда я запускаю программу, я получаю следующее сообщение об ошибке:Массивы с петлями дают ошибку сегментации

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.

Однако ваш цикл

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

итерацию от 0..3.

Как только вы исправите свою первую проблему, вы будете ссылаться на num[3], что является недопустимым и приведет к другой ошибке.

Смежные вопросы