c++課程設(shè)計(jì)石頭剪刀布_第1頁(yè)
已閱讀1頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  《C高級(jí)語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告</p><p> ?。?2014 /2015 學(xué)年 第 1 學(xué)期)</p><p>  學(xué)生姓名: </p><p>  學(xué)生專(zhuān)業(yè): </p><p>  學(xué)生班級(jí): </p><p>  學(xué)

2、生學(xué)號(hào): </p><p>  指導(dǎo)教師: </p><p>  2015年 1 月 9 日</p><p>  計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院</p><p><b>  課程設(shè)計(jì)任務(wù)書(shū)</b></p><p>  計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院</p>

3、<p><b>  課程設(shè)計(jì)成績(jī)?cè)u(píng)審表</b></p><p><b>  目錄</b></p><p>  設(shè)計(jì)問(wèn)題描述與分析..............................1</p><p>  1.1問(wèn)題描述...........................................

4、......1</p><p>  1.2 系統(tǒng)功能分析..............................................1</p><p>  第二章.算法設(shè)計(jì)與流程圖..................................2</p><p>  2.1算法設(shè)計(jì).................................

5、...............2</p><p>  2.2流程圖...................................................5</p><p>  第三章.程序設(shè)計(jì)編碼與測(cè)試................................7</p><p>  3.1程序代碼........................

6、..........................7</p><p>  3.2測(cè)試......................................................14</p><p>  第四章.設(shè)計(jì)過(guò)程總結(jié)或分析...............................19</p><p>  第一章.設(shè)計(jì)問(wèn)題描述與分析<

7、/p><p>  1 .問(wèn)題描述;  </p><p>  在游戲中,玩家們用手表示石頭、剪刀或布中的一個(gè),出拳頭表示石頭,伸出兩根手指表示剪刀,伸手表示布,玩家和計(jì)算機(jī)做出他們的選擇,如果所作的選擇是一樣的,則表示平局,否則就按如下規(guī)則決定勝負(fù):(1)石頭砸壞剪刀;(2)剪刀剪碎布;(3)布覆蓋石頭。 </p><p>  編寫(xiě)程序?qū)崿F(xiàn)計(jì)

8、算機(jī)與人進(jìn)行游戲。</p><p>  2. 系統(tǒng)功能分析: </p><p>  游戲中可能出現(xiàn)的選擇情況都可以估計(jì)到,因此,定義一個(gè)枚舉類(lèi)型把游戲中可能出現(xiàn)的選擇項(xiàng)都列出來(lái),包括cloth(布),hammer(錘子),scissors(剪刀),game(游戲結(jié)果),help(幫助),instructions(游戲方法指導(dǎo)),quit(退出游戲)。 </p>

9、;<p>  定義一個(gè)類(lèi)Game,把需要讓外界調(diào)用的成員函數(shù)指定為公用的,類(lèi)中的公用部分包含玩家選擇命令(select( ))、機(jī)器選擇(mach( ))、提示游戲規(guī)(gamehelp( ))、判斷輸贏(Win_lose( ))、游戲結(jié)果(gameshow( ))、幫助(gamehelp( ))游戲說(shuō)明(instruct( )) 每局游戲結(jié)果(

10、solution( ))七個(gè)成員函數(shù),另外有一個(gè)用來(lái)賦初值構(gòu)造函數(shù)(Game());而為了保證類(lèi)的封裝性和信息的隱蔽,把數(shù)據(jù)成員指定為私有的。</p><p>  創(chuàng)建游戲類(lèi)對(duì)象g,調(diào)用對(duì)象g的成員函數(shù)solution( ),開(kāi)始游戲。</p><p>  第二章.算法設(shè)計(jì)與流程圖</p><p><b>  1.算法設(shè)計(jì):</b

11、></p><p>  (1)在頭文件head.h中定義枚舉類(lèi)型enum  c_h_s{cloth,hammer,scissors,game ,help,instructions,quit}來(lái)列出游戲選擇項(xiàng),同時(shí)定義一個(gè)類(lèi)Game把需要讓外界調(diào)用的成員函數(shù)select( )、mach( )、gamehelp( )、Win_lose( &#

12、160;)、gameshow(   )、solution( )、instruct( )、Game()指定為公用的, 為了保證類(lèi)的封裝性和信息的隱蔽, 把數(shù)據(jù)成員int  win、int  lose、int  tie 、enum c_h_s player、enum c_h

