實驗四 排序方法實踐(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->lengthprintf("請輸入卡號:\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.numberkey.number)
tab->r[j+d]=tab->r[j];
j=j-d;
tab->r[j+d]=tab->r[0];
d=d/2;
for(i=0;ilength;i++)
output(tab);
void search(table *tab)
inti=1,j=1;
charmajor[20];
printf("請輸入你要查詢的系名:");
scanf("%s",major);
while(ilength)
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;
資料結構試驗二 鍊錶
第二次資料結構試驗 老師給出的程式比較齊全,直接進行稍微修改就可以實現相乘了,僅僅是個雙迴圈而已,其他地方基本沒有難點了,主要是鍊錶的操作,自己做的比較粗糙,不過暫時功能考慮的還算可以.今天早上一點多完善的,但是想提交的時候,電腦沒電自動關機了.然後到現在提交了.根據給出的一元多項式的加法寫出一元多...
資料結構試驗 二叉排序樹
掌握二叉排序樹的構造 1 構建乙個二叉排序樹 中序遍歷的時候會輸出排序結果 樹中結點資料取自陣列a 10 a 10 2 分別用三種遍歷方法輸出遍歷結果。3 鍵盤輸入乙個值x,要求在生成好的二叉排序樹中查詢這個值x,如果找到,則輸出 找到了 沒有找到,則輸出 沒有找到 遞迴遍歷左右子樹,條件是,左右子...
分支結構試驗
1 if語句的應用 2 switch case語句的應用 3 switch case語句巢狀if語句的應用 4 switch case結構的巢狀應用 5 分析程式 目的 1 掌握c語言邏輯運算和關係運算的規則 2 學會正確地使用關係表示式和邏輯表達掌握if else語句的使用方法 3 掌握if el...