注意:我是初学者,我只是在学习。
我的学生结构有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;
}
答案 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]