13、_s machine指定為私有的。 </p><p> ?。?)在源文件head.cpp中定義構(gòu)造函數(shù)Game(),對(duì)贏、輸、平局的數(shù)據(jù)成員初始化為0。 </p><p> ?。?)在源文件head.cpp中定義成員函數(shù)select(),獲取玩家選擇一個(gè)命令(即在石頭、剪刀、布、游戲結(jié)果、游戲幫助、游戲介紹、退出中做出選擇),并將選擇的結(jié)果返回。 &

14、#160; </p><p>  (4)在源文件head.cpp中定義成員函數(shù)mach(),實(shí)現(xiàn)機(jī)器對(duì)錘子、剪刀或布選擇,這中間用到隨機(jī)函數(shù),利用到time.h和stdlib.h頭文件,以及關(guān)鍵字rand、srand。 </p><p> ?。?)在源文件head.cpp中定義成員函數(shù)gameshow(int win,int lose,int

15、0;tie ),輸出游戲結(jié)果,包含有贏、輸、平局以及游戲總次數(shù)的情況。 </p><p> ?。?)在源文件head.cpp中定義成員函數(shù)gamehelp( ),輸出各字符所表示的意義,以幫助玩家進(jìn)行選擇。 </p><p> ?。?)在源文件head.cpp中定義成員函數(shù)成員函數(shù)win_lose(enum c_h_s playe

16、r,enum c_h_s machine ),讀取玩家和電腦的選擇,根據(jù)游戲規(guī)則判斷玩家贏、輸或平局,返回判斷結(jié)果。 </p><p>  (8)在源文件head.cpp中定義成員函數(shù)instruct( ),對(duì)游戲規(guī)則進(jìn)行說(shuō)明。最后定義成員函數(shù)solution( ),統(tǒng)計(jì)游戲從開(kāi)始運(yùn)行到現(xiàn)在運(yùn)行的結(jié)果,并輸出每局的游戲結(jié)果。 </p>

17、;<p> ?。?)在源文件game.cpp中,定義主函數(shù)。在主函數(shù)中,創(chuàng)建游戲類(lèi)對(duì)象g,調(diào)用對(duì)象g的成員函數(shù)solution( ),開(kāi)始游戲。</p><p><b>  2.流程圖:</b></p><p><b>  2.1功能模塊圖:</b></p><p><b>  圖2.1

18、功能模塊</b></p><p>  2.2用戶(hù)選擇模塊:</p><p><b>  圖2.2用戶(hù)選擇圖</b></p><p>  2.3機(jī)器選擇模塊:</p><p>  圖2.3 機(jī)器選擇圖</p><p><b>  2.4判斷模塊:</b></p

19、><p><b>  圖2.4 判斷模塊</b></p><p>  2.5顯示模塊: &

20、lt;/p><p><b>  圖2.5顯示模塊圖</b></p><p>  第三章.程序設(shè)計(jì)編碼與測(cè)試</p><p><b>  3.1程序代碼:</b></p><p><b>  //head.h</b></p><p>  enum c_h_s

21、</p><p><b>  {</b></p><p>  cloth,hammer,scissors,game,help,instructions,quit</p><p><b>  };</b></p><p>  class Game //Game類(lèi)</p><p>

