程式與演算法設計 1 課程設計指導書

2022-07-13 09:21:03 字數 4636 閱讀 7152

指導書時間:3周

本課程設計根據現有大綱與後續課程的要求,制定如下任務。

一. 設計題目及專案

題目1、(必做)

實驗目的:(1)掌握函式的方法;(2)掌握通過值傳遞呼叫函式的方法;(3)掌握遞迴函式的設計方法。

實驗內容:計算並輸出

具體要求:

(1) 編寫乙個計算的遞迴函式,其函式名返回的值。

(2) 編寫乙個主函式,首先從鍵盤輸入m和n的值(要求),然後呼叫(1)中的函式,計算

(3) 在計算的遞迴函式中,要檢查形參n的合理性,當n<0時,應輸出出錯資訊,並返回0。

(4) 在主函式中應檢查從鍵盤輸入資料的合理性,對於不合理的輸入,應輸出出錯資訊,並不再呼叫計算。

(5) 分別輸入(m, n )=(3,-2), (0, 0), (7, 7) , (9, 6) ,(6, 9) 執行你的程式。對結果進行分析。

題目2、(必做)使用指標進行程式設計

實驗目的:(1)掌握使用指標變數的程式設計。(2)掌握使用指標陣列的程式設計。

(3)掌握使用函式指標的程式設計。(4)掌握使用字串指標的程式設計。(5)掌握使用指標作為函式引數的程式設計

實驗內容:計算給定複數z=x+jy的指數exp(z),對數ln(z) 以及正弦sin(z) 余弦cos(z)

具體要求:

1) 分別編寫計算給定複數的指數,對數,正弦,和余弦的四個函式。這四個函式的形參分別是給定複數的實部x,虛部y以級計算結果的實部u,虛部v。並且,在每乙個函式中應允許存放計算結果的變數與給定複數的變數具有相同的儲存位址。

2) 編寫乙個主函式,首先呼叫計算複數指數的函式計算並輸出複數 z=2+j3的指數,在呼叫複數對數的函式計算並輸出該結果(為乙個複數)的對數,然後呼叫計算複數正弦的函式計算並輸出新結果(為乙個複數)的正弦,最後呼叫計算複數余弦的函式計算並輸出新結果(為乙個複數)的余弦。

3) 在主函式中輸出結果形式為(其中x 與y為複數實部與虛部的具體值,u 與v為計算結果中實部與虛部的具體值)

exp(x+jy)=u+jv

ln(x+jy)=u+jv

sin(x+jy)=u+jv

cos(x+jv)=u+jv

方法說明:

設給定的複數為z=x+jy 則

1) 複數z 的指數為

w=u+jv=exp(z)=exp(x+jy)=exp(x)(cos(y)+jsin(y)

即u=exp(x)cos(y),v=exp(x)sin(y)

2) 複數 z的對數為

w=u+jv=ln(z)=ln(x+jy)=lnsqrt(xx+yy)+jarctan(y/x)

即u=lnsqrt(xx+yy),v=arctan(y/x)

3)複數z的正弦為

w=u+jy=sin(z)=sin(x+jy)=sin(x)cos(jy)+cos(x)sin(jy)

=sin(x)(exp(y)+exp(-y))/2+jcos(x)(exp(y)-exp(-y))/2

即u= sin(x)(exp(y)+exp(-y))/2,v= cos(x)(exp(y)-exp(-y))/2

4)複數z的余弦為

w=u+jv=cos(z)=cos(x+jy)=cos(x)cos(jy)-sin(x)sin(jy)

=cos(x)(exp(y)+exp(-y))/2-jsin(x)(exp(y)-exp(-y))/2

即u= cos(x)(exp(y)+exp(-y))/2,v= sin(x)(exp(y)-exp(-y))/2

特別要指出的是,根據題目的要求,因允許給定複數z與計算結果w 存放在同乙個儲存位址中,即在呼叫這些函式時,計算結果的實部與虛部仍然存放在給定的實部變數x與虛部變數y 中。因此,在每乙個函式中,當給定複數的實部x 與虛部 y還沒有使用完,不能直接將計算結果付給u或v,因為在這種情況下,函式中如果改變了u 值,也即改變了x值;同樣,函式中如果改變了v 值,也即改變了y值

題目3、(必做)利用氣泡排序法對給定的單詞序列進行排序。

具體要求:

1) 寫乙個函式,其功能是對由個單詞所構成的字串序列按飛抵間順序進行氣泡排序。其中單次序列中的個單詞(即字串)由長度為n的一位字串指標陣列中的各元素指向

2) 編寫乙個主函式,呼叫1)中的函式,對下列單詞序列進行排序:

zhang, gou, xu ,zheng, mao .,zhao, .li ,bai ,qing

其中該單詞序列中各單詞以賦初值的方式用一維字串指標陣列的各元素指向

3) 在主函式中,要求先輸出原序列,換行後再輸出排序後的序列。輸出十個單詞之間用兩個空格分隔。

方法說明:

使用字串比較函式strcmp(),需要包含標頭檔案

題目4:(必做)結構體的程式設計

實驗目的:(1)掌握結構體型別變數與陣列的定義和使用。(2)掌握結構體指標變數和結構體指標陣列的使用。(3)掌握鍊錶的簡單操作。

具體題目:

1、 給定學生成績登記表1所示,用氣泡排序對該學生成績表按成績(grade)從高到底進行排序。

表1 學生成績登記表

具體要求 :

