赞
踩
实验四 排序方法实践(2学时)
1、实验目的
通过本实验掌握排序的基本算法和过程以及查找的基本方法和过程。
2、实验内容
设计一个排序和查找系统。能够实现对给定的一组学生的借书证信息(如:卡号、姓名、系别、班号等)进行排序和查找。
1)按照卡号顺序进行排序;
2)能够实现查找某个系的所有的借书卡号并输出。
3、实验要求
(1)建立关于借书证信息结点的结构体;
(2)定义借书证信息的记录并录入基本信息;
(3)写出用某种排序算法(如冒泡排序)按关键字对记录进行排序的算法函数;
(4)对借书证信息的记录按系名建立索引查找结构;
(5)输入某个要查找的系名,用索引查找方法查找并输出该系的所有借书证信息。
源码
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
# define MAXSIZE 100
struct student
{
intnumber;//卡号
charname[8];//名字
charmajor[20];//专业
intclassnumber;//班号
};
typedef struct studentlist
{
structstudent key;
intlength;
intr[MAXSIZE];
}table;
void input(table *tab)
{
chars='Y';
tab->length=1;
while((s=='Y'||s=='y')&&tab->length<MAXSIZE)
{
printf("请输入卡号:\n");
scanf("%d",&tab->key.number);
printf("请输入姓名:\n");
scanf("%s",tab->key.name);
printf("请输入专业:\n");
scanf("%s",tab->key.major);
printf("请输入班号:\n");
scanf("%d",&tab->key.classnumber);
printf("请问是否继续输入Y/N");
getchar();
scanf("%c",&s);
tab->length++;
}
}
void output2(table *tab)
{
printf("卡号:%d\n",tab->key.number);
printf("姓名:%s\n",tab->key.name);
printf("专业:%s\n",tab->key.major);
printf("班号:%d\n",tab->key.classnumber);
}
void output(table *tab)
{
printf("卡号:%d\n",tab->key.number);
printf("姓名:%s\n",tab->key.name);
printf("专业:%s\n",tab->key.major);
printf("班号:%d\n",tab->key.classnumber);
}
void shellinsertsort(table *tab)
{
inti,j,d;
d=tab->length/2;
while(d>=1)
{
for(i=d+1;i<=tab->length;i++)
{
tab->r[0]=tab->r[i];
j=i-d;
while(j>0&&tab->key.number<tab->key.number)
{
tab->r[j+d]=tab->r[j];
j=j-d;
}
tab->r[j+d]=tab->r[0];
}
d=d/2;
}
for(i=0;i<tab->length;i++)
{
output(tab);
}
}
void search(table *tab)
{
inti=1,j=1;
charmajor[20];
printf("请输入你要查找的系名:");
scanf("%s",major);
while(i<tab->length)
{
if(!strcmp(tab->key.major,major))
{
output(tab);
j=0;
}
i++;
}
if(j)
printf("不存在!!!");
}
int main()
{
intx,select=1;
tabletabl;
while(select)
{
printf("\t\t\t\t------------------\n");
printf("\t\t\t\t|1录入信息 |\n");
printf("\t\t\t\t|2 输出 |\n");
printf("\t\t\t\t|3 排序输出 |\n");
printf("\t\t\t\t|4 查找 |\n");
printf("\t\t\t\t|5 退出 |\n");
printf("\t\t\t\t------------------\n");
printf("请输入选择");
scanf("%d",&x);
switch(x)
{
case1:input(&tabl);break;
case2:output2(&tabl);break;
case3:shellinsertsort(&tabl);break;
case4:search(&tabl);break;
case5:select=0;printf("退出成功");break;
default:printf("请重新输入!!!");
}
}
return0;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。