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

一个班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 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。