22、;<b>  {</b></p><p><b>  public:</b></p><p>  Game(); //構(gòu)造函數(shù)</p><p>  enum c_h_s select( ); //選擇命令函數(shù)</p><p>  enum c_h_s mach( ); //機(jī)器選擇函

23、數(shù)</p><p>  void gamehelp( );//幫助函數(shù)</p><p>  int Win_lose(enum c_h_s player,enum c_h_s machine);//判斷輸贏函數(shù)</p><p>  void gameshow(int,int,int );//游戲結(jié)果函數(shù)</p><p>  void solu

24、tion( );//游戲結(jié)果函數(shù)</p><p>  void instruct( );//游戲說(shuō)明函數(shù)</p><p><b>  private:</b></p><p>  int win; // 贏的次數(shù)</p><p>  int lose; //輸?shù)拇螖?shù)</p&

25、gt;<p>  int tie; //平局次數(shù)</p><p>  enum c_h_s player; //玩家的選擇</p><p>  enum c_h_s machine; //機(jī)器的選擇</p><p><b>  };</b></p><p>  //head.cpp&

26、lt;/p><p>  #include<iostream.h></p><p>  #include<stdlib.h></p><p>  #include<time.h></p><p>  Game::Game()</p><p><b>  {</b>&l

27、t;/p><p><b>  win=0;</b></p><p><b>  lose=0;</b></p><p><b>  tie=0;</b></p><p><b>  }</b></p><p>  enum c_h_s

28、Game::select()</p><p><b>  {</b></p><p><b>  char c;</b></p><p>  enum c_h_s p;</p><p>  cout<<"請(qǐng)選擇"<<'c'<<&

29、#39;,'<<'h'<<"或"<<'s'<<":";</p><p><b>  cin>>c;</b></p><p><b>  switch(c)</b></p><p>&l

30、t;b>  {</b></p><p>  case 'c': p=cloth;</p><p>  cout<<"玩家的選擇:\n";</p><p>  cout<<" @@@@@ @ @@ \n";</p><p>  cou

31、t<<" @ @ @ @@ \n";</p><p>  cout<<" @ @ @ @@ \n";</p><p>  cout<<" @@@@@ @ @@ \n";</p><p>  cout<<&quo

32、t; \n"; break;</p><p>  case 'h': p=hammer;</p><p>  cout<<"玩家的選擇:\n";</p><p>  cout<<" @@@@@ \n";</p><p>

33、  cout<<" @ @ @ \n";</p><p>  cout<<" @ @ @ \n";</p><p>  cout<<" @@@@@ \n"; </p><p><b>  break;</b>

34、</p><p>  case 's': p=scissors;</p><p>  cout<<"玩家的選擇:\n";</p><p>  cout<<" @@@@@ @@ \n";</p><p>  cout<<"

35、 @ @ @ @ \n";</p><p>  cout<<" @ @ @ @ \n";</p><p>  cout<<" @@@@@ @@ \n"; </p><p><b>  break;</b>&

36、lt;/p><p>  case 'g': p=game;break;</p><p>  case 'p': p=help;break;</p><p>  case 'i': p=instructions;break;</p><p>  case 'q': p=quit;bre

37、ak;</p><p>  default: cout<<"輸入有誤,請(qǐng)重新輸入:"<<endl;</p><p><b>  }</b></p><p><b>  return p;</b></p><p><b>  }</b>

38、</p><p>  enum c_h_s Game::mach() //機(jī)器選則結(jié)果</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  srand((unsigned)time(NULL));</p><p>

39、<b>  8</b></p><p>  //函數(shù)rand()是真正的隨機(jī)數(shù)生成器,</p><p>  而srand()會(huì)設(shè)置供rand()使用的隨機(jī)數(shù)種子。</p><p>  //如果你在第一次調(diào)用rand()之前沒(méi)有調(diào)用srand(),</p><p>  那么系統(tǒng)會(huì)為你自動(dòng)調(diào)用srand()。</p&g

40、t;<p>  //而使用同種子相同的數(shù)調(diào)用 srand()會(huì)導(dǎo)致相同的隨機(jī)數(shù)序列被生成。</p><p><b>  i=rand();</b></p><p><b>  i=i%3;</b></p><p><b>  if(i==0)</b></p><p&g

