2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)</b></p><p>  11級(jí)電氣信息類專業(yè)</p><p><b>  信息科學(xué)與技術(shù)學(xué)院</b></p><p><b>  2012年9月</b></p><p><b>  設(shè)計(jì)題目(一)</b>

2、</p><p><b>  運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)</b></p><p><b>  任務(wù)</b></p><p>  參加運(yùn)動(dòng)會(huì)有n個(gè)學(xué)校,學(xué)校編號(hào)為1……n。比賽分成m個(gè)男子項(xiàng)目,和w個(gè)女子項(xiàng)目。項(xiàng)目編號(hào)為男子1~m,女子m+1~m+w。不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分

3、分別為:5、3、2;哪些項(xiàng)目取前五名或前三名由學(xué)生自己設(shè)定。(m<=20,n<=20)</p><p><b>  功能要求</b></p><p>  1) 可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績;2) 能統(tǒng)計(jì)各學(xué)??偡郑?) 可以按學(xué)校編號(hào)、學(xué)校總分、男女團(tuán)體總分排序輸出;4) 可以按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況;</p><

4、;p>  5) 可以按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。</p><p><b>  需求分析</b></p><p>  由用戶輸入各校信息,然后根據(jù)其他用戶需要求,查看各個(gè)信息。</p><p><b>  概要設(shè)計(jì)</b></p><p>  typedef struct </p

5、><p><b>  {</b></p><p>  int num;//學(xué)校編號(hào)</p><p>  int score;//學(xué)校總分</p><p>  int *item;//該學(xué)校參加的項(xiàng)目編號(hào)</p><p>  int itemnum;//該學(xué)校參加的項(xiàng)目總數(shù)</p><

6、;p>  int mscore;//男團(tuán)體總分</p><p>  int wscore;//女團(tuán)體總分</p><p><b>  }school;</b></p><p>  typedef struct </p><p><b>  {</b></p><p> 

7、 int num;//參加該項(xiàng)目的學(xué)校數(shù)</p><p>  int topnum;//取前幾名</p><p>  int rank[5];//前幾名的學(xué)校編號(hào)</p><p><b>  }item;</b></p><p>  void init(int n,int m,int w);//初始化函數(shù),用來初始化it

8、和sc結(jié)構(gòu)體數(shù)組其中的數(shù)值;</p><p>  void inputschoolscore(int j,int topnum,int i,int m);//統(tǒng)計(jì)計(jì)算各學(xué)校各項(xiàng)總分</p><p>  void input();//輸入信息函數(shù),輸入各個(gè)項(xiàng)目的信息以及參加學(xué)校的情況</p><p>  void output1();//按學(xué)校編號(hào)輸出</p&g

9、t;<p>  void output2();//按學(xué)校總分輸出</p><p>  void output3();//按學(xué)校男團(tuán)輸出</p><p>  void output4();//按學(xué)校女團(tuán)輸出</p><p>  void output();//輸出函數(shù),具體功能調(diào)用output1,output2,output3,output4完成<

10、/p><p>  void query1();//按學(xué)校編號(hào)查詢</p><p>  void query2();//按項(xiàng)目編號(hào)查詢</p><p>  void query();//查詢信息,具體功能調(diào)用query1,query2完成</p><p><b>  程序調(diào)用關(guān)系如下:</b></p><p

11、><b>  詳細(xì)設(shè)計(jì)</b></p><p>  #include<stdio.h></p><p>  #include<malloc.h></p><p>  #include<string.h></p><p>  #include<conio.h></

12、p><p>  #include<process.h></p><p>  #include<stdlib.h></p><p>  typedef struct </p><p><b>  {</b></p><p>  int num;//學(xué)校編號(hào)</p>

13、<p>  int score;//學(xué)??偡?lt;/p><p>  int *item;//該學(xué)校參加的項(xiàng)目編號(hào)</p><p>  int itemnum;//該學(xué)校參加的項(xiàng)目總數(shù)</p><p>  int mscore;//男團(tuán)體總分</p><p>  int wscore;//女團(tuán)體總分</p><p&g

14、t;<b>  }school;</b></p><p>  school *sc;//使用全局指針變量動(dòng)態(tài)分配內(nèi)存儲(chǔ)存學(xué)校信息</p><p>  typedef struct </p><p><b>  {</b></p><p>  int num;//參加該項(xiàng)目的學(xué)校數(shù)</p>

