老师平时布置的希冀系统上的作业答案,仅供参考!
【问题描述】
定义全班学生学习成绩的结构体数组,学生结构体类型的数据成员为:姓名、学号、英语、物理、数学和这三门功课的平均成绩(通过计算得到)。设计四个函数:全班成绩输入,求出每个学生的平均成绩,按平均成绩的升序排序,输出全班成绩表。在主函数调用这四函数完成学生成绩的输入、计算、排序与输出工作
【样例输入】
2021 zhang 34 45 56
0921 lisi 45 56 34
9087 wang 89 78 89
【样例输出】
2021 zhang 34.00 45.00 56.00 45.00
921 lisi 45.00 56.00 34.00 45.00
9087 wang 89.00 78.00 89.00 85.33
【参考答案】
# include <iostream>
#include<iomanip>
using namespace std;
struct student //定义学生成绩结构体类型
{ int no;
char name[8];
float eng,phy,math,ave;
};
void Input (student s[ ],int n) //输入函数
{ int i;
for (i=0;i<n;i++)
cin >> s[i].no >>s[i].name>>s[i].eng>>s[i].phy>>s[i].math;
}
void Ave (student s[ ],int n) //求平均成绩函数
{ int i;
for (i=0;i<n;i++)
s[i].ave=(s[i].eng+s[i].phy+ s[i].math)/3;
}
void Sort(student s[ ],int n) //升序排序函数
{ int i,j,k;
student temp;
for (i=0;i<n-1;i++)
{ k=i;
for (j=i+1;j<n;j++)
if (s[k].ave>s[j].ave ) k=j;
if (k>i)
{temp=s[k];s[k]=s[i];s[i]=temp;}
}
}
void Print(student s[ ], int n) //输出函数
{ int i;
for (i=0;i<n;i++)
printf("%d %s %.2f %.2f %.2f %.2f\n",s[i].no,s[i].name,s[i].eng,s[i].phy,s[i].math,s[i].ave);
}
int main ()
{ student stu[3]; //定义结构体数组
Input(stu,3); //输入学生成绩
Ave (stu,3); //计算学生平均成绩
Sort(stu,3); //按平均成绩排序
Print(stu,3); //输出学生成绩
return 0;
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容