一个班10名学生,包含姓名、学号和3门课程的成绩。

一个班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;

}