軟體課程設計題目

2023-01-07 08:21:04 字數 4795 閱讀 1288

1. 程式設計序用迭代法求a的立方根,求立方根的迭代公式為 ::xi+1=(2*xi)/3+a/(3*xi*xi)

假定x的初值為a,迭代到|xi+1-xi|<10的-5次方為止. 顯示a=3,27的值,並通過呼叫pow(a,1.0/3)函式加以驗證.。

2. 程式設計序,從鍵盤輸入正整數n,求出n與其反序數之和並輸出。例如,輸入2038,輸出應為 2038+8302=10340。

3 程式設計序,使用如下所謂的簡單變數「資料平移」方法來求出fibonacci數列的第n項(的具體項值)並顯示在螢幕上(正整數n通過鍵盤輸入):說明變數old1=1,old2=1,newitem;新的fibonacci項newitem總是「距它最近」的前兩項(old1與old2)的累加和。而後通過「old1=old2; old2=newitem;」進行所謂的「資料平移」。

接著計算另乙個新的fibonacci項newitem,依次迴圈,直到求出數列的第n項時為止。

fibonacci數列的計算公式如下:

fib(1) = 1;

fib(2) = 1;

fib(n) = fib(n-1) + fib(n-2); //對大於等於3的任意n。

拓展程式設計(選做),設計遞迴函式double fib(int n);用於求出fibonacci數列的第n項(的具體項值)並返回,而後編制主函式對它進行呼叫。

4. 程式設計序,輸入正整數m,它代表乙個人民幣錢數(元數)。求取這樣乙個方案,使用最少張數的人民幣紙幣,湊成上述的錢數m,並輸出求取結果。

注意,現在共有7種元以上面值的人民幣紙幣,分別為:100,50,20,10,5,2,1。

5. 程式設計序,使使用者任意輸入乙個年份以及該年的1月1日是星期幾,而後任意指定某一天(再輸入該年的任意乙個月份日期),由程式計算出這一天是星期幾。注意,2月份閏年為29天,非閏年為28天;可被4整除而不可被100整除的年份、或者可被400整除的年份均為閏年。

思考:利用元年元月元日(即1年1月1日)是星期一的已知事實,可對程式進行改造,讓使用者僅輸入乙個表示日期的年月日,則程式就應計算出那一天是星期幾。

拓展程式設計序(選做),設計星座的計算。

6. 編寫程式求解騎士巡遊問題:在n行n列的棋盤上(如n=5),假設一位騎士(按象棋中「馬走日」的行走法)從初始座標位置(x1,y1)出發,要遍訪(巡遊)棋盤中的每乙個位置一次。

請編乙個程式,為騎士求解巡遊「路線圖」(或告訴騎士,從某位置出發時,無法遍訪整個棋盤 — 問題無解)。

當n=5時,意味著要在5行5列的棋盤的25個「點」處,按騎士行走規則,依次將1至25這25個「棋子」(數碼)分別擺放到棋盤上(擺滿25個位置則成功,否則失敗問題無解)。

例如,當n=5且初始座標位置定為(1,1) — 即最左上角的那個點時,如下是一種巡遊「路線圖」。程式執行後的輸出結果為:

(x1,y1)? => (1=>5, 1=>5) : 1 1

1 6 15 10 21

14 9 20 5 16

19 2 7 22 11

8 13 24 17 4

25 18 3 12 23

提示:(1)「棋盤」可用二維陣列b表示。

(2)編制乙個具有如下原型的遞迴函式solve,用於完成任務:從(i,j)點出發,做第k至第n*n(即n的平方)次的移動 — 將k直到n的平方這些數碼按規則分別擺放到棋盤即陣列b中,若成功則通過引用引數ok返回true,否則返回false。

void solve(int i, int j, int k, bool& ok);

(3)編制主函式,讓使用者輸入作為巡遊起點的初始座標位置(x1,y1),在該處擺放「棋子」(數碼)1,而後進行呼叫「solve(x1, y1, 2, ok);」來完成所求任務。