15、<p>  int topnum;//取前幾名</p><p>  int rank[5];//前幾名的學(xué)校編號(hào)</p><p><b>  }item;</b></p><p>  item *it;//使用全局指針變量動(dòng)態(tài)分配內(nèi)存儲(chǔ)存項(xiàng)目信息</p><p>  int n,m,w,flag2=0;//

16、n為學(xué)校數(shù)目,m為男子項(xiàng)目數(shù)目,w為女子項(xiàng)目數(shù)目,flag2為確定是否已經(jīng)輸入信息</p><p>  void init(int n,int m,int w);//初始化函數(shù),用來初始化it和sc結(jié)構(gòu)體數(shù)組其中的數(shù)值;</p><p>  void inputschoolscore(int j,int topnum,int i,int m);//統(tǒng)計(jì)計(jì)算各學(xué)校各項(xiàng)總分</p>

17、<p>  void input();//輸入信息函數(shù),輸入各個(gè)項(xiàng)目的信息以及參加學(xué)校的情況</p><p>  void output1();//按學(xué)校編號(hào)輸出</p><p>  void output2();//按學(xué)??偡州敵?lt;/p><p>  void output3();//按學(xué)校男團(tuán)輸出</p><p>  voi

18、d output4();//按學(xué)校女團(tuán)輸出</p><p>  void output();//輸出函數(shù),具體功能調(diào)用output1,output2,output3,output4完成</p><p>  void query1();//按學(xué)校編號(hào)查詢</p><p>  void query2();//按項(xiàng)目編號(hào)查詢</p><p>  v

19、oid query();//查詢信息,具體功能調(diào)用query1,query2完成</p><p>  //以下三個(gè)函數(shù)分別是qsort函數(shù)的參數(shù),qsort是庫中的排序函數(shù),其功能是快速排序</p><p>  int compare1(const void *a,const void *b)//按總分排序 </p><p><b>  {</b&g

20、t;</p><p>  return ((school*)b)->score-((school*)a)->score;</p><p><b>  }</b></p><p>  int compare2(const void *a,const void *b)//按男團(tuán)總分排序 </p><p><

21、b>  {</b></p><p>  return ((school*)b)->mscore-((school*)a)->mscore;</p><p><b>  }</b></p><p>  int compare3(const void *a,const void *b)//按女團(tuán)總分排序 </p&

22、gt;<p><b>  {</b></p><p>  return ((school*)b)->wscore-((school*)a)->wscore;</p><p><b>  }</b></p><p>  int main()</p><p><b>