41、t;<b>  { </b></p><p>  cout<<"電腦的選擇:\n";</p><p>  cout<<" @@@@@ @ @@ \n";</p><p>  cout<<" @ @ @ @@ \n";

42、</p><p>  cout<<" @ @ @ @@ \n";</p><p>  cout<<" @@@@@ @ @@ \n";</p><p>  cout<<" \n";</p><p>

43、  return cloth;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {if(i==1)</b></p><p><b>  { </b></p><p>

44、;  cout<<"電腦的選擇:\n";</p><p>  cout<<" @@@@@ \n";</p><p>  cout<<" @ @ @ \n";</p><p>  cout<<" @ @ @ \

45、n";</p><p>  cout<<" @@@@@ \n";</p><p>  return hammer;</p><p><b>  }</b></p><p><b>  else</b></p><p>&

46、lt;b>  {</b></p><p>  cout<<"電腦的選擇:\n";</p><p>  cout<<" @@@@@ @@ \n";</p><p>  cout<<" @ @ @ @ \n";&l

47、t;/p><p>  cout<<" @ @ @ @ \n";</p><p>  cout<<" @@@@@ @@ \n"; </p><p>  return scissors;</p><p><b>  }</b&g

48、t;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Game::gameshow(int win,int lose,int tie )</p><p><b>  {</b></p><p>

49、;  cout<<"游戲結(jié)果如下:"<<endl</p><p>  <<" 玩家獲勝的次數(shù)是:"<<win<<endl</p><p>  <<" 電腦獲勝的次數(shù)是:"<<lose<<endl</p>

50、<p>  <<" 平局的次數(shù)是:"<<tie<<endl</p><p>  <<" 游戲的總次數(shù)是:"<<win+lose+tie<<endl;</p><p><b>  }</b></p><p&g

51、t;  void Game::gamehelp( )</p><p><b>  {</b></p><p>  cout<<" 玩家可以輸入下列的字符:"<<endl</p><p>  <<" c 表示布 "<<endl

52、</p><p>  <<" h 表示錘子 "<<endl </p><p>  <<" s 表示剪刀 "<<endl</p><p>  <<" g 查看游戲結(jié)果 "<&

53、lt;endl</p><p>  <<" p 可獲得游戲幫助 "<<endl</p><p>  <<"i 游戲指導(dǎo)信息 "<<endl</p><p>  <<" q 退出游戲 "<

54、;<endl;</p><p><b>  }</b></p><p>  int Game::Win_lose(enum c_h_s player,enum c_h_s machine )</p><p><b>  {</b></p><p>  int victory;</p>

55、;<p>  if(player==cloth)</p><p>  victory=machine==hammer;</p><p><b>  else</b></p><p><b>  {</b></p><p>  if(player==hammer)</p>

56、<p>  victory=machine==scissors;</p><p><b>  else</b></p><p>  victory=machine==cloth;</p><p><b>  }</b></p><p>  return victory;</p>

57、;<p><b>  }</b></p><p>  void Game::instruct( )</p><p><b>  {</b></p><p>  cout<<" 剪刀 錘子 布 小游戲 " <<en

58、dl</p><p>  <<"在這個(gè)游戲中" <<endl</p><p>  <<"c 表示布" <<endl</p><p>  <<"h 表示錘子" <<endl</p><p>  <<&q

59、uot;s 表示剪刀." <<endl</p><p>  <<"游戲者和計(jì)算機(jī)都只選擇 c,h,s中的一個(gè).</p><p>  如果二者的選擇相同,那么這一局就是平局.此外:" <<endl</p><p>  <<"\"布包錘子\"(布獲勝)."

60、; <<endl</p><p>  <<"\"錘子打爛剪刀\"(錘子獲勝)." <<endl</p><p>  <<"\"剪刀剪布\"(剪刀獲勝)." <<endl</p><p>  <<"還有其它的

61、選擇是:" <<endl</p><p>  <<"g 表示游戲的結(jié)果(至今獲勝的次數(shù))" <<endl</p><p>  <<"p 可獲得幫助" <<endl</p><p>  <<"i 可獲得游戲方法的指導(dǎo)信息" &l

62、t;<endl</p><p>  <<"q 表示退出游戲" <<endl</p><p>  <<"這個(gè)游戲一直重復(fù)到游戲者選擇 q 為止." <<endl</p><p>  <<"goodluck" <<endl;<

63、/p><p><b>  }</b></p><p>  //game.cpp</p><p>  void Game::solution( ) //游戲結(jié)果</p><p><b>  {</b></p><p>  Game::instruct( );</p&g

64、t;<p>  while((player=select( ))!=quit)</p><p><b>  {</b></p><p>  switch(player)</p><p><b>  {</b></p><p>  case cloth:</p><p

65、>  case hammer:</p><p>  case scissors: </p><p><b>  {</b></p><p>  machine=mach();</p><p>  if(player==machine)</p><p><b>  {</b&g

66、t;</p><p>  tie=tie+1;</p><p>  cout<<"平局"<<endl;</p><p>  } </p><p><b>  else</b></p><p><b>  {</b>&

67、lt;/p><p>  if(Win_lose(player, machine)){win=win+1;</p><p>  cout<<"玩家獲勝"<<endl;</p><p><b>  }</b></p><p><b>  else</b><

68、/p><p><b>  {</b></p><p>  lose=lose+1;</p><p>  cout<<"電腦獲勝"<<endl;</p><p><b>  }</b></p><p><b>  }</b

69、></p><p><b>  }</b></p><p>  case game: Game::gameshow(win,lose,tie ); break;</p><p>  case instructions: Game::instruct( );break;</p><p>  case quit: ga

70、meshow(win,lose,tie );break;</p><p>  case help: Game::gamehelp( );break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  Game::gameshow(win,lose,t

71、ie );</p><p>  cout<<"bye"<<endl;}</p><p>  #include<iostream.h></p><p>  void main()</p><p><b>  {</b></p><p>  co

72、ut <<"軟件132001 201320020122 呂毅"<<endl;</p><p><b>  Game g;</b></p><p>  g.solution( );</p><p><b>  }</b></p><p><b

73、>  3.2測(cè)試:</b></p><p>  1.游戲規(guī)則及說(shuō)明截圖:</p><p>  圖3.1游戲規(guī)則及說(shuō)明截圖</p><p>  2. 游戲運(yùn)行及統(tǒng)計(jì)結(jié)果截圖:</p><p><b>  (1).</b></p><p>  圖3.2游戲運(yùn)行截圖</p>

74、<p><b>  13</b></p><p>  圖3.2中玩家輸入選擇c(cloth)即選擇布,此時(shí)電腦選擇的也是c(cloth)布,所以結(jié)果是平局,總次數(shù)一次。</p><p><b>  (2).</b></p><p>  圖3.3游戲運(yùn)行截圖</p><p>  圖3.3

75、中當(dāng)玩家選擇h(hammer)即錘子時(shí),電腦選擇s(scissors)剪刀,玩家獲勝,總次數(shù)兩次,平局一次。</p><p><b> ?。?).</b></p><p>  圖3.4游戲運(yùn)行截圖</p><p>  圖3.4中玩家選擇s(scissors)即剪刀,電腦選擇h錘子,此時(shí)電腦獲勝,總次數(shù)三場(chǎng),平局一場(chǎng)。</p>&l

76、t;p>  3.查看游戲結(jié)果截圖:</p><p>  圖3.5游戲結(jié)果截圖</p><p>  圖3.5中輸入g命令即查看游戲結(jié)果。</p><p><b>  4.游戲幫助截圖:</b></p><p>  圖3.6游戲幫助截圖</p><p>  圖3.6中輸入p命令即(help)命令

77、得到游戲幫助信息</p><p><b>  游戲指導(dǎo)說(shuō)明截圖:</b></p><p>  圖3.7游戲指導(dǎo)說(shuō)明截圖</p><p>  圖3.7中輸入i(intruction)命令,獲得游戲指導(dǎo)說(shuō)明</p><p><b>  退出游戲截圖:</b></p><p>  

78、圖3.8退出游戲截圖</p><p>  圖3.8中輸入q(quit)停止命令,按enter鍵退出。</p><p>  第四章.設(shè)計(jì)過(guò)程總結(jié)或分析</p><p><b>  總結(jié):</b></p><p>  在設(shè)計(jì)石頭-剪刀-布游戲的程序過(guò)程中,我們用到了面向?qū)ο蟮念?lèi)、成員函數(shù)、結(jié)構(gòu)函數(shù)、隨機(jī)函數(shù)、枚舉類(lèi)型、

