資料結構作業-L1

來源:互聯網
上載者:User

題目:編寫一個類比抽籤的程式,規定每根簽被抽走後不再放回。該抽籤問題的具體要求是:

1)        參加抽籤的人數為N,由鍵盤輸入,之後編號。

2)        每個人抽一根簽,並且簽也順序編號。

3)       每根簽必須有內容。設簽內的內容為:A,
B, C,…等一些不同的字元或串。

1.需求分析

這裡假設為N個人抽取隨機數(幸運數字),幸運數字不能有重複的。

輸入:人數int型

輸出:給每個人的編號,以及各自的幸運數字

 

2.概要設計

總體的流程圖:


3.詳細設計

  int A[N];//人的編號

  int B[N];//簽的編號

  int n=3;//人數和簽的數量都是n,預設為3

//給人編號

  for (j=0;j<n;j++)

      {      A[j]=10111290+j;     }

    //隨機數產生簽,沒有重複的簽

  srand( (int)time( NULL ) );

  do

  {

     for (i=0;i<n;i++)

     {

         B[i]=rand();

  //     cout<<"簽["<<i<<"]="<<B[i]<<""<<endl;

     }

  }while (!ChongFu(B,n));

//輸出結果

4.調試分析

    當有M套試卷的時候,讓隨機產生的數字為0……M-1,然後讓之成為試卷的編號,那麼本程式就是一個隨機產生試卷的程式。已經實現。

 5.使用說明

    運行程式,按照提示即可。

         若要改變抽籤的人數,請修改程式開始的#define  N 10;如果進行試題分配,那麼還需要添加試題,即數組C[]。

6.測試結果

測試組一:隨機產生一個int型資料

          請輸入參加抽籤的人數2

編號為10111290的同學,您的幸運數字是27655

編號為10111291的同學,您的幸運數字是28898

測試組二:產生0到9的隨機數

最多有10個人抽籤,每個人抽到的幸運數字都是不同的哦!

請輸入參加抽籤的人數9

編號為10111290的同學,您的幸運數字是6

編號為10111291的同學,您的幸運數字是4

編號為10111292的同學,您的幸運數字是3

編號為10111293的同學,您的幸運數字是0

編號為10111294的同學,您的幸運數字是9

編號為10111295的同學,您的幸運數字是5

編號為10111296的同學,您的幸運數字是1

編號為10111297的同學,您的幸運數字是2

編號為10111298的同學,您的幸運數字是7

測試組三:給n個考生分配試題

最多有10個人蔘加考試,每個人抽到的試卷都是不同的哦!

請輸入參加考試的人數10

編號為10111290的同學,您的考試題的編號是2,內容為 資料結構

編號為10111291的同學,您的考試題的編號是5,內容為 電腦群組成原理

編號為10111292的同學,您的考試題的編號是7,內容為 離散數學

編號為10111293的同學,您的考試題的編號是0,內容為 電腦網路

編號為10111294的同學,您的考試題的編號是1,內容為 高等數學

編號為10111295的同學,您的考試題的編號是6,內容為 Delphi程式設計

編號為10111296的同學,您的考試題的編號是8,內容為 影像處理

編號為10111297的同學,您的考試題的編號是3,內容為 電腦圖形學

編號為10111298的同學,您的考試題的編號是4,內容為 JAVA

編號為10111299的同學,您的考試題的編號是9,內容為 資料庫

 

7.附錄

來源程式檔案清單。

// ChouQian.cpp : 定義控制台應用程式的進入點。//#include "stdafx.h"#include <iostream>#include <stdlib.h>#include <string>#include <string.h>#include <time.h>#include <math.h>using namespace std;#define  N 10//查看數組A[n]中是否有重複的元素bool ChongFu(int A[],int n){for (int i = 0; i < n; i++){int temp = A[i];int j;for (j = 0; j < i; j++){if (temp == A[j]){return false;}}for (j = i + 1; j < 10; j++){if (temp == A[j]){return false;}}}return true;}int _tmain(int argc, _TCHAR* argv[]){//cout<<"最多有"<<N<<"個人抽籤,每個人抽到的幸運數字都是不同的哦!"<<endl<<endl;cout<<"最多有"<<N<<"個人蔘加考試,每個人抽到的試卷都是不同的哦!"<<endl<<endl;int A[N];//人的編號int B[N];//簽的編號int n=3;//人數和簽的數量都是n,預設為//cout<<"請輸入參加抽籤的人數";cout<<"請輸入參加考試的人數";cin>>n;//試卷的內容,指派試卷,試卷不能有重複的string C[N];C[0]="資料結構";C[1]="電腦群組成原理";C[2]="離散數學";C[3]="電腦網路";C[4]="高等數學";C[5]="Delphi程式設計";C[6]="影像處理";C[7]="電腦圖形學";C[8]="JAVA";C[9]="資料庫";int i,j,k;//給人編號for (j=0;j<n;j++){A[j]=10111290+j;//cout<<"第"<<j+1<<"個人的編號為:"<<A[j]<<endl;}//隨機數產生簽,沒有重複的簽srand( (int)time( NULL ) );do{for (i=0;i<n;i++){B[i]=rand()%N;//cout<<"簽["<<i<<"]="<<B[i]<<" "<<endl;}}while (!ChongFu(B,n));//輸出結果for(k=0;k<n;k++){//cout<<"編號為"<<A[k]<<"的同學,您的幸運數字是"<<B[k]<<" "<<endl;cout<<"編號為"<<A[k]<<"的同學,您的考試題的編號是"<<B[k]<<",內容為"<<C[k]<<endl;}system("pause");return 0;}


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.