一个班10名学生,包含姓名、学号和3门课程的成绩。(1)求第一门课的平均成绩;(2)找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩;(3)找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现以上三个要求。
代码如下:
#include <stdio.h>
#include <string>
using namespace std;
class Student
{
public:
Student(){}
void SetId(string id){mId = id;}
void SetName(string name){mName = name;}
void SetCj(float a,float b,float c){mChji1 = a; mChji2 = b; mChji3 = c;}
float GetCj1(){return mChji1;}
float GetCj2(){return mChji2;}
float GetCj3(){return mChji3;}
string GetXh(){return mId;}
float Avg(){return (mChji1+mChji2+mChji3)/3.0;}
//判断是否有两门以上课程不及格
bool isBjg()
{
int cnt = 0;
if(mChji1 < 60)
cnt++;
if(mChji2 < 60 )
cnt++;
if(mChji3 < 60)
cnt++;
if (cnt >= 2)
{
return true;
}else
return false;
}
//平均成绩在90分以上或全部课程成绩在85分以上
bool isSuper()
{
if(Avg() >= 90)
return true;
else if (mChji1 > 85 && mChji2> 85 && mChji3 > 85)
{
return true;
}else
return false;
}
private:
string mId; //学号
string mName; //姓名
float mChji1; //科目1成绩
float mChji2; //科目1成绩
float mChji3; //科目1成绩
};
//1.求第一门课的平均分
float Average(Student st[],int size)
{
float sum = 0.0;
for (int i = 0; i <size; i++)
{
Student s = st[i];
sum += st[i].GetCj1();
}
float avg = sum/size;
printf("第一门课的平均成绩是:%.2f\n",avg);
return avg;
}
//2.找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩
void FindBjg(Student st[],int size)
{
for (int i =0; i < size; i++)
{
if (st[i].isBjg())
{
printf("%s:科目1=%.2f,科目2=%.2f,科目3=%.2f,平均分=%.2f\n",st[i].GetXh().c_str(),st[i].GetCj1(),st[i].GetCj2(),st[i].GetCj3(),st[i].Avg());
}
}
}
//3.平均成绩在90分以上或全部课程成绩在85分以上的学生
void FindSuper(Student st[],int size)
{
for (int i =0; i < size; i++)
{
if (st[i].isSuper())
{
printf("学号:%s:科目1=%.2f,科目2=%.2f,科目3=%.2f,平均分=%.2f\n",st[i].GetXh().c_str(),st[i].GetCj1(),st[i].GetCj2(),st[i].GetCj3(),st[i].Avg());
}
}
}
int main()
{
//初始化学生数据
Student st[10];
st[0].SetId("00001");st[0].SetName("t1");st[0].SetCj(88,83,90);
st[1].SetId("00002");st[1].SetName("t2");st[1].SetCj(24,42,90);
st[2].SetId("00003");st[2].SetName("t3");st[2].SetCj(12,83,90);
st[3].SetId("00004");st[3].SetName("t4");st[3].SetCj(77,56,90);
st[4].SetId("00005");st[4].SetName("t5");st[4].SetCj(88,86,90);
st[5].SetId("00006");st[5].SetName("t6");st[5].SetCj(24,42,90);
st[6].SetId("00007");st[6].SetName("t7");st[6].SetCj(88,83,90);
st[7].SetId("00008");st[7].SetName("t8");st[7].SetCj(24,42,90);
st[8].SetId("00009");st[8].SetName("t9");st[8].SetCj(88,83,90);
st[9].SetId("00010");st[9].SetName("t10");st[9].SetCj(24,42,90);
Average(st,10);
printf("有两门以上课程不及格的学生\n");
FindBjg(st,10);
printf("平均成绩在90分以上或全部课程成绩在85分以上的学生:\n");
FindSuper(st,10);
getchar();
getchar();
return 0;
}