输入3个学生的4门课程的考试成绩,编写程序计算并输出每个学生的平均分和每门课程的平均分。救命!!!
2条回答 默认 最新
- qzjhjxj 2021-09-02 10:21关注
这是上周写的,每位学生平均分,每门课目平均分,成绩最高的学生序号和课目,不及格学生序号和各门课成绩,供参考:
#include<iostream> #include<string> #include<time.h> constexpr auto N = 3; //3个学生; constexpr auto M = 4; //4门课程; using namespace std; typedef struct student { string num; //学号 string name;//姓名 float score[M];//课目成绩 float avg; //每个学生4门课目平均分 }Student; void Input_info(Student* stu);//手工信息录入,平均分/学生 void Init_data(Student* stu); //初始化函数,平均分/学生 void Hight_score(Student* stu);//成绩最高的学生序号和课目 void fail_score(Student* stu);//不及格学生序号和各门课成绩 void avg_score(Student* stu); //每课目平均分 void print(Student* stu); //输出信息 int main() { Student stu[N]; srand((unsigned int)time(NULL));//生成随机数 //Input_info(stu); Init_data(stu); print(stu); Hight_score(stu); fail_score(stu); avg_score(stu); return 0; } void Input_info(Student* stu) { int i, j; cout << "输入" << N << "位学生学号、姓名及" << M << "门课目成绩" << endl; for (i = 0; i < N; i++) { cin >> stu[i].num >> stu[i].name; stu[i].avg = 0; for (j = 0; j < M; j++) { cin >> stu[i].score[j]; stu[i].avg += stu[i].score[j]; } stu[i].avg /= M; } } void Init_data(Student* stu) { string nameseed = "ABCDEFGH"; string numseed = "123456789"; int i, j; for (i = 0; i < N; i++) { stu[i].num = "00000000"; stu[i].num += numseed[i]; stu[i].name = "student_"; stu[i].name += nameseed[i]; stu[i].avg = 0; for (j = 0; j < M; j++) { stu[i].score[j] = rand() % 61 + 40; stu[i].avg += stu[i].score[j]; } stu[i].avg /= M; } } void Hight_score(Student* stu) { int i, j; float max; cout << endl << "---成绩最高的学生---" << endl; cout << endl << " 学号\t\t课目" << endl << endl; for (j = 0; j < M; j++) { max = stu[0].score[j]; for (i = 0; i < N; i++) { if (max < stu[i].score[j]) max = stu[i].score[j]; } for (i = 0; i < N; i++) { //同一课目,最高分相同所有学生 if (stu[i].score[j] == max) cout << stu[i].num << "\t" << "课目" << j + 1 << endl; } } } void fail_score(Student* stu) { int i, j, k = 0; for (i = 0; i < N; i++) { for (j = 0; j < M; j++) { if (stu[i].score[j] < 60) break; } if (j < M) { if (k == 0) { cout << endl << "---不及格学生序号和各门课成绩---" << endl << endl; cout << " 学号\t\t" << "课目1\t" << "课目2\t" << "课目3\t" << "课目4" << endl << endl; } k++; cout << stu[i].num; for (j = 0; j < M; j++) cout << "\t" << stu[i].score[j]; cout << endl; } } if (k == 0) cout << endl << "---无成绩不及格的学生---" << endl << endl; } void avg_score(Student* stu) { int i, j; float avg; print(stu); cout << "各课目平均分:\t\t"; for (j = 0; j < M; j++) { avg = 0; for (i = 0; i < N; i++) { avg += stu[i].score[j]; } cout << "\t" << avg / N; } cout << endl << endl; } void print(Student* stu) { int i, j; cout << endl << "学号\t\t" << "姓名\t\t" << "课目1\t" << "课目2\t" << "课目3\t" << "课目4\t" << "平均分" << endl << endl; for (i = 0; i < N; i++) { cout << stu[i].num << "\t" << stu[i].name; for (j = 0; j < M; j++) cout << "\t" << stu[i].score[j]; cout << "\t" << stu[i].avg << endl; } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 echarts动画效果失效的问题。官网下载的例子。
- ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
- ¥15 Attention is all you need 的代码运行
- ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
- ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
- ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
- ¥30 关于<main>标签页面跳转的问题
- ¥80 部署运行web自动化项目
- ¥15 腾讯云如何建立同一个项目中物模型之间的联系
- ¥30 VMware 云桌面水印如何添加