2016-11-13 5 views
0

Так что всякий раз, когда я вводил оценку, она возвращает мне случайный символ, хотя я и определил оценку. Не лучше, если я использовал значение из return grade;, но я не знаю, как получить этот символ в мою основную функцию бы: <Моя функция c возвращает тарабарщину

#include <stdio.h> 

char GradeFromPercentage(float percentage); 

int main() { 
    float percentage1; 
    printf("Enter the student's percentage:"); 
    scanf("%f", &percentage1); 
    printf("Student's grade is %c \n", GradeFromPercentage(percentage1)); 
    return 0; 
} 

char GradeFromPercentage(float percentage) { 
    char grade; 
    if (percentage >= 90) { 
     grade = "A"; 
    } else 
    if (percentage >= 70) { 
     grade = "B"; 
    } else 
    if (percentage >= 50) { 
     grade = "C"; 
    } else 
    if (percentage >= 30) { 
     grade = "D"; 
    } else { 
     grade = "F"; 
    } 
    return grade; 
} 
+1

Интересно, почему компилятор не производит предупреждение. Хорошим правилом является компиляция с максимально возможным количеством предупреждений. Если вы используете gcc, эти параметры удобны: gcc -Wall -Wextra -pedantic -Werror -std = c99 (или другой стандарт). –

+1

'' '' '' не 'char'. Также нет '' B "', '" C "... –

+0

Предупреждение о компиляторе для каждого из них. –

ответ

2

Изменения функция GradeFromPercentage, вы назначая char* вместо char

char GradeFromPercentage(float percentage) 
{ 

    char grade; 
    if (percentage >= 90) 
    { 
     grade = 'A'; 
    } 
    else if (percentage >= 70) 
    { 
     grade = 'B'; 
    } 
    else if (percentage >= 50) 
    { 
     grade = 'C'; 
    } 
    else if (percentage >= 30) 
    { 
     grade = 'D'; 
    } 
    else 
    { 
     grade = 'F'; 
    } 
    return grade; 
} 
+2

'вы возвращали char *' ... umm..no ... проблема в самом задании. –

+0

не получил вас @SouravGhosh –

+0

Все, теперь я получил точку :) спасибо –

1

Вы назначаете строки переменной char в GradeFromPercentage(). Вы должны использовать символьные константы с одинарными кавычками вместо строк символов с двойными кавычками.

Вот исправленная и упрощенная версия:

char GradeFromPercentage(float percentage) { 
    if (percentage >= 90) { 
     return 'A'; 
    } 
    if (percentage >= 70) { 
     return 'B'; 
    } 
    if (percentage >= 50) { 
     return 'C'; 
    } 
    if (percentage >= 30) { 
     return 'D'; 
    } 
    return 'F'; 
} 
+0

один лайнер: 'return 'FFFDDCCBBA" [percent <0? 0: процент> 90? 9: (int) (в процентах/10)]; ' – chqrlie

+0

им еще не продвинуто: P –

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