用C表示平均成绩

时间:2016-07-06 17:49:31

标签: c arrays enums int structure

注意:我是初学者,我只是在学习。

我的学生结构有5个名字,成绩,年龄和成绩。我想知道如何编写和调用一个函数来计算其成绩的平均值,然后打印出来。

#include <stdio.h>
#include <string.h>

typedef struct{
    char name[100];
    int age;
    int scores[5];
} student;

student grade(student st, int grade, int num) {
    st.scores[num]=grade;
    return st;
}

int main(){
    student s1;
    strcpy(s1.name, "Student1");

    s1.age = 20;

    //printf("Size: %d\n", sizeof(s1));
    printf("Name: %s\tAge: %d\n", s1.name, s1.age);

    s1=grade(s1, 100, 0);
    s1=grade(s1, 96, 1);
    s1=grade(s1, 99, 2);    
    s1=grade(s1, 100, 3);

    printf("Grade: %d\n", s1.scores[0]);
    printf("Grade: %d\n", s1.scores[1]);
    printf("Grade: %d\n", s1.scores[2]);
    printf("Grade: %d\n", s1.scores[3]);

    printf("\n");

    return 0;

}

3 个答案:

答案 0 :(得分:2)

您可以通过以下方式创建函数来了解已发送结构的平均等级

float average(student st, int no_of_grades)
{
    float sum=0;
    for(int num=0 ; num < no_of_grades ; num++)
    {
        sum += st.scores[num];
    }

    return sum/no_of_grades;
}

这里的论点是为学生输入的成绩结构和分数。

main()打印所有学生成绩后,添加以下声明:

printf("average of %s : %f",s1.name,average(s1,4)); //average(structure,  no of grades)

<强>输出:

Name: Student1  Age: 20
Grade: 100
Grade: 96
Grade: 99
Grade: 100
average of Student1 : 98.750000

<强>建议:

  • 请勿使用int main(),而是使用int main(void),因为没有参数被发送到main()函数。但是,在int main()的第一种情况下,可以将任意数量的参数发送到main()函数。

答案 1 :(得分:1)

将新成员添加到student structure,如下所示:

typedef struct{
    char name[100];
    int age;
    int scores[5];
    double average;   /* new member */
} student;

定义一个新函数来计算学生的平均值并将其返回,如下所示:

double calc_average(student st)
{
    int i;
    double sum = 0.0;

    /* Calculate sum of 5 scores */
    for (i = 0; i < 5; i++)
        sum = sum + st.scores[i];

    /* Return average */
    return sum / 5;
}

然后在main - (一旦你为学生添加了所有分数) - 你可以调用这个函数来获得平均分数,如下所示:

student1.average = calc_average(student1);

答案 2 :(得分:-1)

你可以硬平均值,例如s3.scores [3]