79、60;break語(yǔ)句、for語(yǔ)句、if語(yǔ)句、while循環(huán)、函數(shù)調(diào)用機(jī)制、參數(shù)的傳遞、switch語(yǔ)句等。 </p><p>  本設(shè)計(jì)基本完成了設(shè)計(jì)的要求,測(cè)試結(jié)果是正確的。如需完善的話可以把游戲所做的選擇可以弄成圖像,讓程序變的更加直觀。</p><p><b>  設(shè)計(jì)心得和體會(huì):</b></p><p>  在這個(gè)程序中讓我了

80、解了什么是類(lèi),類(lèi)所包含的對(duì)象怎么去調(diào)用,對(duì)于它的保護(hù)對(duì)象和公有對(duì)象理解了其中的作用和效果。補(bǔ)充了一個(gè)隨機(jī)函數(shù),讓我知道到了隨機(jī)種子的生成,與應(yīng)用的技巧??傊@個(gè)實(shí)訓(xùn)讓我得到了很多重要的編譯技巧和思考的路線方向。      在設(shè)計(jì)這個(gè)小游戲過(guò)程中,我遇到了很多問(wèn)題:1、枚舉類(lèi)型的定義和做參數(shù)的使用,隨機(jī)函數(shù)的頭文件和初始化化隨機(jī)函數(shù),上網(wǎng)收集錯(cuò)誤,分析自己的不足處,然后加以改正。

