(1)主函数中定义二维数组float score[4][3],用来存放四名同学的3门功课(语文、数学、英语)成绩,定义数组int no[4]存放四位同学的学号,定义数组float averscore[4]存放四名同学的平均成绩并赋初值为0。 (2)主函数中使用循环依次输入每位同学的学号,以及每位同学的:语文,数学,英语成绩,并分别存放于数组int no[4]和数组float score[4][3]中。 (3)编写函数void aver(float (*p_score)[3], int *p_no, int num, float p_averscore[4])实现对每位同学的三门课程的平均分的计算,然后根据平均分值从高到低的原则对四位同学进行排序,最后输出排序后的学生学号、各科成绩及其平均成绩。其中: p_score接收二维数组float score[4][3]的地址score; p_no接收数组int no[4]的地址no; num接收学生人数; p_averscore接收数组float averscore[4]的地址averscore; (4)编写函数void search(float p_score[][3], int p_no[],float p_averscore[4]) 实现对学生按学号进行检索,并输出相应同学的各科成绩、平均成绩及排名,其中: p_score接收二维数组float score[4][3]的地址score; p_no接收数组int no[4]的地址no; p_averscore接收数组float averscore[4]的地址averscore; (5)主函数中调用上述(3)(4)函数,完成题目要求。
时间: 2023-11-16 08:03:49 浏览: 63
下面是完整代码实现:
```c++
#include <iostream>
using namespace std;
void aver(float (*p_score)[3], int *p_no, int num, float p_averscore[4]) {
for (int i = 0; i < num; i++) {
float sum = 0;
for (int j = 0; j < 3; j++) {
sum += p_score[i][j];
}
p_averscore[i] = sum / 3;
}
for (int i = 0; i < num - 1; i++) {
for (int j = i + 1; j < num; j++) {
if (p_averscore[i] < p_averscore[j]) {
float tmp = p_averscore[i];
p_averscore[i] = p_averscore[j];
p_averscore[j] = tmp;
int tmp_no = p_no[i];
p_no[i] = p_no[j];
p_no[j] = tmp_no;
for (int k = 0; k < 3; k++) {
float tmp_score = p_score[i][k];
p_score[i][k] = p_score[j][k];
p_score[j][k] = tmp_score;
}
}
}
}
}
void search(float p_score[][3], int p_no[],float p_averscore[4]) {
int search_no;
cout << "请输入要搜索的学生学号:";
cin >> search_no;
int index = -1;
for (int i = 0; i < 4; i++) {
if (p_no[i] == search_no) {
index = i;
break;
}
}
if (index == -1) {
cout << "没有找到该学生!" << endl;
} else {
cout << "学号\t语文\t数学\t英语\t平均成绩\t排名" << endl;
for (int i = 0; i < 4; i++) {
if (i == index) {
cout << p_no[i] << "\t";
for (int j = 0; j < 3; j++) {
cout << p_score[i][j] << "\t";
}
cout << p_averscore[i] << "\t\t" << i+1 << endl;
}
}
}
}
int main() {
int no[4];
float score[4][3];
float averscore[4] = {0};
cout << "请输入四位同学的学号和各科成绩:" << endl;
for (int i = 0; i < 4; i++) {
cout << "学号:";
cin >> no[i];
cout << "语文、数学、英语成绩:";
for (int j = 0; j < 3; j++) {
cin >> score[i][j];
}
}
aver(score, no, 4, averscore);
cout << "按平均成绩从高到低排序后的学生信息:" << endl;
cout << "学号\t语文\t数学\t英语\t平均成绩" << endl;
for (int i = 0; i < 4; i++) {
cout << no[i] << "\t";
for (int j = 0; j < 3; j++) {
cout << score[i][j] << "\t";
}
cout << averscore[i] << endl;
}
search(score, no, averscore);
return 0;
}
```
这段代码实现了输入四位同学的学号和各科成绩,计算每位同学的平均成绩并排序,然后可以按学号搜索学生并输出其信息。