編號江西理工大學
資料結構課程設計報告
班級: 網路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...