欲處理的初始問題為:從某點(x1,y1)出發,按所給行走規則,作24次移動,遍訪棋盤中沒被訪問過的各點(或發現無路可走)。

可分解化簡為如下兩個子問題(正是形成遞迴函式的基礎):

① 由點(x1,y1)出發,按所給行走規則作1次移動到達(g,h)(或發現無路可走);

② 從(g,h)點出發,按所給行走規則,作23次移動,遍訪棋盤中沒被訪問過的各點(或發現無路可走)。

solve函式具體實現時,若由(i,j)點出發已「無路可走」,則將引用引數ok置為false而遞迴出口;否則,先「邁一步」到達(g,h)點,而後再進行遞迴呼叫:solve(g, h, k+1, ok);以實現從新點(g,h)出發,將k+1直到25這些「棋子」(數碼)分別擺放到棋盤上,若成功則通過引用引數ok返回true(否則返回false)。

點評: (1)也可編制第二種解法的主函式:將棋盤上的n平方個點依次作為巡遊起點的初始座標位置(x1,y1),判斷從每一位置出發是否有解或無解(輸出「ok!

」或「no!」,但並不輸出「路線圖」)。

(2)若更改程式中的n值(如改為4或6等),便可求解其他階數的巡遊「路線圖」。

(3)可改用非遞迴方法設計並編寫solve函式,那樣的話,通常要增加乙個記錄擺放「棋子」資訊的陣列,可記錄下是沿著什麼方向到達了當前的什麼位置(在那兒擺放了「棋子」)等,而且對上述陣列可按照棧(stack)的方式來使用(棧總是採用filo即所謂的先進後出使用方式),以便在「無路可走」的情況下,回退(回溯)到上乙個位置,接著按照另外的方向去尋找其他的「行走」方法。

7. 將輸入的羅馬資料化為10進製數。假設羅馬資料中只使用如下7個「基值」字母:

m、d、c、l、x、v、i,分別用來表示1000、500、100、50、10、5、1。如,羅馬資料l***vii表示10進製的87。

將輸入的10進製正整數轉換為羅馬資料。假設羅馬資料中只使用「基值」字母:m、d、c、l、x、v、i,分別用來表示1000、500、100、50、10、5、1。

8. 程式設計序,迴圈進行如下的處理過程:由計算機生成簡單的四則運算題;使用者給出答案;計算機判斷對錯。直到使用者回答說不再繼續做了時結束程式。

提示:可讓使用者選擇指定出加、減、乘、除哪一種運算題,以及出一位數還是兩位數的運算題;而後通過使用「rand()%10」或「rand()%100」來獲得乙個0到9的一位整數隨機值或得到0到99的兩位整數隨機值來為使用者出題。還可進一步對使用者所做算術題的對錯次數進行記錄,結束程式時給出乙個某種形式的成績。

9. 程式設計序,按如下要求來求解任意階數滿秩矩陣的逆矩陣。

(1) 矩陣行數(階數)n之值由使用者通過鍵盤輸入;

(2) 將欲求逆的「原始矩陣」另加乙個「單位矩陣」存放在於陣列a之中,而n行2n列的a儲存空間通過new來動態分配,且「原始矩陣」的各元素值也由使用者通過鍵盤輸入;

(3)利用行初等變換設法將a左半的「原始矩陣」化為「單位矩陣」,此時,右半的原「單位矩陣」則變成了欲求的結果逆矩陣。

提示:將整個求解任務(總任務)進行「分解」,設計出多個各負其責的自定義函式以完成各子任務。

求取逆矩陣的主要工作是:利用行初等變換(如將某一行的各資料乘以適當的倍數加到另一行的對應各元素上去),設法將a左半的「原始矩陣」化為「單位矩陣」(首先將「左半」消為「上三角」;又將「左半」主對角線消為1;最後將「左半」消為單位矩陣),此時,右半的原「單位矩陣」則變成了欲求的逆矩陣。

10. 編寫程式對八皇后問題進行求解:在8行8列的棋盤上放置8個皇后,使任乙個皇后都不能吃掉其他的7個皇后(注:

皇后可吃掉與她處於同行或同列或同一對角線上的其他棋子),並將結果以某種方式顯示出來。