81、2、調(diào)用類(lèi)里面的函數(shù)要用到區(qū)域符“::”,會(huì)常常忘記,還有使用類(lèi)的私有成員時(shí)只有類(lèi)里面的對(duì)象可以調(diào)用和定義等等。</p><p><b>  附錄</b></p><p><b>  集合交并差:</b></p><p><b>  流程圖如下:</b></p><p><

82、;b>  代碼:</b></p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  typedef struct LNode//定義結(jié)構(gòu)體類(lèi)型指針</p><p><b>  {</b></p>

83、;<p>  char data;</p><p>  struct LNode*next;</p><p>  }*pointer;</p><p>  void Inputdata(pointer head)//定義輸入集合函數(shù)</p><p><b>  {</b></p><p&

84、gt;  pointer p;</p><p><b>  char tmp;</b></p><p>  scanf("%c",&tmp);</p><p>  while(tmp!='\n')</p><p><b>  {</b></p>

85、<p>  p=(pointer)malloc(sizeof(struct LNode));</p><p>  p->data=tmp;</p><p>  p->next=head->next;</p><p>  head->next=p;</p><p>  scanf("%c"

86、;,&tmp);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Output(pointer head)//定義輸出集合函數(shù)</p><p><b>  {</b></p><p>

87、  pointer p;</p><p>  p=head->next;</p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  printf("%c",p->data);</p><p&g

88、t;  p=p->next;</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b></p><p>  void Add(pointer head1,pointer head2,pointer hea

89、d3)//定義集合的并集函數(shù)</p><p><b>  {</b></p><p>  pointer p1,p2,p3;</p><p>  p1=head1->next;</p><p><b>  while(p1)</b></p><p><b> 

90、 { </b></p><p>  p3=(pointer)malloc(sizeof(struct LNode));</p><p>  p3->data=p1->data;</p><p>  p3->next=head3->next;</p><p>  head3->next=p3;<

91、/p><p>  p1=p1->next;</p><p><b>  }</b></p><p>  p2=head2->next;</p><p><b>  while(p2)</b></p><p><b>  {</b></p&g

92、t;<p>  p1=head1->next;</p><p>  while((p1)&&(p1->data!=p2->data))</p><p>  p1=p1->next;</p><p><b>  if (!p1)</b></p><p><b>

93、;  {</b></p><p>  p3=(pointer)malloc(sizeof(struct LNode));</p><p>  p3->data=p2->data;</p><p>  p3->next=head3->next;</p><p>  head3->next=p3;<

94、/p><p><b>  }</b></p><p>  p2=p2->next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Same(pointer head1,pointer he

95、ad2,pointer head3)//定義集合的交集函數(shù)</p><p><b>  {</b></p><p>  pointer p1,p2,p3;</p><p>  p1=head1->next;</p><p><b>  while(p1)</b></p><

96、p><b>  {</b></p><p>  p2=head2->next;</p><p>  while((p2!=NULL)&&(p2->data!=p1->data))</p><p>  p2=p2->next;</p><p>  if((p2!=NULL)&a

97、mp;&(p2->data==p1->data))</p><p><b>  {</b></p><p>  p3=(pointer)malloc(sizeof(struct LNode));</p><p>  p3->data=p1->data;</p><p>  p3->n

98、ext=head3->next;</p><p>  head3->next=p3;</p><p><b>  }</b></p><p>  p1=p1->next;</p><p><b>  }</b></p><p><b>  }<

99、;/b></p><p>  void Sub(pointer head1,pointer head2,pointer head3)//定義集合的差集函數(shù)</p><p><b>  {</b></p><p>  pointer p1,p2,p3;</p><p>  p1=head1->next;<

100、/p><p><b>  while(p1)</b></p><p><b>  {</b></p><p>  p2=head2->next;</p><p>  while((p2)&&(p2->data!=p1->data))</p><p&g

101、t;  p2=p2->next;</p><p><b>  if(!p2)</b></p><p><b>  {</b></p><p>  p3=(pointer)malloc(sizeof(struct LNode));</p><p>  p3->data=p1->dat

102、a;</p><p>  p3->next=head3->next;</p><p>  head3->next=p3;</p><p><b>  }</b></p><p>  p1=p1->next;</p><p><b>  }</b><

103、;/p><p>  } void main()//主函數(shù)</p><p><b>  {</b></p><p><b>  int n,m;</b></p><p><b>  char str;</b></p><p>  printf("輸入

