2014-09-13 4 views
0
#include<stdio.h> 
int calc_perc(int r){ 

     float A, B, C, OTHER; 
     int fullSections, leftover; 
     const int FULLCLASS = 25; 

     fullSections = r/FULLCLASS; 
     leftover = r - (FULLCLASS*fullSections); 
     A = r*0.30; 
     B = r*0.25; 
     C = r*0.15; 
     OTHER = r*0.30; 

     printf("\nEnrollment: %d students\n", r); 
     printf("Full sections: %d\n", fullSections); 
     printf("Left over: %d students\n", leftover); 

     printf("\n  Students expected to recieve an A: %0.2f ", A); 
     printf("\n  Students expected to recieve a B: %0.2f ", B); 
     printf("\n  Students expected to recieve a C: %0.2f ", C); 
     printf("\n  Students expected to recieve some other grade: %0.2f\n\n", OTHER); 

     printf("=======================================\n\n"); 
} 

int main(void) 
{ 

     int students1, students2, students3; 

     printf("Elijah Grote\n"); 
     printf("\nEnter three enrollments on one line: "); 
     scanf("%d %d %d", students1, students2, students3); 
     calc_perc(students1); 
     calc_perc(students2); 
     calc_perc(students3); 
     return 0; 
} 

Ошибка, о которой я думаю, происходит либо в calc_perc, либо в scanf ... Но я не могу понять, какой и почему он это делает ... Он компилируется чистым, но когда я ввожу номера для учащихся 1, 2 и 3, это дает мне ошибку сегментации. Я использую Unix, и когда я делаю a.out и вводим это после того, как он запрашивает 3 числа: 56^H^H, он печатает правильный формат, но не имеет правильных номеров ... что-то делать с неправильным распределением памяти или плохой указатель?Ошибка сегментации по методу в C

Цените любую помощь,

Благодаря

ответ

2

Функция scanf требует адрес каждой целевой переменной (как еще это установить его в чем-то?).

Изменить это:

scanf("%d %d %d", students1, students2, students3); 

Для этого:

scanf("%d %d %d", &students1, &students2, &students3); 

В качестве побочного сведению, вы объявили функцию calc_perc, чтобы возвращать int, но ничего не возвращает.

+0

OP должен рассмотреть возможность использования '-Wall' с' gcc' - компилятор предупредил об этой проблеме. –

+0

@MichaelBurr: Вы в основном правы, но я считаю, что вопрос под рукой подразумевает, что OP имеет гораздо более простые вещи, чтобы учиться, прежде чем попасть в конфигурацию компилятора. –