有 6 个学生,每个学生的数据包括学号、姓名、3 门课的成绩,编写函数,实现
功能: (1)从键盘输入学生信息,存入到一个结构体数组中;
(2)计算学生三门课程的平均成绩,并存入到结构体数组中;
(3)打印出每门课的班级平均成绩;
(4)打印出最高分的学生的数据(包括学号、姓名、3 门课的成绩)。
要求:设计一个能保存学生信息的结构,包括学生的学号,姓名,成绩数组和平均
分; 在主函数中输入学生的学号,姓名和三门课成绩;在主函数中调用各函数实现功能,并
显示相应结果。
#include<stdio.h>
struct Student
{
char name[10];
char id[12];
float grad[3];
float aver;
} stu[6];
void aver()
{
for(int i=0; i<6; i++)
{
stu[i].aver=(stu[i].grad[0]+stu[i].grad[1]+stu[i].grad[2])/3;
}
for(int i=0; i<6; i++)
{
printf("姓名:%s 学号:%s 平均成绩:%f\n",stu[i].name,stu[i].id,stu[i].aver);
}
}
void Max()
{
int flag;
int Max=0;
for(int i=0; i<6; i++)
{
if(Max<stu[i].grad[0]+stu[i].grad[1]+stu[i].grad[2])
{
Max=stu[i].grad[0]+stu[i].grad[1]+stu[i].grad[2];
flag=i;
}
}
printf("成绩最高者:%s\t%s\t%.2f\t%.2f\t%.2f",stu[flag].name,stu[flag].id,stu[flag].grad[0],stu[flag].grad[1],stu[flag].grad[2]);
}
int main()
{
for(int i=0; i<6; i++)
{
printf("请输入第%d名同学的姓名/学号/成绩",i+1);
scanf("%s %s %f %f %f",stu[i].name,stu[i].id,&stu[i].grad[0],&stu[i].grad[1],&stu[i].grad[2]);
}
//平均成绩
aver();
//成绩最高
Max();
return 0;
}
可以参考这个
#include<stdio.h>
struct Stu
{
char Name[25]; //姓名
int Number; //学号
int Language_score;//语文成绩
int Math_score; //数学成绩
int English_score; //英语成绩
int PE_score; //体育成绩
int C_score; //C语言成绩
int Sum_score; //总成绩
};
void Create(struct Stu Class[],int n)
{
int j,k,tem;
for(j=0; j<n; j++)
{
printf("输入第%d位同学姓名:",j+1);
scanf("%s",Class[j].Name);
getchar();
printf("输入第%d位同学学号:",j+1);
scanf("%d",&Class[j].Number);
printf("输入第%d位同学语文成绩:",j+1);
scanf("%d",&Class[j].Language_score);
printf("输入第%d位同学数学成绩:",j+1);
scanf("%d",&Class[j].Math_score);
printf("输入第%d位同学英语成绩:",j+1);
scanf("%d",&Class[j].English_score);
printf("输入第%d位同学体育成绩:",j+1);
scanf("%d",&Class[j].PE_score);
printf("输入第%d位同学C语言成绩:",j+1);
scanf("%d",&Class[j].C_score);
Class[j].Sum_score=Class[j].Language_score+Class[j].Math_score+Class[j].English_score+Class[j].PE_score+Class[j].C_score;
}
}
void Print(struct Stu Class[],int n)
{
printf("姓名 学号 语文 数学 英语 体育 C语言 总分");
printf("\n");
int j;
for(j=0; j<n; j++)
{
printf("%5s",Class[j].Name);
printf("%5d",Class[j].Number);
printf("%6d",Class[j].Language_score);
printf("%6d",Class[j].Math_score);
printf("%6d",Class[j].English_score);
printf("%6d",Class[j].PE_score);
printf("%6d",Class[j].C_score);
printf("%7d",Class[j].Sum_score);
printf("\n");
}
}
void Sort(struct Stu Class[],int n)
{
int j,k;
struct Stu t;
for(j=0; j<n-1; j++)
{
for(k=0; k<n-j-1; k++)
{
if(Class[k].Sum_score<Class[k+1].Sum_score)
{
t=Class[k];
Class[k]=Class[k+1];
Class[k+1]=t;
}
}
}
}
int main()
{
struct Stu Class [25];
int n,j,k,tem;
printf("输入学生的个数(不大于25):");
scanf("%d",&n);
Create(Class,n);
printf("\n");
Print(Class,n);
Sort(Class,n);
printf("\n按总成绩排序后:\n\n");
Print(Class,n);
return 0;
}