23、  {</b></p><p>  int flag1;//flag1功能選擇</p><p>  printf("============歡迎使用============\n\n\n");</p><p><b>  while(1)</b></p><p><b>  {&l

24、t;/b></p><p>  printf("**************運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)*************\n\n\n");</p><p>  printf(" 1.輸入信息\n");</p><p>  printf(" 2.輸出信息\n&q

25、uot;);</p><p>  printf(" 3.查詢信息\n");</p><p>  printf(" 4.退出系統(tǒng)\n");</p><p>  scanf("%d",&flag1);</p><p>  swi

26、tch (flag1)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p><b>  input();</b></p><p><b>  break;</b></p><p&g

27、t;<b>  case 2:</b></p><p><b>  if(flag2)</b></p><p><b>  output();</b></p><p><b>  else</b></p><p>  printf("還沒有輸入信

28、息!請(qǐng)先輸入信息!\n\n");</p><p><b>  break;</b></p><p><b>  case 3:</b></p><p><b>  if(flag2)</b></p><p><b>  query();</b>&

29、lt;/p><p><b>  else</b></p><p>  printf("還沒有輸入信息!請(qǐng)先輸入信息!\n\n");</p><p><b>  break;</b></p><p><b>  case 4:</b></p><

30、;p>  printf("謝謝使用!\n");</p><p><b>  exit(0);</b></p><p><b>  default:</b></p><p>  printf("沒有相應(yīng)功能,請(qǐng)重新輸入!\n");</p><p><

31、;b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void input()</p><p><b>  {</b></p><p><b>  flag2

32、=1;</b></p><p>  int i,j,num,k=1;</p><p>  printf("請(qǐng)輸入學(xué)校個(gè)數(shù):\n");</p><p>  scanf("%d",&n);</p><p>  sc=(school*)malloc((n+1)*sizeof(school)

33、);</p><p>  printf("請(qǐng)輸入男子項(xiàng)目和女子項(xiàng)目的個(gè)數(shù):\n");</p><p>  scanf("%d%d",&m,&w);</p><p>  it=(item*)malloc((m+w+1)*sizeof(item));</p><p>  init(n,m,w

34、);</p><p>  for(i=1;i<=w+m;++i)</p><p><b>  {</b></p><p>  printf("項(xiàng)目%d:\n",i);</p><p>  printf("取前幾名(3或者5):\n");</p><p>

35、;  scanf("%d",&it[i].topnum);</p><p>  for(j=1;j<=it[i].topnum&&j<=n;++j)</p><p><b>  {</b></p><p>  printf("第%d名的學(xué)校編號(hào):",j);</p&

36、gt;<p>  scanf("%d",&it[i].rank[j]);</p><p>  it[i].num++;</p><p>  sc[it[i].rank[j]].item[++sc[it[i].rank[j]].itemnum]=i;</p><p>  inputschoolscore(j,it[i].top

37、num, i, m);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void init(int n,int m,int w)//初始化各個(gè)儲(chǔ)存數(shù)組</p><p&

38、gt;<b>  {</b></p><p><b>  int i;</b></p><p>  for(i=1;i<=n;++i)</p><p><b>  {</b></p><p>  sc[i].itemnum=0;</p><p> 

39、 sc[i].num=i;</p><p>  sc[i].mscore=0;</p><p>  sc[i].score=0;</p><p>  sc[i].wscore=0;</p><p>  sc[i].item=(int *)malloc((w+m+1)*sizeof(int));</p><p><

40、b>  }</b></p><p>  for(i=1;i<=m+w;++i)</p><p>  it[i].num=0;</p><p><b>  }</b></p><p>  void inputschoolscore(int j,int topnum,int i,int m)//保存輸

41、入的信息</p><p><b>  {</b></p><p>  if(topnum==3)</p><p><b>  {</b></p><p>  switch (j)</p><p><b>  {</b></p><p&

42、gt;<b>  case 1:</b></p><p><b>  if(i<=m)</b></p><p>  sc[it[i].rank[j]].mscore+=5;</p><p><b>  else</b></p><p>  sc[it[i].rank[j]

43、].wscore+=5;</p><p>  sc[it[i].rank[j]].score+=5;</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p><b>  if(i<=m)</b></p&g

44、t;<p>  sc[it[i].rank[j]].mscore+=3;</p><p><b>  else</b></p><p>  sc[it[i].rank[j]].wscore+=3;</p><p>  sc[it[i].rank[j]].score+=3;</p><p><b>

45、  break;</b></p><p><b>  case 3:</b></p><p><b>  if(i<=m)</b></p><p>  sc[it[i].rank[j]].mscore+=2;</p><p><b>  else</b><

46、;/p><p>  sc[it[i].rank[j]].wscore+=2;</p><p>  sc[it[i].rank[j]].score+=2;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b> 

47、 }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  switch (j)</p><p><b>  {</b></p><p><b>  case 1:<

48、/b></p><p><b>  if(i<=m)</b></p><p>  sc[it[i].rank[j]].mscore+=7;</p><p><b>  else</b></p><p>  sc[it[i].rank[j]].wscore+=7;</p>&

49、lt;p>  sc[it[i].rank[j]].score+=7;</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p><b>  if(i<=m)</b></p><p>  sc[it[i].r

50、ank[j]].mscore+=5;</p><p><b>  else</b></p><p>  sc[it[i].rank[j]].wscore+=5;</p><p>  sc[it[i].rank[j]].score+=5;</p><p><b>  break;</b></p&

51、gt;<p><b>  case 3:</b></p><p><b>  if(i<=m)</b></p><p>  sc[it[i].rank[j]].mscore+=3;</p><p><b>  else</b></p><p>  sc[it

52、[i].rank[j]].wscore+=3;</p><p>  sc[it[i].rank[j]].score+=3;</p><p><b>  break;</b></p><p><b>  case 4:</b></p><p><b>  if(i<=m)</b&

53、gt;</p><p>  sc[it[i].rank[j]].mscore+=2;</p><p><b>  else</b></p><p>  sc[it[i].rank[j]].wscore+=2;</p><p>  sc[it[i].rank[j]].score+=2;</p><p&g

54、t;<b>  break;</b></p><p><b>  case 5:</b></p><p><b>  if(i<=m)</b></p><p>  sc[it[i].rank[j]].mscore+=1;</p><p><b>  else&l

55、t;/b></p><p>  sc[it[i].rank[j]].wscore+=1;</p><p>  sc[it[i].rank[j]].score+=1;</p><p><b>  break;</b></p><p><b>  }</b></p><p>

56、;<b>  }</b></p><p><b>  }</b></p><p>  void output()</p><p><b>  {</b></p><p><b>  int flag;</b></p><p><

57、;b>  while(1)</b></p><p><b>  {</b></p><p>  printf("輸出信息:\n");</p><p>  printf("1.按學(xué)校編號(hào)輸出\n");</p><p>  printf("2.按學(xué)??偡州敵?/p>

58、\n");</p><p>  printf("3.按男團(tuán)總分輸出\n");</p><p>  printf("4.按女團(tuán)總分輸出\n");</p><p>  printf("0.返回主菜單\n");</p><p>  scanf("%d",&am

59、p;flag);</p><p>  switch (flag)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  output1();</p><p><b>  break;</b><

60、;/p><p><b>  case 2:</b></p><p>  output2();</p><p><b>  break;</b></p><p><b>  case 3:</b></p><p>  output3();</p>

61、<p><b>  break;</b></p><p><b>  case 4:</b></p><p>  output4();</p><p><b>  break;</b></p><p><b>  case 0:</b><

62、/p><p>  printf("\n\n\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b

63、></p><p>  void output1()</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for(i=1;i<=n;++i)</p><p><b>  {</b>&l

64、t;/p><p>  printf("學(xué)校%d:\n",i);</p><p>  printf("學(xué)??偡?%d\n",sc[i].score);</p><p>  printf("男團(tuán)總分:%d\n",sc[i].mscore);</p><p>  printf("女團(tuán)

65、總分:%d\n\n\n",sc[i].wscore);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void output2()</p><p><b>  {</b></p><p>&

66、lt;b>  int i;</b></p><p>  qsort(sc+1,n,sizeof(school),compare1);</p><p>  for(i=1;i<=n;++i)</p><p><b>  {</b></p><p>  printf("學(xué)校%d:\n&quo

67、t;,sc[i].num);</p><p>  printf("學(xué)校總分:%d\n",sc[i].score);</p><p>  printf("男團(tuán)總分:%d\n",sc[i].mscore);</p><p>  printf("女團(tuán)總分:%d\n\n\n",sc[i].wscore);</

68、p><p><b>  }</b></p><p><b>  }</b></p><p>  void output3()</p><p><b>  {</b></p><p><b>  int i;</b></p>

69、<p>  qsort(sc+1,n,sizeof(school),compare2);</p><p>  for(i=1;i<=n;++i)</p><p><b>  {</b></p><p>  printf("學(xué)校%d:\n",sc[i].num);</p><p>  

70、printf("學(xué)??偡?%d\n",sc[i].score);</p><p>  printf("男團(tuán)總分:%d\n",sc[i].mscore);</p><p>  printf("女團(tuán)總分:%d\n\n\n",sc[i].wscore);</p><p><b>  }</b>

71、;</p><p><b>  }</b></p><p>  void output4()</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  qsort(sc+1,n,sizeof(schoo

72、l),compare3);</p><p>  for(i=1;i<=n;++i)</p><p><b>  {</b></p><p>  printf("學(xué)校%d:\n",sc[i].num);</p><p>  printf("學(xué)??偡?%d\n",sc[i].sc

73、ore);</p><p>  printf("男團(tuán)總分:%d\n",sc[i].mscore);</p><p>  printf("女團(tuán)總分:%d\n\n\n",sc[i].wscore);</p><p><b>  }</b></p><p><b>  }<

74、;/b></p><p>  void query()</p><p><b>  {</b></p><p><b>  int flag;</b></p><p><b>  while(1)</b></p><p><b>  {&

75、lt;/b></p><p>  printf("1.按學(xué)校編號(hào)查詢\n");</p><p>  printf("2.按項(xiàng)目編號(hào)查詢\n");</p><p>  printf("0.返回主菜單\n");</p><p>  scanf("%d",&

76、;flag);</p><p>  printf("\n\n\n");</p><p>  switch (flag)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p><b>  que

77、ry1();</b></p><p><b>  break;</b></p><p><b>  case 2:</b></p><p><b>  query2();</b></p><p><b>  break;</b></p&g

78、t;<p><b>  case 0:</b></p><p>  printf("\n\n\n");</p><p><b>  return ;</b></p><p><b>  }</b></p><p><b>  }<

79、;/b></p><p><b>  }</b></p><p>  void query1()</p><p><b>  {</b></p><p>  int num,flag,i,j;</p><p><b>  while(1)</b>&

80、lt;/p><p><b>  {</b></p><p>  printf("1.輸入學(xué)校編號(hào)\n");</p><p>  printf("2.返回上一級(jí)\n");</p><p>  scanf("%d",&flag);</p><

81、p>  switch (flag)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  printf("請(qǐng)輸入學(xué)校編號(hào):\n");</p><p>  scanf("%d",&num);

82、</p><p>  if(num>n||n<=0)</p><p><b>  {</b></p><p>  printf("對(duì)不起!沒有該學(xué)校!\n\n");</p><p><b>  }</b></p><p><b>  

83、else</b></p><p><b>  {</b></p><p>  for(i=1;i<=n;++i)</p><p>  if(sc[i].num==num)</p><p><b>  {</b></p><p>  printf("

84、學(xué)校編號(hào):%d\n",num);</p><p>  printf("該學(xué)校分別參加了:\n");</p><p>  for(j=1;j<=sc[i].itemnum;++j)</p><p><b>  {</b></p><p>  printf("項(xiàng)目%d:\n&qu

85、ot;,sc[i].item[j]);</p><p>  printf("該項(xiàng)目取前%d\n\n",it[sc[i].item[j]].topnum);</p><p><b>  }</b></p><p>  printf("\n\n\n");</p><p><b&g

86、t;  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 2:</b></p><p

87、>  printf("\n\n\n");</p><p><b>  return ;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p&g

88、t;<p>  void query2()</p><p><b>  {</b></p><p>  int num,flag,i;</p><p><b>  while(1)</b></p><p><b>  {</b></p><p&

89、gt;  printf("1.輸入項(xiàng)目編號(hào)\n");</p><p>  printf("2.返回上一級(jí)\n");</p><p>  scanf("%d",&flag);</p><p>  switch (flag)</p><p><b>  {</b&

90、gt;</p><p><b>  case 1:</b></p><p>  printf("請(qǐng)輸入項(xiàng)目編號(hào):\n");</p><p>  scanf("%d",&num);</p><p>  if(num<=0||num>m+w)</p>

91、<p>  printf("對(duì)不起!沒有該項(xiàng)目!\n\n");</p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("參加該項(xiàng)目的學(xué)校有:\n");</p><p>  for(i=

92、1;i<=it[num].num;++i)</p><p>  printf("%d ",it[num].rank[i]);</p><p>  printf("\n\n\n");</p><p><b>  }</b></p><p><b>  case 2:&

93、lt;/b></p><p>  printf("\n\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b&g

94、t;  }</b></p><p><b>  調(diào)試分析</b></p><p>  由于信息是動(dòng)態(tài)數(shù)組的形式儲(chǔ)存的,當(dāng)輸入的學(xué)校的個(gè)數(shù)小于3時(shí),輸出信息時(shí)會(huì)出錯(cuò),所以在結(jié)構(gòu)體中加入了num成員,表示參加該項(xiàng)目的學(xué)校的數(shù)目,這樣就解決問題了。</p><p>  在查詢時(shí),由于輸出信息時(shí),對(duì)數(shù)組的元素排序了,下標(biāo)已經(jīng)不再表示學(xué)校的編

95、號(hào),所以在結(jié)構(gòu)體中加入num成員,表示該學(xué)校的編號(hào),這樣在查詢時(shí)就不會(huì)出錯(cuò)了。</p><p><b>  用戶手冊(cè)</b></p><p>  1. 演示程序的運(yùn)行環(huán)境為Windows 2007系統(tǒng),Microsoft Visual Studio 6.0中的Microsoft Visual C++ 6.0中運(yùn)行。執(zhí)行文件為:運(yùn)動(dòng)會(huì).exe。</p>&

96、lt;p>  2.進(jìn)入演示程序后即顯示DOS形式的界面:</p><p>  選擇相應(yīng)功能后,系統(tǒng)會(huì)進(jìn)入相應(yīng)功能:</p><p><b>  選擇輸入信息后:</b></p><p><b>  選擇輸出信息后:</b></p><p>  根據(jù)相應(yīng)提示選擇相應(yīng)子功能。</p>

97、<p>  比如按學(xué)校編號(hào)輸出:</p><p>  其他功能類似,此處不再贅述。</p><p><b>  測(cè)試結(jié)果</b></p><p><b>  輸入信息:</b></p><p> ?。?)輸出信息,選擇按男團(tuán)總分輸出。</p><p>  選擇查詢

98、信息,按項(xiàng)目編號(hào)查詢</p><p><b>  退出系統(tǒng)</b></p><p><b>  設(shè)計(jì)題目(二)</b></p><p><b>  哈希表查找的設(shè)計(jì)</b></p><p><b>  任務(wù)</b></p><p>

99、  設(shè)哈希表長為20,用除留余數(shù)法構(gòu)造一個(gè)哈希函數(shù),以開放定址法中的線性探測(cè)再散列法作為解決沖突的方法,編程實(shí)現(xiàn)哈希表查找、插入和建立算法。</p><p><b>  功能要求</b></p><p>  能夠建立hash表。</p><p>  對(duì)于一個(gè)整數(shù),能夠?qū)崿F(xiàn)插入。</p><p>  對(duì)于一個(gè)整數(shù),能夠?qū)崿F(xiàn)

100、查找。</p><p><b>  需求分析</b></p><p>  本系統(tǒng)中,由用戶選擇相應(yīng)功能,可以插入、查找任意整數(shù),直至表滿。</p><p><b>  概要設(shè)計(jì)</b></p><p>  typedef struct </p><p><b>  

101、{</b></p><p>  int e;//元素值</p><p>  int flag;//標(biāo)志位</p><p><b>  }hash;</b></p><p>  void insert();//插入函數(shù)</p><p>  void serch();//查詢函數(shù)</

102、p><p><b>  程序調(diào)用關(guān)系如下:</b></p><p><b>  詳細(xì)設(shè)計(jì)</b></p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  typedef stru

103、ct </p><p><b>  {</b></p><p>  int e;//元素值</p><p>  int flag;//標(biāo)志位</p><p><b>  }hash;</b></p><p>  int cnt;//當(dāng)前元素個(gè)數(shù)</p><

104、p>  hash a[20];//哈希表</p><p>  void insert();//插入函數(shù)</p><p>  void serch();//查詢函數(shù)</p><p>  int main()</p><p><b>  {</b></p><p><b>  int

105、i;</b></p><p>  for(i=0;i<20;++i)//初始化標(biāo)志位</p><p>  a[i].flag=0;</p><p>  int flag;//功能選擇</p><p>  printf("*************歡迎使用**********\n\n");</p>

106、;<p><b>  while(1)</b></p><p><b>  {</b></p><p>  printf("1.插入元素\n");</p><p>  printf("2.查找元素\n");</p><p>  printf(&q

107、uot;3.退出系統(tǒng)\n");</p><p>  scanf("%d",&flag);</p><p>  switch(flag)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p&

108、gt;<b>  insert();</b></p><p><b>  break;</b></p><p><b>  case 2:</b></p><p><b>  serch();</b></p><p><b>  break;&l

109、t;/b></p><p><b>  case 3:</b></p><p>  printf("謝謝使用!\n\n");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p

110、><b>  }</b></p><p><b>  }</b></p><p>  void insert()</p><p><b>  {</b></p><p>  int element,e;//輸入元素值</p><p>  int k

111、ey;//hash值</p><p><b>  int i;</b></p><p>  if(cnt>20)</p><p>  printf("表已滿!無法插入!\n\n");</p><p><b>  else</b></p><p>&l

112、t;b>  {</b></p><p>  printf("要插入的元素:\n");</p><p>  scanf("%d",&e);</p><p><b>  if(e<0)</b></p><p>  element=-e;</p>

113、;<p>  key=element%13;//計(jì)算hash值</p><p><b>  i=key;</b></p><p>  if(a[i].flag==0)</p><p><b>  {</b></p><p><b>  a[i].e=e;</b>&

114、lt;/p><p><b>  ++cnt;</b></p><p>  a[i].flag=1;</p><p>  printf("\n\n");</p><p><b>  }</b></p><p><b>  else</b>&

115、lt;/p><p><b>  {</b></p><p>  while(i%20!=key&&a[i].flag&&a[i].e!=e)</p><p><b>  ++i;</b></p><p>  if(a[i].e==e)</p><p&g

116、t;  printf("該值已存在!\n\n");</p><p>  else if(i==key)</p><p>  printf("表已滿!無法插入!\n\n");</p><p><b>  else</b></p><p><b>  {</b>&

117、lt;/p><p><b>  a[i].e=e;</b></p><p><b>  cnt++;</b></p><p>  a[i].flag=1;</p><p>  printf("\n\n");</p><p><b>  }</b

118、></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void serch()</p><p><b>  {</b></p>

119、;<p>  int element,e;//輸入元素值</p><p>  int key;//hash值</p><p><b>  int i;</b></p><p>  printf("要查找的元素:\n");</p><p>  scanf("%d",&a

120、mp;e);</p><p><b>  if(e<0)</b></p><p>  element=-e;</p><p>  key=element%13;//計(jì)算hash值</p><p><b>  i=key;</b></p><p>  if(a[i].fl

121、ag==0)</p><p><b>  {</b></p><p>  printf("該元素不存在\n\n");</p><p><b>  }</b></p><p><b>  else</b></p><p><b&g

122、t;  {</b></p><p>  if(a[i].e==e)</p><p>  printf("該值存在!\n\n");</p><p><b>  else</b></p><p><b>  {</b></p><p><b&

123、gt;  ++i;</b></p><p>  while(a[i].flag&&a[i].e!=e&&i!=key)</p><p><b>  ++i;</b></p><p>  if(a[i].flag==0)</p><p>  printf("該值不存在!

124、\n\n");</p><p>  else if(a[i].e==e)</p><p>  printf("該值存在!\n\n");</p><p>  else if(i==key)</p><p>  printf("該值不存在!\n\n");</p><p>&

125、lt;b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  調(diào)試分析</b></p><p>  對(duì)于插入元素時(shí),無法確定位置是否已經(jīng)有元素,加入flag成員,作為標(biāo)記,這樣就解決問題了

126、。</p><p>  輸入的整數(shù)的可能為負(fù),所以先判斷是否為負(fù),如果為負(fù),必須先把他變成正數(shù)。</p><p><b>  用戶手冊(cè)</b></p><p>  演示程序的運(yùn)行環(huán)境為Windows 2007系統(tǒng),Microsoft Visual Studio 6.0中的Microsoft Visual C++ 6.0中運(yùn)行。執(zhí)行文件為:has

127、h.exe</p><p>  (2)進(jìn)入演示程序后即顯示DOS形式的界面:</p><p>  選擇相應(yīng)功能進(jìn)入子系統(tǒng),根據(jù)提示可以完成相應(yīng)操作。</p><p><b>  測(cè)試結(jié)果</b></p><p><b>  選擇1.插入元素:</b></p><p><

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論