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