突然想起来大一下的学的数据结构,那个时候还没想写过博客,那就把某个人发给我的码放在这里了。
#include<iostream>
#include<string.h>
#include<iomanip>
using namespace std;
struct st1{
int no;
char name[111];
double sc;
};
class student{
int n;
st1 st[111];
public:
void Create();
void Display();
double Average();
double Rate();
bool Findi(int i,char na[],double &sc);
bool Findno(int i,char na[],double &sc);
};
void student::Create(){
st[0].no = 2011001; strcpy(st[0].name,"王华"); st[0].sc = 90;
st[1].no = 2011010; strcpy(st[1].name,"刘丽"); st[1].sc = 62;
st[2].no = 2011006; strcpy(st[2].name,"陈明"); st[2].sc = 54;
st[3].no = 2011009; strcpy(st[3].name,"张强"); st[3].sc = 95;
st[4].no = 2011007; strcpy(st[4].name,"许兵"); st[4].sc = 76;
st[5].no = 2011012; strcpy(st[5].name,"李萍"); st[5].sc = 88;
st[6].no = 2011005; strcpy(st[6].name,"李英"); st[6].sc = 82;
n = 7;
}
void student::Display(){
cout <<" 学号\t\t姓名\t\t分数\n";
cout << " ===================================\n";
int i;
for (i = 0; i < n; i++)
cout << " " << st[i].no << "\t" << st[i].name << "\t\t" << st[i].sc << "\n";
}
double student::Average(){
int sum=0;
for(int i=0;i<=6;i++)
sum=sum+st[i].sc;
double r=sum*1.0/n;
return r;
}
double student::Rate(){
int js=0;
double r;
for(int i=0;i<=6;i++){
if(st[i].sc>=60)
js++;
}
r=js*1.0/n;
return r;
}
bool student::Findi(int i,char na[],double &sc){
if(i<=0||i>n)return 0;
else{
strcpy(na,st[i-1].name);
sc=st[i-1].sc;
return 1;
}
}
bool student::Findno(int j,char na[],double &sc){
int js=-1;
for(int i=0;i<=6;i++)
if(st[i].no==j)js=i;
if(js==-1)return 0;
else {
strcpy(na,st[js].name);
sc=st[js].sc;
return 1;
}
}
int main()
{
student st1;
double avg;
double rate,sc1;
int i,no;
char na[10];
cout << "① 建立存储结构\n";
st1.Create();
cout << "② 输出存储结构\n";
st1.Display();
cout << "③ 求所有学生的平均分\n";
avg=st1.Average();
cout << " 平均分=" << avg << endl;
cout << "④ 求及格率\n";
rate=st1.Rate();
cout << " 及格率=" << rate*100 << "%\n";
cout << "⑤ 求指定序号的学生姓名和分数\n";
cout << " 序号:"; cin >> i;
if (st1.Findi(i,na,sc1))
cout << " 序号为" << i << "的学生姓名为" << na << ",分数为" << sc1 << endl;
else
cout << " 不存在序号为" << i << "的学生记录\n";
cout << "⑥ 求指定学号的学生姓名和分数\n";
cout << " 学号:"; cin >> no;
if (st1.Findno(no,na,sc1))
cout << " 学号为" << no << "的学生姓名为" << na << ",分数为" << sc1 << endl;
else
cout << " 不存在学号为" << no << "的学生记录\n";
cout << "⑦ 销毁存储结构\n";
return 0;
}