《数据结构实验六查找与排序.docx》由会员分享,可在线阅读,更多相关《数据结构实验六查找与排序.docx(6页珍藏版)》请在三一办公上搜索。
1、数据结构实验六 查找与排序算法分析实验六 查找与排序 班级 学号 姓名 分数 一、实验目的: 1理解掌握查找与排序在计算机中的各种实现方法。 2学会针对所给问题选用最适合的算法。 3熟练掌握常用排序算法在顺序表上的实现,能解决简单的应用问题。 二、实验要求: 掌握利用常用的查找排序算法的思想来解决一般问题的方法和技巧,进行算法分析并写出实习报告。 三、实验内容及分析: 设计一个学生信息管理系统,学生对象至少要包含:学号、性别、成绩1、成绩总成绩等信息。要求实现以下功能: 1平均成绩要求自动计算; 2查找:分别给定学生学号、性别,能够查找到学生的基本信息; 3 排序:分别按学生的学号、成绩1、成
2、绩2、平均成绩进行排序。 四、程序的调试及运行结果 五、程序代码 #include #include struct student/定义结构体 char name30; int a1,a2,a3,num; double pow; zl100; int count=0; void jiemian1; /主界面/函数声明 int jiemian2; /选择界面 void luru; /录入函数 void xianshi; /显示 void paixv; /排序 void diaoyong(int); /循环调用选择界面 void tianjia; /添加信息 void chaxun1; /按学号查
3、询详细信息 void chaxun2; /按姓名查询详细信息 void xiugai; /修改信息 void shanchu; /删除信息 void main /main函数 jiemian1;/函数点用 void jiemian1 /主界面定义 char a; printf(nnnnttt学 员 信 息 管 理 器nnnttt 数据结构课程设计练习六 nnnttt 09信计2:于学彬nn); printf(nttt 按 回 车 键 继 续:); scanf(%c,&a); system(cls); jiemian2; int jiemian2 /选择界面 int a,b; printf(*主
4、 要 功 能*); printf(nnnntttt1.录 入 信 息nntttt2.添 加 信 息nntttt3.查 看 信 息nntttt4.查 询 信 息nntttt5.修 改 信 息nntttt6.删 除 信 息nntttt7.退 出nntttt请 选 择:); scanf(%d,&a); switch(a) case 1:system(cls);luru;break; case 2:system(cls);tianjia;break; case 3:system(cls);paixv;break; case 4:system(cls); printf(1.按学号查询详细信息n2.按姓名
5、查询详细信息n请选择:); scanf(%d,&b); switch(b) case 1:system(cls);chaxun1;break; case 2:system(cls);chaxun2;break; break; case 5:system(cls);xiugai;break; case 6:system(cls);shanchu;break; case 7:system(cls);return a;break; void diaoyong(int b) /循环调用选择界面 char a=y; printf(是否返回选择页(y/n):); fflush(stdin);/清空输入缓冲
6、区,通常是为了确保不影响后面的数据读取(例如在读完一个字符串后紧接着又要读取一个字符,此时应该先执行fflush(stdin);) a=getchar; system(cls); while(a=y|a=Y) b=jiemian2; if(b=7) break; void luru /录入函数 char a;/=y; do printf(请输入学员信息:n); printf(学号:); scanf(%d,&zlcount.num);/调用结构体 printf(姓名:); fflush(stdin); gets(zlcount.name); printf(三门成绩:n); printf(成绩1:
7、); scanf(%d,&zlcount.a1); printf(成绩2:); scanf(%d,&zlcount.a2); printf(成绩3:); scanf(%d,&zlcount.a3); zlcount.pow=(zlcount.a1+zlcount.a2+zlcount.a3)/3;/求平均数 printf(是否继续(y/n):); fflush(stdin); a=getchar; count+; system(cls); while(a=y&count100); /paixv; diaoyong(count); void tianjia /添加信息 char a=y; do
8、printf(请输入学员信息:n); printf(学号:); scanf(%d,&zlcount.num); printf(姓名:); /fflush(stdin); gets(zlcount.name); printf(三门成绩:n); printf(成绩1:); scanf(%d,&zlcount.a1); printf(成绩2:); scanf(%d,&zlcount.a2); printf(成绩3:); scanf(%d,&zlcount.a3); zlcount.pow=(zlcount.a1+zlcount.a2+zlcount.a3)/3; printf(是否继续(y/n):)
9、; /fflush(stdin); a=getchar; count+; system(cls); while(a=y&count100); paixv(count); diaoyong(count); void xianshi /显示 int i; printf(学号t t姓名ttt平均成绩n); for(i=0;icount;i+) printf(%dt t%sttt%fn,zli.num,zli.name,zli.pow); void paixv /排序 int i,j; struct student zl1; printf(排序前:n); xianshi; for(i=0;icount
10、;i+) for(j=1;jcount-i;j+) if(zlj-1.powzlj.pow) zl1=zlj-1; zlj-1=zlj; zlj=zl1; printf(排序后:n); xianshi; diaoyong(count); void chaxun1 /按学号查询详细信息 int i,num; printf(请输入要查询学员的学号:); scanf(%d,&num); printf(学号t姓名t成绩1t成绩2t成绩3t平均成绩n); for(i=0;icount;i+) if(zli.num=num) printf(%dt%st%dt%dt%dt%.2fn,zli.num,zli.
11、name,zli.a1,zli.a2,zli.a3,zli.pow); diaoyong(count); void chaxun2 /按姓名查询详细信息 int i; struct student zl1; printf(请输入要查询学员的姓名:); fflush(stdin); gets(zl1.name); printf(学号t姓名t成绩1t成绩2t成绩3t平均成绩n); for(i=0;icount;i+) if(strcmp(zli.name,zl1.name)=0)/比较两个字符串的大小 printf(%dt%st%dt%dt%dt%.2fn,zli.num,zli.name,zli
12、.a1,zli.a2,zli.a3,zli.pow); diaoyong(count); void xiugai /修改信息 int i,num; printf(请输入要查询学员的学号:); scanf(%d,&num); printf(学号t姓名t成绩1t成绩2t成绩3t平均成绩n); for(i=0;icount;i+) if(zli.num=num) break; printf(%dt%st%dt%dt%dt%.2fn,zli.num,zli.name,zli.a1,zli.a2,zli.a3,zli.pow); printf(请输入学员信息:n); printf(学号:); scanf
13、(%d,&zli.num); printf(姓名:); fflush(stdin); gets(zli.name); printf(三门成绩:n); printf(成绩1:); scanf(%d,&zli.a1); printf(成绩2:); scanf(%d,&zli.a2); printf(成绩3:); scanf(%d,&zli.a3); zli.pow=(zli.a1+zli.a2+zli.a3)/3; printf(学号t姓名t成绩1t成绩2t成绩3t平均成绩n); printf(%dt%st%dt%dt%dt%.2fn,zli.num,zli.name,zli.a1,zli.a2,zli.a3,zli.pow); diaoyong(count); void shanchu /删除信息 int num,i,j; printf(请输入要删除的学员学号:); scanf(%d,&num); for(i=0;icount;i+) if(zli.num=num) for(j=i;jcount;j+) zlj=zlj+1; count-; xianshi; diaoyong(count);
链接地址:https://www.31ppt.com/p-3560106.html