输入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 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿
- ¥15 回答4f系统的像差计算