c++定义一个学生成绩结构体类型,包含“学号”、“姓名”、“性别”、“年龄”、“班级”、“英语”、“数学”、“物理”、“总分”、“名次”等信息。编写6个函数分别用于: (1) 使用结构体数组,输入全班10名
时间: 2023-10-02 14:07:55 浏览: 93
数据结构:定义一个包含学生信息(学号、姓名、成绩)的顺序表_数据结构
5星 · 资源好评率100%
学生的信息;(2) 统计每个学生的总分和平均分;(3) 按照总分从高到低排序,并输出名次;(4) 按照学号查询学生信息;(5) 按照姓名查询学生信息;(6) 按照名次查询学生信息。
以下是代码实现:
```c++
#include<iostream>
#include<string>
using namespace std;
//定义学生成绩结构体类型
struct Student{
string stuNum; //学号
string name; //姓名
char sex; //性别
int age; //年龄
string className; //班级
double english; //英语成绩
double math; //数学成绩
double physics; //物理成绩
double totalScore; //总分
int rank; //名次
};
//函数1:输入学生信息
void input(Student stu[], int n){
for(int i=0; i<n; i++){
cout<<"请输入第"<<i+1<<"个学生的信息:"<<endl;
cout<<"学号:";
cin>>stu[i].stuNum;
cout<<"姓名:";
cin>>stu[i].name;
cout<<"性别:";
cin>>stu[i].sex;
cout<<"年龄:";
cin>>stu[i].age;
cout<<"班级:";
cin>>stu[i].className;
cout<<"英语成绩:";
cin>>stu[i].english;
cout<<"数学成绩:";
cin>>stu[i].math;
cout<<"物理成绩:";
cin>>stu[i].physics;
stu[i].totalScore = stu[i].english + stu[i].math + stu[i].physics; //计算总分
}
}
//函数2:统计总分和平均分
void countScore(Student stu[], int n){
double sumScore = 0;
for(int i=0; i<n; i++){
sumScore += stu[i].totalScore;
}
double aveScore = sumScore / n;
cout<<"全班总分为:"<<sumScore<<",平均分为:"<<aveScore<<endl;
}
//函数3:按照总分从高到低排序,并输出名次
void rankByScore(Student stu[], int n){
for(int i=0; i<n-1; i++){ //冒泡排序
for(int j=0; j<n-i-1; j++){
if(stu[j].totalScore < stu[j+1].totalScore){
Student temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
for(int i=0; i<n; i++){ //输出名次
stu[i].rank = i+1;
cout<<"第"<<stu[i].rank<<"名:"<<stu[i].name<<endl;
}
}
//函数4:按照学号查询学生信息
void searchByStuNum(Student stu[], int n, string stuNum){
for(int i=0; i<n; i++){
if(stu[i].stuNum == stuNum){
cout<<"学号:"<<stu[i].stuNum<<endl;
cout<<"姓名:"<<stu[i].name<<endl;
cout<<"性别:"<<stu[i].sex<<endl;
cout<<"年龄:"<<stu[i].age<<endl;
cout<<"班级:"<<stu[i].className<<endl;
cout<<"英语成绩:"<<stu[i].english<<endl;
cout<<"数学成绩:"<<stu[i].math<<endl;
cout<<"物理成绩:"<<stu[i].physics<<endl;
cout<<"总分:"<<stu[i].totalScore<<endl;
cout<<"名次:"<<stu[i].rank<<endl;
return; //找到一个就返回
}
}
cout<<"没有找到该学生!"<<endl;
}
//函数5:按照姓名查询学生信息
void searchByName(Student stu[], int n, string name){
for(int i=0; i<n; i++){
if(stu[i].name == name){
cout<<"学号:"<<stu[i].stuNum<<endl;
cout<<"姓名:"<<stu[i].name<<endl;
cout<<"性别:"<<stu[i].sex<<endl;
cout<<"年龄:"<<stu[i].age<<endl;
cout<<"班级:"<<stu[i].className<<endl;
cout<<"英语成绩:"<<stu[i].english<<endl;
cout<<"数学成绩:"<<stu[i].math<<endl;
cout<<"物理成绩:"<<stu[i].physics<<endl;
cout<<"总分:"<<stu[i].totalScore<<endl;
cout<<"名次:"<<stu[i].rank<<endl;
return; //找到一个就返回
}
}
cout<<"没有找到该学生!"<<endl;
}
//函数6:按照名次查询学生信息
void searchByRank(Student stu[], int n, int rank){
if(rank<1 || rank>n){ //判断名次是否合法
cout<<"输入的名次不合法!"<<endl;
return;
}
cout<<"第"<<rank<<"名:"<<stu[rank-1].name<<endl;
cout<<"学号:"<<stu[rank-1].stuNum<<endl;
cout<<"姓名:"<<stu[rank-1].name<<endl;
cout<<"性别:"<<stu[rank-1].sex<<endl;
cout<<"年龄:"<<stu[rank-1].age<<endl;
cout<<"班级:"<<stu[rank-1].className<<endl;
cout<<"英语成绩:"<<stu[rank-1].english<<endl;
cout<<"数学成绩:"<<stu[rank-1].math<<endl;
cout<<"物理成绩:"<<stu[rank-1].physics<<endl;
cout<<"总分:"<<stu[rank-1].totalScore<<endl;
}
int main(){
const int n = 10;
Student stu[n]; //定义结构体数组
input(stu, n); //输入学生信息
countScore(stu, n); //统计总分和平均分
rankByScore(stu, n); //按照总分排序,并输出名次
string stuNum;
cout<<"请输入要查询的学生学号:";
cin>>stuNum;
searchByStuNum(stu, n, stuNum); //按照学号查询学生信息
string name;
cout<<"请输入要查询的学生姓名:";
cin>>name;
searchByName(stu, n, name); //按照姓名查询学生信息
int rank;
cout<<"请输入要查询的名次:";
cin>>rank;
searchByRank(stu, n, rank); //按照名次查询学生信息
return 0;
}
```
阅读全文