有4个学生,每个学生的数据包括学号、姓名、3门课(高数、英语、物理)的成绩。
从键盘输入学生数据,添加如下功能:
(1)input函数从键盘输入学生数据;
(2)average函数计算3门课的成绩的平均分;
(3)print函数输出平均分大于80分的学生信息(包括学号、姓名、3门课的成绩、平均分);输出平均分最高的学生信息(包括学号、姓名、3门课的成绩、平均分)。
【样例输入】
please input 1 of 4
num:101
name:zhangsan
score 1:45
score 2:78
score 3:65
please input 2 of 4
num:102
name:lisi
score 1:70
score 2:80
score 3:90
please input 3 of 4
num:103
name:wangwu
score 1:75
score 2:85
score 3:95
please input 4 of 4
num:104
name:zhaoliu
score 1:60
score 2:65
score 3:70
【样例输出】
输出平均分大于80分的学生信息-----------------------------------
学号 姓名 高数 英语 物理 平均分
103 wangwu 75.00 85.00 95.00 85.00
输出平均分最高的学生信息-----------------------------------
学号 姓名 高数 英语 物理 平均分
103 wangwu 75.00 85.00 95.00 85.00
参考GPT和自己的思路:
可以使用结构体来存储每个学生的数据,然后通过输入、计算平均分、输出信息等函数来完成要求。具体实现如下:
#include <iostream>
#include <string>
using namespace std;
// 定义学生数据结构体
struct Student {
int num; // 学号
string name; // 姓名
float score1; // 高数成绩
float score2; // 英语成绩
float score3; // 物理成绩
};
// 输入学生信息函数
void input(Student &stu) {
cout << "num:";
cin >> stu.num;
cout << "name:";
cin >> stu.name;
cout << "score 1:";
cin >> stu.score1;
cout << "score 2:";
cin >> stu.score2;
cout << "score 3:";
cin >> stu.score3;
}
// 计算平均分函数
float average(const Student &stu) {
return (stu.score1 + stu.score2 + stu.score3) / 3.0;
}
// 输出学生信息函数
void print(const Student &stu) {
cout << stu.num << " " << stu.name << " " << stu.score1 << " " << stu.score2 << " " << stu.score3 << " " << average(stu) << endl;
}
// 主函数
int main() {
Student stu[4]; // 定义4个学生结构体数组
for (int i = 0; i < 4; i++) {
cout << "please input " << i + 1 << " of 4" << endl;
input(stu[i]);
}
// 输出平均分大于80分的学生信息
cout << "输出平均分大于80分的学生信息-----------------------------------" << endl;
for (int i = 0; i < 4; i++) {
if (average(stu[i]) > 80) {
print(stu[i]);
}
}
// 输出平均分最高的学生信息
cout << "输出平均分最高的学生信息-----------------------------------" << endl;
float max_avg = 0;
int max_index = 0;
for (int i = 0; i < 4; i++) {
if (average(stu[i]) > max_avg) {
max_avg = average(stu[i]);
max_index = i;
}
}
print(stu[max_index]);
return 0;
}
这个程序首先定义了一个学生数据结构体,包括学号、姓名和3门课程成绩。然后定义了输入、计算平均分和输出学生信息等函数。在主函数里面,先输入4个学生的信息,然后分别遍历学生数组,输出平均分大于80分的学生信息,和平均分最高的学生信息。
参考GPT和自己的思路:
好的,这是一个关于学生信息管理的程序,需要实现输入学生信息、计算平均分、输出符合条件的学生信息等功能。可以使用C++语言来实现。
以下是参考代码:
#include <iostream>
#include <string>
using namespace std;
const int MAX_STUDENT_NUM = 4; // 最大学生数
const double PASS_SCORE = 80.0; // 及格分数
struct Student {
int num; // 学号
string name; // 姓名
double score[3]; // 3门课成绩
double avg_score; // 平均分
};
void input(Student stu[], int n) {
for(int i = 0; i < n; i++) {
cout << "please input " << i+1 << " of " << n << endl;
cout << "num:";
cin >> stu[i].num;
cout << "name:";
cin >> stu[i].name;
for(int j = 0; j < 3; j++) {
cout << "score " << j+1 << ":";
cin >> stu[i].score[j];
}
}
}
void average(Student stu[], int n) {
for(int i = 0; i < n; i++) {
double sum = 0.0;
for(int j = 0; j < 3; j++) {
sum += stu[i].score[j];
}
stu[i].avg_score = sum / 3.0; // 计算平均分
}
}
void print(Student stu[], int n) {
bool has_over80 = false; // 是否有学生平均分大于80
int max_index = 0; // 平均分最高的学生下标
double max_avg_score = stu[0].avg_score; // 平均分最高的学生平均分
cout << "输出平均分大于80分的学生信息-----------------------------------" << endl;
cout << "学号\t姓名\t高数\t英语\t物理\t平均分" << endl;
for(int i = 0; i < n; i++) {
if(stu[i].avg_score > PASS_SCORE) {
has_over80 = true;
cout << stu[i].num << "\t" << stu[i].name << "\t";
for(int j = 0; j < 3; j++) {
cout << stu[i].score[j] << "\t";
}
cout << stu[i].avg_score << endl;
}
if(stu[i].avg_score > max_avg_score) {
max_avg_score = stu[i].avg_score;
max_index = i;
}
}
if(!has_over80) {
cout << "无" << endl;
}
cout << endl << "输出平均分最高的学生信息-----------------------------------" << endl;
cout << "学号\t姓名\t高数\t英语\t物理\t平均分" << endl;
cout << stu[max_index].num << "\t" << stu[max_index].name << "\t";
for(int j = 0; j < 3; j++) {
cout << stu[max_index].score[j] << "\t";
}
cout << stu[max_index].avg_score << endl;
}
int main() {
Student stu[MAX_STUDENT_NUM];
input(stu, MAX_STUDENT_NUM); // 输入学生信息
average(stu, MAX_STUDENT_NUM); // 计算平均分
print(stu, MAX_STUDENT_NUM); // 输出符合条件的学生信息
return 0;
}
代码的思路是:定义结构体Student
表示一个学生,包括学号、姓名、3门课的成绩和平均分。首先通过input
函数输入学生信息,然后通过average
函数计算每个学生的平均分,最后通过print
函数输出平均分大于80的学生信息和平均分最高的学生信息。这个程序可以通过编译和运行,提供的样例输入和输出也能得到正确结果。