输入3个学生的4门课程的考试成绩,编写程序计算并输出每个学生的平均分和每门课程的平均分。救命!!!
这是上周写的,每位学生平均分,每门课目平均分,成绩最高的学生序号和课目,不及格学生序号和各门课成绩,供参考:
#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;
}
}