在C中取得平均成绩
注意:我是初学者,正在学习。 我有5个名字的学生结构,他们的等级,他们的年龄,以及他们的等级。我想知道如何编写和调用一个函数来计算他们的平均成绩,然后打印出来在C中取得平均成绩,c,arrays,enums,int,structure,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, i
#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;
}
#包括
#包括
类型定义结构{
字符名[100];
智力年龄;
智力得分[5];
}学生;
学生等级(学生等级,整数等级,整数编号){
标准分数[num]=等级;
返回st;
}
int main(){
学生s1;
strcpy(s1.name,“学生1”);
s1.年龄=20岁;
//printf(“大小:%d\n”,大小为(s1));
printf(“名称:%s\tAge:%d\n”,s1.Name,s1.age);
s1=等级(s1,100,0);
s1=等级(s1,96,1);
s1=等级(s1,99,2);
s1=等级(s1,100,3);
printf(“分数:%d\n”,s1.分数[0]);
printf(“分数:%d\n”,s1.分数[1]);
printf(“分数:%d\n”,s1.分数[2]);
printf(“分数:%d\n”,s1.分数[3]);
printf(“\n”);
返回0;
}
您可以将平均分作为核心,例如s3。分数[3]向学生结构添加一个新成员,如下所示:
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;
}
student1.average = calc_average(student1);
定义一个新函数来计算学生的平均值并返回,如下所示:
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;
}
student1.average = calc_average(student1);
您可以通过以下方式创建一个函数来了解已发送结构的平均等级:
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;
}
输出:
Name: Student1 Age: 20
Grade: 100
Grade: 96
Grade: 99
Grade: 100
average of Student1 : 98.750000
建议:
Name: Student1 Age: 20
Grade: 100
Grade: 96
Grade: 99
Grade: 100
average of Student1 : 98.750000
- 不要使用
int main()
,而是使用int main(void)
,因为没有参数被发送到main()
函数中。但是,在第一种情况下,即intmain()
,可以将任意数量的参数发送到main()
函数中
打字错误:s2=等级(s1、94、0)代码>接下来的3行应为s2=等级(s2…
和类似的4s3=
行。添加等级并划分…有什么问题?@WeatherVane我刚刚更改了它,thanks@SouravGhosh我如何让计算机做到这一点?@user1049876您的问题不清楚?您的意思是要计算每个学生的平均分数吗?在这种情况下,您可以在student
struct调用了average
,比如double average;
。然后您可以定义一个函数double calc_average(student st)
,该函数将计算平均值并返回。您可以这样调用该函数,stdent1.average=calc_average(student1);
。您还需要一名成员说出分数。OP的代码只输入了5个可能分数中的4个。是的,我在OP的代码中也看到了:)这就是为什么我写了一旦你为一个学生加上所有的分数,我的意思是OP会加上所有的5分。如果你要添加新的结构成员,你可以添加int numcores
并删除functiongrade()
@WeatherVane which functiongrade()
,你的意思是计算平均值()
?这里我只传递了一个参数。但为了防止您想改进答案,您可以对其进行永久编辑:)。传递这个130多字节的学生的值并不是很好,最好传递一个指向它的指针。