查找、排序的应用 实验报告 下载本文

按总成绩进行排序

六、实验总结

通过本次实验我对查找排序的应用有了一定得了解,知道了

各种查找排序的基本知识。 同时,通过自己数次的调试、修改也搞懂了许多以前比较模糊的知识点,比如这次的界面是复制过来的,其中很多语句经过同学的讲解都理解了。但这次实验也有很多不尽人意的地方,我将在以后多学习同学优秀的地方.也会在以后的学习过程中要尽量考虑周全,使程序更有实用价值,提高编程能力。

七、源代码

#include using namespace std; #include

#define MAXSIZE 100 //设记录不超过20个

typedef struct //定义每个记录(数据元素)的结构 {

string xingming; //姓名 string xingbei; //性别 float xuehao; //学号

float chengji1,chengji2; //成绩1,成绩2 float zong; //总分 }RecordType;

typedef struct //定义顺序表的结构 {

RecordType r[ MAXSIZE +1 ]; //存储顺序表的向量 int length; //顺序表的长度 }SqList;

void caidan(SqList &ST);

void CreatList(SqList &ST)//创建学生的相关信息 {

cout<<\输入学生个数\ cin>>ST.length;

for(int i=0;i

cout<<\输入第\学生的信息\ cout<<\学号\ cin>>ST.r[i].xuehao; cout<<\姓名\ cin>>ST.r[i].xingming; cout<<\性别\ cin>>ST.r[i].xingbei; cout<<\成绩1\ cin>>ST.r[i].chengji1; cout<<\成绩2\ cin>>ST.r[i].chengji2;

}

cout<<\输入完毕\}

void zong(SqList &ST) //计算总分 {

for(int i=0;i

ST.r[i].zong=ST.r[i].chengji1+ST.r[i].chengji2; } }

void shuchu(SqList &ST)//输出 {

cout<<\学生的信息如下\

cout<<\学号 姓名 性别 成绩1 成绩2 总分 \ for(int i=0;i

cout<

void chaxun(SqList &ST) //查询信息 {

l1: cout<

cout<<\根据学号查询\ cout<<\根据姓名查询\ cout<<\根据性别查询\ cout<<\退出\ int n,m; string name; string xb; cin>>m;

if(m==1) //折半查找 {

RecordType LI; //使学号变为有序 for(int i=1;i=1;j--)

if(ST.r[j].xuehao

LI=ST.r[j];

ST.r[j]=ST.r[j-1]; ST.r[j-1]=LI; } l2: int a=0;

cout<<\输入要查找的学号\ cin>>n;

int low,high,mid;

low=0;high=ST.length-1; // 置区间初值 while (low<=high) {

mid=(low+high)/2;

if(n==ST.r[mid].xuehao) {

cout<

else if(n

high=mid-1; // 继续在前半区间进行查找 else

low=mid+1; // 继续在后半区间进行查找 }

if(!a) {

cout<<\所查信息不存在!\ cout<<\请重新输入\ goto l2; }

goto l1; }

if(m==2) //顺序查找 {

l3: int a=0;

cout<<\输入要查找的姓名\ cin>>name;

for(int i=0;i

if(name==ST.r[i].xingming) {

cout<

if(!a) {

cout<<\所查信息不存在!\ cout<<\请重新输入\ goto l3; }

goto l1; }

if(m==3) //顺序查找 {

l4: int a=0;

cout<<\输入要查找性别\ cin>>xb;

for(int i=0;i

if(xb==ST.r[i].xingbei) {

cout<

if(!a)