欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告

      時(shí)間:2019-05-11 22:49:10下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告》。

      第一篇:數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告

      數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告

      班級(jí):13軟件二班

      姓名:殷健 學(xué)號(hào):1345536225

      子集和數(shù)問(wèn)題

      1:?jiǎn)栴}描述

      子集和數(shù)問(wèn)題1:子集和問(wèn)題的為〈W,c〉。其中,W={w1,w2,...,wn}是一個(gè)正整數(shù)的集合,子集和數(shù)問(wèn)題判定是否存在W的一個(gè)子集W1,使得∑W1=c∑W(0

      程序中設(shè)計(jì)了函數(shù)void computeSumofSub(int s,int k,int r),其意義是從第k項(xiàng)開(kāi)始,如果s(已經(jīng)決策的和數(shù))和w[k](當(dāng)前元素)之和為和數(shù),就把結(jié)果輸出來(lái),否則如果s與,w[k],w[k+1]之和小于和數(shù),則調(diào)用computeSumofsub(s+w[k],k+1,r-w[k]),意為選擇此結(jié)點(diǎn)的左分支,再判斷s和后面所有元素之和是否不小于M(所有的加起來(lái)都小,必定無(wú)解),并且s+w[k+1]<=M(由于輸入的數(shù)據(jù)要求是從小到大且無(wú)重復(fù)元素,所以若s+w[k+1])>M,也是無(wú)解),若條件符合即調(diào)用computeSumofSub(s,k+1,r-w[k]),即選擇當(dāng)前結(jié)點(diǎn)的右分支。

      算法展示:

      #include using namespace std;#include #include #define M 50 class SumOfSub{ private: int w[M];

      int m;int x[M];public: SumOfSub(int a[], int b, int n){

      for(int i=0;i=m&&s+w[k+1]<= m){ x[k] = 0;computeSumOfSub(s, k+1, r-w[k]);} }

      };void main(){ int sum=0;int w[M];srand((unsigned)time(NULL));

      for(int i=0;i

      } cout<<“隨機(jī)數(shù)組為:”;cout<

      cout<<“符合條件的子集為:”;for(int i=0;i<=k;i++){ } cout<

      } cout<<“數(shù)組元素總和為:”<>m;sum=m*sum;cout<

      復(fù)雜性分析: 對(duì)于不同的輸入結(jié)果,算法的執(zhí)行次數(shù)有所不同,最好情況是n,最壞情況是n*2^n。盡管差異很大,但當(dāng)n很大時(shí),對(duì)某些輸入而言,回溯法仍可在短時(shí)間內(nèi)求解。其它說(shuō)明: 按書中所講的約束條件,程序中所有變量都是整型,輸入的各元素要從小到大輸入,而且不能有重復(fù)的元素。若是想要無(wú)序輸入,可以程序中加入程序1.c的歸并排序算法,對(duì)輸入的數(shù)組排序即可。

      拓展一

      問(wèn)題描述: 子集和數(shù)問(wèn)題拓展一:子集和問(wèn)題的為〈W,c,p〉。其中,W={w1,w2,...,wn}是一個(gè)正整數(shù)的集合,子集和數(shù)問(wèn)題判定是否存在W的一個(gè)子集W1,使得∑W1=c∑W(0

      問(wèn)題分析:

      增加一個(gè)數(shù)組p,使得p的每個(gè)元素與w對(duì)應(yīng)元素關(guān)系為pi=Wi+10;最后結(jié)果W子集中元素個(gè)數(shù)越多,則p和最大,但也可以將每個(gè)符合條件子集對(duì)應(yīng)P集合的元素和計(jì)算出做個(gè)比較,然后輸出最大的再對(duì)應(yīng)原W子集。

      算法演示

      #include using namespace std;#include #include #define M 50 class SumOfSub{ private: int w[M];int p[M];int m;int x[M];

      int N[M];int max;int j;public: SumOfSub(int a[], int b, int n){

      max=0;j=0;

      for(int i=0;i

      w[i]=a[i];

      p[i]=a[i]+10;

      }

      m = b;

      x[0]=n;} void computeSumOfSub(int s, int k, int r){ x[k] = 1;if(s+w[k] == m){ printResult(k);cout<<“ ”;

      } else if(s+w[k]+w[k+1] <= m){ computeSumOfSub(s+w[k],k+1,r-w[k]);} if(s+r-w[k]>=m&&s+w[k+1]<= m){ x[k] = 0;computeSumOfSub(s, k+1, r-w[k]);} } void printResult(int k){

      int S=0;int i;

      cout<<“符合條件的子集為:”;

      for(i=0;i<=k;i++){ if(x[i] == 1){

      S=S+p[i];

      cout<

      }

      cout<<“p和為:”<

      cout<

      if(S>max){

      max=S;

      int J=0;

      for(i=0;i<=k;i++){

      if(x[i]==1){

      N[J]=w[i];

      J++;

      }

      }

      j=J;

      } } void special(){

      cout<

      for(int i=0;i

      cout<

      }

      cout<

      for(int i=0;i

      w[i]=rand();

      if(w[i]==0){

      w[i]=rand();

      }

      sum=sum+w[i];} cout<<“隨機(jī)數(shù)組為:”;for(i=0;i

      cout<>m;sum=m*sum;cout<<“子集和為:”<

      r += w[i];} sumOfSub.computeSumOfSub(0, 0, r);

      sumOfSub.special();} 運(yùn)行結(jié)果

      復(fù)雜性分析

      對(duì)于不同的輸入結(jié)果,算法的執(zhí)行次數(shù)有所不同,最好情況是n,最壞情況是n*2^n。盡管差異很大,但當(dāng)n很大時(shí),對(duì)某些輸入而言,回溯法仍可在短時(shí)間內(nèi)求解。

      拓展二

      問(wèn)題描述

      子集和數(shù)問(wèn)題拓展一:子集和問(wèn)題的為〈W,c,P〉。其中,W={w1,w2,...,wn}是一個(gè)正整數(shù)的集合,子集和數(shù)問(wèn)題判定是否存在W的一個(gè)子集W1,使得∑W1=c∑W(0

      問(wèn)題分析

      增加一個(gè)數(shù)組隨機(jī)數(shù)組P,每個(gè)符合條件子集對(duì)應(yīng)P集合的元素和計(jì)算出做個(gè)比較,然后輸出最大的再對(duì)應(yīng)原W子集。

      算法演示

      #include using namespace std;#include #include #define M 50 class SumOfSub{ private: int w[M];int p[M];int m;

      int x[M];int N[M];int max;int j;public: SumOfSub(int a[], int b, int n){

      max=0;

      j=0;

      cout<<“隨機(jī)數(shù)組p為:”;

      for(int i=0;i

      w[i]=a[i];

      p[i]=rand();

      cout<

      }

      cout<

      m = b;

      x[0]=n;} void computeSumOfSub(int s, int k, int r){ x[k] = 1;if(s+w[k] == m){ printResult(k);cout<<“ ”;

      } else if(s+w[k]+w[k+1] <= m){ computeSumOfSub(s+w[k],k+1,r-w[k]);} if(s+r-w[k]>=m&&s+w[k+1]<= m){ x[k] = 0;computeSumOfSub(s, k+1, r-w[k]);} } void printResult(int k){

      int S=0;int i;

      cout<<“符合條件的子集為:”;

      for(i=0;i<=k;i++){ if(x[i] == 1){

      S=S+p[i];

      cout<

      }

      cout<<“p和為:”<

      cout<

      if(S>max){

      max=S;

      int J=0;

      for(i=0;i<=k;i++){

      if(x[i]==1){

      N[J]=w[i];

      J++;

      }

      }

      j=J;

      } } void special(){

      cout<

      for(int i=0;i

      cout<

      }

      cout<

      for(int i=0;i

      w[i]=rand();

      if(w[i]==0){

      w[i]=rand();

      }

      sum=sum+w[i];} cout<<“隨機(jī)數(shù)組w為:”;for(i=0;i

      cout<>m;sum=m*sum;cout<<“子集和為:”<

      r += w[i];} sumOfSub.computeSumOfSub(0, 0, r);

      sumOfSub.special();}

      運(yùn)行結(jié)果

      復(fù)雜性分析

      對(duì)于不同的輸入結(jié)果,算法的執(zhí)行次數(shù)有所不同,最好情況是n,最壞情況是n*2^n。盡管差異很大,但當(dāng)n很大時(shí),對(duì)某些輸入而言,回溯法仍可在短時(shí)間內(nèi)求解。

      第二篇:數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告

      數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)的實(shí)習(xí)報(bào)告怎么寫呀,請(qǐng)求做過(guò)課設(shè)的同學(xué)發(fā)一篇范文過(guò)來(lái)謝謝-_-規(guī)范實(shí)習(xí)報(bào)告的開(kāi)頭應(yīng)給出題目、班級(jí)、姓名、學(xué)號(hào)和完成日期,并包括以下七個(gè)內(nèi)容:

      1、需求分析以無(wú)歧義的陳述說(shuō)明程序設(shè)計(jì)的任務(wù),強(qiáng)調(diào)的是程序要做什么?明確規(guī)定:(1)輸入的形式和輸入值的范圍;(2)輸出的形式;(3)程序所能達(dá)到的功能;(4)測(cè)試數(shù)據(jù):包括正確地輸入及其輸出結(jié)果和含有錯(cuò)誤的輸入及其輸出結(jié)果,數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告。

      2、概要設(shè)計(jì)說(shuō)明本程序中用到的所有抽象數(shù)據(jù)類型的定義、主程序的流程以及各程序模塊之間的層次(調(diào)用)關(guān)系。

      3、詳細(xì)設(shè)計(jì)實(shí)現(xiàn)概要設(shè)計(jì)中定義的所有數(shù)據(jù)類型,對(duì)每個(gè)操作只需要寫出偽碼算法;對(duì)主程序和其他模塊也都需要寫出偽碼算法(偽碼算法達(dá)到的詳細(xì)程度建議為:按照偽碼算法可以在計(jì)算機(jī)鍵盤直接輸入高級(jí)程序設(shè)計(jì)語(yǔ)言程序);畫出函數(shù)的調(diào)用關(guān)系圖。

      4、調(diào)試分析內(nèi)容包括:(1)調(diào)試過(guò)程中遇到的問(wèn)題是如何解決的以及對(duì)設(shè)計(jì)與實(shí)現(xiàn)的回顧討論和分析;(2)算法的時(shí)空分析(包括基本操作和其他算法的時(shí)間復(fù)雜度和空間復(fù)雜度的分析)和改進(jìn)思想;(3)經(jīng)驗(yàn)和體會(huì)等,實(shí)習(xí)報(bào)告《數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告》。

      5、用戶使用說(shuō)明說(shuō)明如何使用你編寫的程序,詳細(xì)列出每一步操作步驟。

      6、測(cè)試結(jié)果列出你的測(cè)試結(jié)果,包括輸入和輸出。這里的測(cè)試數(shù)據(jù)應(yīng)該完整和嚴(yán)格,最好多于需求分析中所列。

      7、附錄題目:約瑟夫-實(shí)習(xí)報(bào)告尺寸:約瑟夫-實(shí)習(xí)報(bào)告.doc目錄:

      一、需求分析

      二、概要設(shè)計(jì)

      三、程序具體設(shè)計(jì)及函數(shù)調(diào)用關(guān)系

      四、調(diào)試分析

      五、測(cè)試結(jié)果原文:實(shí)習(xí)報(bào)告題目:約瑟夫(Joseph)問(wèn)題的一種描述是:編號(hào)為1,2,.,n的n個(gè)人按順時(shí)針?lè)较驀蝗?,每人持有一個(gè)密碼(正整數(shù))。一開(kāi)始任選一個(gè)整數(shù)作為報(bào)數(shù)上限值m,從第一個(gè)人開(kāi)始按順時(shí)針?lè)较蜃?開(kāi)始順序報(bào)數(shù),報(bào)到m時(shí)停止報(bào)數(shù)。報(bào)m的人出列,將他的密碼作為新的m值,從他在順時(shí)針?lè)较蛏系南乱粋€(gè)開(kāi)始重新從1報(bào)數(shù),如此下去,直至年有人全部出列為止。試設(shè)計(jì)一個(gè)程序求出出列順序。班級(jí):姓名:學(xué)號(hào):完成日期:

      一、需求分析1.本演示程序中,利用單向循環(huán)鏈表存儲(chǔ)結(jié)構(gòu)存儲(chǔ)約瑟夫環(huán)數(shù)據(jù)(即n個(gè)人的編號(hào)和密碼)。2.演示程序以用戶和計(jì)算機(jī)的對(duì)話方式執(zhí)行,即在計(jì)算機(jī)終端上顯示“提示信息”之后,由用戶在鍵盤上輸入演示程序中需要輸入的數(shù)據(jù),運(yùn)算結(jié)果顯示在其后。3.程序執(zhí)行的命令包括:1)構(gòu)造單向循環(huán)鏈表;2)4.測(cè)試數(shù)據(jù)m的初值為20;n=7,7個(gè)人的密碼依次為:3,1,7,2,4,8,4,首先m值為6(正確的出列順序?yàn)?,1,4,7,2,1,3,5)。

      二、概要設(shè)計(jì)1.單向循環(huán)鏈表的抽象數(shù)據(jù)類型定義為:ADT List{數(shù)據(jù)對(duì)象:D={ai|ai∈正整數(shù),I=1,2,.,n,n≥0}數(shù)據(jù)關(guān)系:R1={ai-1,ai|,ai-1,ai∈D,I=1,2,.,n}基本操作:Init List(&L)操作結(jié)果:構(gòu)造一個(gè)空的線性表L。List Insert(&L,i,e)初始條件:線性表L已存在,1≤i≤List Length(L)+1.操作結(jié)果:在L中第i個(gè)位置之前插入新的數(shù)據(jù)無(wú)素e,L長(zhǎng)度加1。List Delete(&L,i,&e)初始條件:線性表L存在非空,1≤i≤List Length(L).操作結(jié)果:刪除L的第i個(gè)元素,并用e返回其值,L長(zhǎng)度減1。2.程序包含四個(gè)模塊:1)主程序模塊:void main(){.

      第三篇:數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告

      數(shù)據(jù)結(jié)構(gòu)第六次作業(yè)p134

      ——11411203張玉

      24.template

      void SeqQueue::EnQueue(const T& x){//插入函數(shù)

      if(IsFull()==true){

      maxSize=2*maxSize;

      elements[rear]=x;

      rear=(rear+1)%maxSize;

      }

      elements[rear]=x;

      rear=(rear+1)%maxSize;

      };

      template

      bool SeqQueue::DeQueue(const T& x){//刪除函數(shù)if(IsEmpty()==true)return false;

      if(rear<=maxSize/4){

      maxSize=maxSize/2;

      x=elements[front];

      front=(front+1)%maxSize;

      }

      x=elements[front];

      front=(front+1)%maxSize;

      return true;

      };

      29.// 利用優(yōu)先級(jí)隊(duì)列實(shí)現(xiàn)棧和隊(duì)列

      #include

      template class PQueue;//前視的類定義

      template class Stack;

      template class Queue;//優(yōu)先級(jí)隊(duì)列結(jié)點(diǎn)類的定義 template

      class PQueueNode

      {

      friend class PQueue;//PQueue類作為友元類定義friend class Stack;

      friend class Queue;

      public:

      PQueueNode(T &value, int newpriority, PQueueNode priority(newpriority), link(next){}//構(gòu)造函數(shù) * next):data(value),virtual T GetData(){ return data;}//取得結(jié)點(diǎn)數(shù)據(jù)

      virtual int GetPriority(){ return priority;}//取得結(jié)點(diǎn)優(yōu)先級(jí)

      virtual PQueueNode * GetLink(){ return link;}//取得下一結(jié)點(diǎn)地址

      virtual void SetData(T& value){ data = value;}//修改結(jié)點(diǎn)數(shù)據(jù)

      virtual void SetPriority(int newpriority){ priority = newpriority;} //修改結(jié)點(diǎn)優(yōu)先級(jí)

      virtual void SetLink(PQueueNode * next){ link = next;}//修改指向下一結(jié)點(diǎn)的指針 private:

      T data;//數(shù)據(jù)

      int priority;//優(yōu)先級(jí)

      PQueueNode *link;//鏈指針

      };

      //優(yōu)先級(jí)隊(duì)列的類定義

      template

      class PQueue

      {

      friend class Stack;

      friend class Queue;

      public:

      PQueue():front(NULL), rear(NULL){}//構(gòu)造函數(shù)

      virtual ~PQueue(){ MakeEmpty();}//析構(gòu)函數(shù)

      virtual void Insert(T &value, int newpriority);//插入新元素value到隊(duì)尾 virtual T Remove();//刪除隊(duì)頭元素并返回 virtual T Get();//讀取隊(duì)頭元素的值 virtual void MakeEmpty();//置空隊(duì)列

      virtual int IsEmpty(){ return front == NULL;}//判隊(duì)列空否private:

      PQueueNode *front, *rear;//隊(duì)頭指針, 隊(duì)尾指針

      };template

      void PQueue::MakeEmpty()

      {

      //將優(yōu)先級(jí)隊(duì)列置空

      PQueueNode *q;

      while(front!= NULL)//鏈不空時(shí), 刪去鏈中所有結(jié)點(diǎn)

      {

      //循鏈逐個(gè)刪除

      q = front;

      front = front->link;

      delete q;

      }

      rear = NULL;//隊(duì)尾指針置空

      }template

      void PQueue::Insert(T &value, int newpriority)

      {

      //插入函數(shù)

      PQueueNode *q = new PQueueNode(value, newpriority, NULL);if(IsEmpty())

      front = rear = q;//隊(duì)列空時(shí)新結(jié)點(diǎn)為第一個(gè)結(jié)點(diǎn)

      else

      {

      PQueueNode *p = front, *pr = NULL;//尋找q的插入位置

      while(p!= NULL && p->priority >= newpriority)//隊(duì)列中按優(yōu)先級(jí)從大到小鏈接{

      pr = p;

      p = p->link;

      }

      if(pr == NULL)

      {

      //插入在隊(duì)頭位置

      q->link = front;

      front = q;

      }

      else

      {

      q->link = p;

      pr->link = q;//插入在隊(duì)列中部或尾部

      if(pr == rear)

      rear = q;

      }

      }

      }

      //刪除隊(duì)頭元素并返回

      template

      T PQueue::Remove()

      {

      if(IsEmpty())

      return NULL;PQueueNode *q = front;

      front = front->link;//將隊(duì)頭結(jié)點(diǎn)從鏈中摘下

      T &retvalue = q->data;

      delete q;

      if(front == NULL)

      rear = NULL;return retvalue;

      }

      //讀取隊(duì)頭元素的值

      template

      T PQueue::Get()

      if(IsEmpty())

      return NULL;

      else

      return front->data;

      }

      //(1)棧的定義與實(shí)現(xiàn)

      template

      class Stack:public PQueue

      {

      //棧類定義

      public:

      Stack():PQueue(){} //構(gòu)造函數(shù)

      void Insert(T & value);//插入新元素value到隊(duì)尾

      };template

      void Stack::Insert(T & value)

      {

      //插入函數(shù)

      PQueueNode *q = new PQueueNode(value, 0, NULL);if(IsEmpty())front = rear = q;//棧空時(shí)新結(jié)點(diǎn)為第一個(gè)結(jié)點(diǎn)

      else

      {

      //插入在前端

      q->link = front;

      front = q;

      }

      }//--------------------------Queue //(2)隊(duì)列的定義與實(shí)現(xiàn)

      template

      class Queue:public PQueue

      {

      //隊(duì)列類定義

      public:

      Queue():PQueue(){}//構(gòu)造函數(shù)

      void Insert(T & value);//插入新元素value到隊(duì)尾

      };template

      void Queue::Insert(T & value)

      {

      //插入函數(shù)

      PQueueNode *q = new PQueueNode(value, 0, NULL);

      if(IsEmpty())

      front = rear = q;//隊(duì)列空時(shí)新結(jié)點(diǎn)為第一個(gè)結(jié)點(diǎn)

      else

      rear = rear->link = q;//插入在隊(duì)尾位置

      void main(){

      Stack aStack;Queue aQueue;

      int n = 1;

      aStack.Insert(n);aQueue.Insert(n);}

      第四篇:數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告

      附件:

      實(shí)習(xí)報(bào)告格式,如下:

      數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告

      班級(jí): 姓名:

      xxx(20121514101)

      xxx(20121514101)

      xxx(20121514101)

      指導(dǎo)教師:

      日期:

      題目

      一、問(wèn)題描述(把你所選的題目及要求說(shuō)一下)

      二、概要設(shè)計(jì)(抽象數(shù)據(jù)類型定義)

      三、詳細(xì)設(shè)計(jì)(主要算法和函數(shù)間的調(diào)用關(guān)系)

      四、調(diào)試分析(調(diào)式過(guò)程中出現(xiàn)的問(wèn)題及如何改正)

      五、心得體會(huì)(組內(nèi)成員的分工及實(shí)習(xí)期間的體會(huì))

      六、用戶手冊(cè)(系統(tǒng)的使用方法介紹)

      可參照習(xí)題集上的實(shí)習(xí)報(bào)告格式。

      第五篇:數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告

      一、概述軟件開(kāi)發(fā)的流程

      二、回顧C(jī)語(yǔ)言的基本語(yǔ)法:

      1、常量(類型)

      2、變量(類型、定義)

      3、表達(dá)式(例子:三位數(shù)的拆分)

      4、控制語(yǔ)句(if條件語(yǔ)句,例子:餓了嗎?for循環(huán)語(yǔ)句,例子:做好事問(wèn)題求解)

      5、數(shù)組(例子:猜數(shù)字游戲)

      三、學(xué)生成績(jī)計(jì)算系統(tǒng)

      做好事問(wèn)題求解:

      某學(xué)校為表?yè)P(yáng)好人好事需核實(shí)一件事,老師找了A、B、C、D三個(gè)學(xué)生,A說(shuō):“不是我?!薄說(shuō):“是C?!?。C說(shuō):“是D?!薄說(shuō):“C胡說(shuō)”。這四個(gè)人中三個(gè)人說(shuō)了實(shí)話。請(qǐng)問(wèn):這件好事是誰(shuí)做的?

      #include “Stdio.h” #include “Conio.h”

      void main(void){ char thisman;/*定義變量用來(lái)保存做好事的人*/ int sum=0;/*求和變量*/ /*循環(huán)枚舉做好事的人*/ for(thisman='A';thisman<='D';thisman++){ /*對(duì)四個(gè)人所說(shuō)的話進(jìn)行求和,真話為1,假話為0*/ sum=(thisman!='A')+(thisman=='C')+(thisman=='D')+(thisman!='D');/*判斷和是否為3,真話3,假話1*/ if(sum==3){ /*找到做好事的人,輸出*/ printf(“thisman is %cn”,thisman);}

      } getch();} 猜數(shù)字:

      在計(jì)算機(jī)上設(shè)置一個(gè)沒(méi)有重復(fù)數(shù)字的4位數(shù),不能讓猜得人知道。猜的人就可以開(kāi)始猜。每猜一個(gè)數(shù)字,出數(shù)者就要根據(jù)這個(gè)數(shù)字給出幾A幾B,其中A前面的數(shù)字表示位置正確的數(shù)的個(gè)數(shù),而B(niǎo)前的數(shù)字表示數(shù)字正確而位置不對(duì)的數(shù)的個(gè)數(shù)。

      如正確答案為5234,而猜的人猜5346,則是1A2B,其中有一個(gè)5的位置對(duì)了,記為1A,而3和4這兩個(gè)數(shù)字對(duì)了,而位置沒(méi)對(duì),因此記為2B,合起來(lái)就是1A2B。

      接著猜的人再根據(jù)出題者的幾A幾B繼續(xù)猜,直到猜中為止。

      次數(shù)限制:

      有的時(shí)候,這個(gè)游戲有猜測(cè)次數(shù)上的限制。根據(jù)計(jì)算機(jī)測(cè)算,這個(gè)游戲,如果以最嚴(yán)謹(jǐn)?shù)挠?jì)算,任何數(shù)字可以在7次之內(nèi)猜出。而有些地方把次數(shù)限制為6次或更少,則會(huì)導(dǎo)致有些數(shù)可能猜不出來(lái)。而有些地方考慮到人的邏輯思維難以達(dá)到計(jì)算機(jī)的那么嚴(yán)謹(jǐn),故設(shè)置為8次甚至10次。也有的沒(méi)有次數(shù)上的限制。我們今天要做的這個(gè)游戲就是設(shè)定次數(shù)為8次。

      #include “Stdio.h” #include “Conio.h” void guess(int b[])/*猜數(shù)字游戲進(jìn)行猜數(shù)的函數(shù),采用數(shù)組作為參數(shù)*/ { int i=0,j=0,s=0,x=0,k1=0,k2=0;/*i、j、s用于進(jìn)行循環(huán),x用記錄猜

      數(shù)的次數(shù),k1用于記錄位置相同且數(shù)相同的數(shù)字個(gè)數(shù)、k2記錄數(shù)相同的數(shù)字個(gè)數(shù)*/ int a[4];while(1){ x++;printf(“di %d ci shu ru:”,x);scanf(“%d”,&j);/*輸入要猜的數(shù)放在變量j中*/ for(i=3;i>=0;i--)/*將輸入的4位數(shù)進(jìn)行拆分放到數(shù)組a中*/ { a[i]=j%10;j=j/10;} for(i=0;i<4;i++)/*比較位置和數(shù)字都一致的*/ { if(a[i]==b[i])k1++;} for(i=0;i<4;i++)/*只比較數(shù)字相同不管位置*/ { for(s=0;s<4;s++)if(a[i]==b[s])k2++;} printf(“%dA%dBn”,k1,k2);if(x==8)/*如果已經(jīng)猜了8次還沒(méi)有猜對(duì)那么就要提示并推出這一輪游戲*/ { printf(“your time over back menun”);break;} if(k1==4&&k2==4)/*猜對(duì)了數(shù)字,提示勝利*/ { printf(“win!”);break;} k1=0;/*將計(jì)數(shù)變量清零*/ k2=0;} } void set_num()/*設(shè)置被猜的數(shù)子*/ { printf(“input number:”);scanf(“%d”,&num);/*輸入被猜的數(shù)字,存放在變量num中*/ for(i=3;i>=0;i--)/*將四位數(shù)拆分并按高低位存放在數(shù)組b中*/ { b[i]=num%10;num=num/10;} printf(“ok press any key”);getch();/*等待*/ clrscr();/*清屏*/ } int main(void){ int b[4],num,i,ch=0;while(1)/*條件為1的無(wú)限循環(huán)作為軟件運(yùn)行的主體,等待退出命令*/ { printf(“****menu****n”);printf(“set number input 1n”);printf(“guess number input 2n”);printf(“exit input 3n”);printf(“input your select items:”);scanf(“%d”,&ch);if(ch==1)/*選擇變量為1調(diào)用設(shè)置被猜數(shù)字函數(shù)*/ { set_num();} if(ch==2)/*選擇變量為2調(diào)用猜數(shù)游戲過(guò)程函數(shù)*/ { guess(b);} if(ch==3)/*選擇變量為3退出循環(huán)結(jié)束游戲*/ { break;} }

      getch();return 0;}

      下載數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告word格式文檔
      下載數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