104、數(shù)據(jù),按回車(chē)鍵結(jié)束 \n"); </p><p>  pointer head1,head2,head3;//聲明pointer變量</p><p>  head1=(pointer)malloc(sizeof(struct LNode));</p><p>  head1->next=NULL;</p><p>  head

105、2=(pointer)malloc(sizeof(struct LNode));</p><p>  head2->next=NULL;</p><p>  head3=(pointer)malloc(sizeof(struct LNode));</p><p>  head3->next=NULL; printf("請(qǐng)輸入集合1:\n&qu

106、ot;);</p><p>  Inputdata(head1);//調(diào)用輸入集合函數(shù)</p><p>  printf("請(qǐng)輸入集合2:\n");</p><p>  Inputdata(head2);//調(diào)用輸入集合函數(shù)</p><p>  loop:printf("\n請(qǐng)選擇正確的操作類(lèi)型!\n"

107、);</p><p>  printf("1:并集\t2:交集\t3.差集\t4.退出\n請(qǐng)選擇序號(hào)\n");</p><p>  for(m=0;;m++)</p><p><b>  {</b></p><p>  scanf("%d",&n);</p>

108、<p><b>  switch(n)</b></p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  printf("兩集合的并是\n");</p><p>  Add(head1,head

109、2,head3);//調(diào)用并集函數(shù)</p><p>  Output(head3);</p><p>  head3->next=NULL;</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  pri

110、ntf("兩集合的交是\n");</p><p>  Same(head1,head2,head3);//調(diào)用交集函數(shù)</p><p>  Output(head3);</p><p>  head3->next=NULL;</p><p><b>  break;</b></p>

111、<p><b>  case 3:</b></p><p>  printf("兩集合的差是\n");</p><p>  Sub(head1,head2,head3);//調(diào)用差集函數(shù)</p><p>  Output(head3);</p><p>  head3->next=N

112、ULL;</p><p><b>  break; </b></p><p><b>  case 4:</b></p><p>  getchar();</p><p>  printf("確定要退出嗎?< Y Same N >\n");</p>&l

113、t;p>  str=getchar();</p><p>  if(78==str||110==str)</p><p>  goto loop;</p><p>  if(89==str||121==str)</p><p><b>  exit(0);</b></p><p><b

114、>  else</b></p><p>  printf("錯(cuò)誤的指令!\n");</p><p>  goto loop;</p><p><b>  break;</b></p><p><b>  default:</b></p><p

115、>  printf("錯(cuò)誤的指令!,請(qǐng)重新輸入!\n\n");</p><p>  goto loop;</p><p><b>  break;}</b></p><p><b>  }</b></p><p><b>  }</b></p&g

溫馨提示

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

評(píng)論

0/150

提交評(píng)論