1) 定義乙個結構體陣列表示學生成績登記表,其中的每個元素依次存放表11-4中的各學生的情況。

結構體型別為

struct student

;2) 在程式中另外定義乙個結構體指標陣列,在排序前,其中每乙個陣列元素依次指向學生成績登記表(為結構體型別陣列)中的各學生情況。

3) 程式中,首先輸出排序前的學生情況,然後輸出排序後的結果。輸出形式如表11-4所示,但不要表中的框線。

4) 將氣泡排序的功能獨立編寫成乙個函式。

方法說明:

在實際的排序過程中,並不需要交換學生成績登記表中的各學生情況,而只需要交換另一指標陣列中的各指標。因此,排序的最後結果,學生成績登記表中各學生情況之間的儲存順序並沒有改變,而只是指標陣列中各指標元素順序指向的各學生情況是按成績有序的。

2、鍊錶基本操作。

具體要求:

1) 定義乙個結構體陣列表示表示學生成績登記表,其中的每個元素一次存放表1種各學生的情況。

結構體型別為

struct student

;2) 對於表1所示學生成績登記表,依次將每個學生的情況作為乙個結點插入到鍊錶的表頭(即當前插入的結點將成為鍊錶中的第乙個結點)。初始的鍊錶為空,即該鍊錶的頭指標為空。

每乙個學生情況結點結構體型別為

struct stunode

;3) 當所有學生情況都插入到鍊錶後,從頭指標開始,依次輸出鍊錶中各結點值(即每個學生的情況)。輸出格式如同表11-4所示,但不要表中框線。

方法說明:

為了每個學生情況的結點p動態分配儲存空間,可以用如下語句:

p=(struct stunode *)malloc(sizeof(sttruct stunode))

其中p為結構體型別指標struct stunode的指標。

另外,為了使用函式malloc(),要求包含標頭檔案

3、 將表1所示的學生成績登記表劃分成三個子表,其中子表1-1登記的是成績在90-100之間的學生情況,子表1-2登記的是成績在80-89之間的學生情況,子表1-3登記的是成績在70-79之間的學生情況。

具體要求:

1) 定義乙個結構體陣列表示學生成績登記表,其中的每個元素依次存放表1 種各學生的情況。

結構體型別為

struct student

;2) 劃分成的三個子表均採用鍊錶結構,鍊錶中各結點的資料域存放學生情況在登記表中的序號(即結構體元素的下標),而不是直接存放學生的成績情況,即各鍊錶結點的結構體型別為

struct stunode

struct student *data;

struct student *next;

}; 3) 最後輸出原學生成績登記表以及劃分成的三個子表,輸出各式如表1所示,但不要標中的框線。

方法說明:

劃分子表的方法如下:

對子表11-4中的各學生的成績grade ,計算

k=10-(int)(grade/10)

其中int() 表示取整,根據k紙漿學生情況插入到相應的子表中:

若k=0或 1 則插入到子表1中;

若k=2則插入到子表2中;

若k=3 則插入到子表3中;

初始時各子表為空,當需要將乙個學生情況插入到某子表時,首先動態申請乙個結點(struct stunode 型別),將該學生情況在原表中的序號(元素下標)存放到結點的資料域中,然後將該結點鏈結到相應鍊錶的表頭。

題目5、自選1-2個設計題目,能夠利用所學的c/c++語言知識進行程式設計,給出乙個完整的程式設計過程。

參考題目如下:

(1) 學生宿舍管理查詢軟體。

要求:完成對學生宿舍資訊的管理,且資料儲存到檔案中。學生宿舍管理查詢軟體包括的資料有學號、姓名、系名、樓號、房號。

功能要求:

新增:輸入學生宿舍管理資料並存入檔案;

排序:對檔案按關鍵字(姓名、學號、樓號、房號)進行排序;

查詢: a.按姓名查詢 b.按學號查詢 c.按房號查詢;

④列印:列印任一查詢結果;

(2)運動會分數統計。

要求:參加運動會有n個學院,學院編號為1……n。比賽分成m個男子專案,和w個女子專案。

專案編號為男子1……m,女子m+1……m+w。不同的專案取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:

5、3、2;哪些取前五名或前三名由學生自己設定。(m<=20,n<=20)

2019課程設計指導書

建築施工組織 建築工程系工程造價教研室 承德石油高等專科學校 一 設計原則和條件 1設計原則 熟悉單位工程施工的有關原始資料,準確取用預算檔案中的工程量,根據現行建築安裝施工綜合定額和當地當時實際生產水平,計算勞動量,確定施工班組人數和各項工專案施工延續時間,選擇合理的 先進的施工方案,準確把握各施...

工程造價1課程設計指導書

專業 工程管理 二o一三年六月 目錄 設計題目 設計步驟 設計要點及主要技術關鍵的分析 解決 附件 一 設計題目 編制 工程建築與裝飾工程工程量清單及招標控制價。二 設計步驟 1 熟悉設計任務書要求 設計施工圖紙及相關資料 工程造價計價軟體 2 編制工程量清單 手工計算的要有計算底稿 3 根據工程量...

水質工程學1課程設計指導書

水質工程學 1 課程設計任務書與指導書 專業學號 姓名2010年月日 水質工程學 1 課程設計任務書 20 20 學年第學期 1 設計題目 淨水廠工藝設計 2 設計時間 自至共 2 周 3 設計任務 根據指定的水源 廠址 處理流程和有關設計資料,設計主要處理裝置及構築物,使出水水質達到生活飲用水標準...