課程設計數值轉換和紙牌遊戲

2022-11-02 05:33:05 字數 3009 閱讀 1940

編號江西理工大學

資料結構課程設計報告

班級: 網路112班

學號: 14

姓名: 塗平平

時間: 2023年12月31日

~2023年1月11日

指導教師: 塗燕瓊井福榮

2023年01月

目錄 一、課程設計題目

二、需求分析

三、概要設計

四、詳細設計

五、除錯分析

六、使用者使用說明

七、測試結果

八、附錄(源程式)

一、題目:數制轉換

二、需求分析

1、課程設計任務:把十進位制數a轉換成任意進製數b

2、輸入的形式和輸入值的範圍:輸入任意乙個非負十進位制整數

3、輸出的形式:輸出預期等值的任意進製數(十六進製制以下的進製數)。

4、程式所能達到的功能:把十進位制數a轉換成任意進製數b

5、測試資料:

3、概要設計

1、抽象資料型別的定義:

adt stack

資料關係:r1=

約定a n 端為棧頂,a i 端為棧底。

基本操作:

initstack(&s) 操作結果:構造乙個空棧s。

gettop(s,&e)初始條件:棧s已存在且非空。

操作結果:用e返回s的棧頂元素。

push(&s,e) 初始條件:棧s已存在。

操作結果:插入元素e為新的棧頂元素。

pop(&s,&e) 初始條件:棧s已存在。

操作結果:刪除s的棧頂元素,並用e返回其值。

}adt stack

2、主程式的流程:

開始輸入 a,b

4、詳細設計:

1、資料型別操作的**

initstack(&s)的實現:

void initstack(sqstack &s)

構造乙個空棧

if(!儲存分配失敗 ,預設巨集定義 overflow為-2

} gettop(s,&e)的實現:

void gettop(sqstack &s,int &e)

若棧不為空,則用e返回s的棧頂元素

if(printf("這是乙個空的棧");

else

} push(&s,e)的實現:

void push(sqstack &s,int e)

插入元素e為新的棧頂元素

if(>= //棧滿,追加儲存空間

*)realloc(

if(!儲存分配失敗

} *

}pop(&s,&e)的實現:

void pop(sqstack &s,int &e)

若棧不空,則刪除s的棧頂元素,用e返回其值

if(printf("這是空的棧");e=-1;}

else

}主程式**:

int main()

呼叫conversion()的**:

void conversion(int a,int b)

printf("%d轉化為%d進製為:",sa,b);

while(!( ==

pop(sc,e);

switch(e)

}printf("\n");

}5、除錯分析

1、問題分析:

1、問題一:求出的結果錯誤。

現象:求出的結果總是最後面多一位數字;

原因:用e返回刪除s的棧頂元素值時多列印輸出了一次。

2、問題二:對要轉換為十進位制以上的進製出現錯誤。

現象:十以上的數字輸出不對;

原因:用switch語句把比十要大的數字直接賦值。

3、問題三:只能實現十六進製制及以下的數值轉換。

現象:只能實現十六進製制及以下的數值轉換;

原因:目前這個程式只是實現十六進製制及以下的數值轉換,更大的進製轉換還需以後掌握更多的知識來解決。

2、演算法的時空分析:

時間複雜度:

空間複雜度:

改進設想:

3、經驗和體會:

由於對資料結構和c語言不是很了解,有時忽略了一些關鍵的細節,使得在編寫程式的過程**現了一些問題。對於打字有時粗心導致出現一些難以發現的小錯誤,在經過多次的除錯下最終使得程式能夠執行,課程設計完滿完工。

通過這次課程設計,我感覺到要真正做出乙個程式並不很容易,但只要用心去做,總會有收穫,特別是當我遇到乙個問題,想辦法去解決,最後終於找到方法時,心裡的那份喜悅之情真是難以形容。編寫程式中遇到問題再所難免,應耐心**其中的原因,從出現問題的地方起,並聯絡前後程式,仔細推敲,逐個排查。直到最終搞清為止。

通過本次課程設計發現自己對於c語言和資料結構還有很多地方不知道,今後需要努力學習。

6、使用者使用說明:

這個程式執行操作比較簡單,只需在命令框中把任意的非負十進位制數輸入,然後按空格鍵,接著輸入想轉換的進製數,enter就行。

但是這個程式比較侷限,只能實現轉換為十六進製制及其以下的進製數。

7、測試結果:

圖1-1 轉化成二進位制數

圖1-2 轉化成五進製數

圖1-3 轉化成八進位制數

圖1-4 轉化成十二進位制數

圖1-5 轉化成十六進製制數

8、附錄:

源程式:

#include<>

#include<>

#define init_size 100儲存空間初始分配量

#define increasesize 10儲存空間分配增量

typedef structsqstack;

void initstack(sqstack &s)

構造乙個空棧

if(!儲存分配失敗 ,預設巨集定義 overflow為-2

}void gettop(sqstack &s,int &e)

若棧不為空,則用e返回s的棧頂元素

if(printf("這是乙個空的棧");

else

}void push(sqstack &s,int e)

插入元素e為新的棧頂元素

if(>= //棧滿,追加儲存空間

資料結構課程設計紙牌遊戲

攀枝花學院 學生課程設計 題目紙牌遊戲 學生姓名 李瓏學號 200810801029 所在院 系 計算機學院 專業 電腦科學與技術 班級08級2班 指導教師 李艷華職稱 助教 2010年 12月 27日 攀枝花學院教務處制 攀枝花學院本科學生課程設計任務書 課程設計 指導教師成績評定表 摘要資料結構...

電子拔河遊戲機設計數電課程設計

長沙學院 數電課程設計說明書 數字電子技術課程設計任務書 系 部 專業 指導教師 長沙學院課程設計鑑定表 目錄一.設計任務 4 1 設計內容 4 2 基本要求 4 二 原理框圖和總設計方案 5 1 原理框圖 5 2 設計方案 5 三 單元電路設計 6 1 單元電路功能 6 2 電路結構和元器件選擇 ...

數值方法課程設計

第1節經典四階龍格庫塔法解一階微分方程組3 1.1 演算法概要3 1.2 演算法流程圖3 1.3 程式除錯4 1.4 程式 4 第2節高斯列主元法解線性方程組6 2.1 演算法概要6 2.2 演算法流程圖6 2.3 程式除錯7 2.4 程式 8 第3節牛頓法解非線性方程組11 3.1 演算法概要11...