例如,當求出下述的乙個解時,可輸出如下資訊來表示該解(輸出了表示擺放皇后的座標位置以及「棋盤狀態」— 棋盤中有皇后的位置放乙個「q」字元,其他位置為「+」字元)。

(1,1) (5,2) (8,3) (6,4) (3,5) (7,6) (2,7) (4,8)

qq +

+ + + + q + + +

q + q

+ + + q + + + +

q + +

+ + q

提示:(1) 通過「int linenum[9]; bool a[9], b[15], c[15];」說明具有全域性作用域的4個陣列。其中的:

linenum[i]表示第i列的皇后要放的行位置(只用其中的列號1到8);

a[i]為true(i =1,2,…,8)表示第i行上尚未放皇后;

b[i]為true(i =0,1,2,…,14)表示第i條斜對角線上尚未放皇后(斜對角線指的是「/」狀對角線,該對角線上各點的行列號之和i+j為乙個常數);

c[i]為true(i=0,1,2,…,14)表示第i條反斜對角線上尚未放皇后(反斜對角線指的是「\」狀對角線,該對角線上各點的行列號之差i-j為乙個常數)。

從而當使用語句「if ( a[j] && b[i+j-2] && c[i-j+7] ) linenum[i]=j;」時,可用於判斷並實現:如果在第j行的第i列上放置皇后安全的話,則將一枚皇后放置到那兒。

(2)編制乙個具有如下原型的遞迴函式solve,它負責往第i列開始的連續8-i+1列上均放上皇后,若成功則通過引用引數ok返回true(否則返回false)。

void solve(int i, bool& ok);

擺放皇后之後,若i=8即已放滿時則遞迴出口;否則通過solve(i+1,ok);進行遞迴呼叫。

(3)編制主函式,首先初始化乙個「空棋盤」,即將a、b、c陣列的各元素均置為true(表示當前棋盤的8個行、15條斜對角線以及15條反斜對角線上都尚未擺放皇后)。而後執行呼叫語句「solve(1, ok);」,它負責往第1列開始的連續8列上均放上皇后,若成功則通過引用引數ok返回true(否則返回false)。

點評:(1)可改用非遞迴方法設計並編寫solve函式,那樣的話,通常要設定陣列來記錄皇后的擺放位置資訊,還要記錄這些皇后所產生的「影響面」(所建立的「勢力範圍」)— 使得哪些行列位置不可再擺放皇后。當在新的行列位置擺放了皇后、但此時又無法進一步擺放其他的皇后時,要回退(回溯)到上乙個位置接著去考慮另外的「行走」方法(若還有的話)等等。但注意,「回退」一步後,要同時「撤銷」由於該步的回退而關聯的那些「影響面」(釋放「勢力範圍」)。

課程設計題目

賽車車道路況分析問題 小組成員 姓名1 學號 專業 姓名2 學號 專業 姓名3 學號 專業 2013 年6月3日 目錄一.實驗問題 3 二.問題的分析 5 三.建模過程 5 1 問題一 5 1.模型建立 6 2.模型求解 7 2 問題二 8 1.模型建立 8 2.模型求解 8 3 問題三 10 1....

C 課程設計題目

一 c 語言課程設計目的和要求 1.目的 1 複習 鞏固c 語言的基礎知識,進一步加深對c 語言的理解和掌握 2 課程設計為學生提供了乙個既動手又動腦,獨立實踐的機會,將課本上的理論知識和實際有機的結合起來,鍛鍊學生的分析解決實際問題的能力。提高學生適應實際,實踐程式設計的能力 3 培養學生在專案開...

課程設計題目 沖壓

第1題 支架板 材料 45鋼 料厚 3mm 批量 大批量。第2題 彎曲件 材料 8鋼 批量 大批量。第3題 沖壓件,10鋼,料厚2mm,大批量。第4題 沖壓件,材料h62,料厚4mm,大批量生產。第5題 止動件 材料 a3 料厚 2mm 大批量。8第6題 托板,大批量生產,材料08f,料厚t 2mm...