首页 > 解决方案 > 我给我的 %f 的输入没有保存

问题描述

GradeOne 和 secondGrade 不保存我给出的数字。所以我不能得到平均值,因为总是以 (0 + 0)/2 的除法结束,有人可以帮我吗?

    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    int students;
    char name[50];
    double gradeOne, secondGrade, classAverage = 0, average = 0;

    for(students = 1;students <= 15; students++){
        printf("Tell me Your name: \n");
        fflush(stdin);
        scanf("%[^\n]s", &name);
        //saves name
        printf("Tell me your first grade: \n");
        scanf("%f", &gradeOne);
        printf("Tell me your second grade: \n");
        scanf("%f", &secondGrade);
        //saves grade


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

        printf("Student: %s\n", name);
        printf("First Grade: %3.2f \nSecond Grade: %3.2f \n", gradeOne, secondGrade);
        printf("%f", average);

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

        average = (gradeOne + secondGrade)/2;
        //creates average
        printf("Average of the %d student: %3.2f",students, average);

        classAverage += average;
        //creates class average

    }
        classAverage = classAverage / (students - 1);
        printf("The class average was: %3.2f", classAverage);

    return 0;
}

标签: cmathaverage

解决方案


%finscanf()用于阅读float。你应该%lf用来阅读double

请注意,您应该使用%finprintf()进行打印 double。较新的规范允许%lfprintf()%f应该更好的兼容性。


推荐阅读