2023年12月14日發(作者:徒有其名)

實 驗 報 告
課程名稱:數據結構
題 目 :十進制轉換為二進制
班 級 :
學 號 :
姓 名 :
完成時間:2012年10月10日
1、實驗目的和要求
本次課程設計的題目是數制轉換程序,設計此題目主要目的在于加深對C語言課程理論與數據結構課程理論實踐方面的理解。通過編寫一定規模和難度的程序,進行一次全面的C語言編程訓練,掌握數據結構的思想,提高分析問題和解決問題的能力,并提高調試程序的能力,更深一步的掌握理論應用于實踐。
本次課程設計的主要任務是完成對數制轉換進行編程,要求用棧實現十進制到二進制的轉換,了解十進制轉換為二進制的原理,熟練對棧的基本操作,用棧的基本操作實現程序的效率化。
2、實驗內容
本課程設計主要解決完成數制轉化問題。完成功能如下:
1)任意給一個十進制的數;
2)完成十進制到二進制的數制轉換;
3)本課程設計使用數組解決,用棧實現。
3、算法基本思想
數制轉換的基本原理是:將一個十進制的數,轉換為二進制的數,此過程可以采用求余法進行,用這個十進制數作為被除數,用指定的數基作除數,連續求余,得出的余數依由個位到十位等的順序組成新數,即得指定數制的數。本次課程設計主要用了數組和棧兩種的方法來實現的。堆棧的主要應用就是可以實現:后進先出(Last-In/First-Out)。轉十進制的時候先得到是低位的數字,然后得到高位的數字,剛好使用堆棧可以把這個順序顛倒過來,每得到一個數字就把它壓棧,最后把所有的數字彈出,依次顯示出來。
4、算法描述
用棧實現十進制到二進制的轉換的程序為:
#include
#include
#define maxsize 100
typedef struct {
char data[maxsize];
int top;
}sqstack,*Stack;
Stack initstack()
{
Stack s;
s=(Stack)malloc(sizeof(sqstack));
s->top=-1;
return s;
}
int push(Stack s,char ch)
{
if(s->top>=maxsize)
return 0;
el
{
s->data[++s->top]=ch;
return 1;
}
}
int pop(Stack s,char *ch)
{
if(s->top==-1)
return 0;
el
{
*ch=s->data[s->top--];
return 1;
}
}
void Convert (int n, char str[], unsigned p)
{
Stack s;
int i=0;
s=initstack();
while(n)
{
if(n%p<10)
push(s,n%p+'0');
el
push(s,n%p+'A'-10); n=n/p;
}
while(s->top!=-1)
pop(s,&str[i++]);
str[i]='0';
}
void main()
{
int n;
char str[maxsize];
unsigned p=2;
printf("請輸入您需要轉換的十進制數據nn");
scanf("%d",&n);
Convert(n,str,p);
printf("轉換為二進制后的數為:n");
printf("%sn",str);
}
5、測試數據與運行結果
輸入十進制數據運行后的截圖為:
6、實驗總結
此次上機實驗,我不僅對棧的存儲等操作有了一定的認識,也對十進制到二進制的轉換有了深刻的理解,同時對編譯程序的算法思想有了新的認識,還讓我深刻的體會到了鏈表的重要性以及其應用的方便,并且對指針加深了印象,應用了書本中的算法思想,對我以后的編譯以及完成新的程序有很大的幫助。
本文發布于:2023-12-14 11:45:33,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/170252553341824.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:十進制轉化二進制實驗報告.doc
本文 PDF 下載地址:十進制轉化二進制實驗報告.pdf
| 留言與評論(共有 0 條評論) |