qq_58351766 2021-05-18 10:49 采纳率: 100%
浏览 127
已结题

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

一个班10名学生,包含姓名、学号和3门课程的成绩。(1)求第一门课的平均成绩;(2)找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩;(3)找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现以上三个要求。

  • 写回答

1条回答 默认 最新

  • qfl_sdu 2021-05-18 12:03
    关注

    代码如下:

    #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;
    
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 已采纳回答 3月23日

悬赏问题

  • ¥15 求指导ADS低噪放设计
  • ¥15 CARSIM前车变道设置
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存