版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計</b></p><p><b> 設(shè)計說明書</b></p><p> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計評閱書</p><p><b> 課程設(shè)計任務(wù)書</b></p><p> 天災(zāi)元年 —近衛(wèi)戊年 第 二 學(xué)期</p>
2、<p> 課程設(shè)計名稱: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 </p><p> 設(shè)計題目: 進制轉(zhuǎn)換的實現(xiàn) </p><p> 設(shè)計依據(jù)、要求及主要內(nèi)
3、容(可另加附頁):</p><p> 進制數(shù)制是人們利用符號進行計數(shù)的科學(xué)方法。數(shù)制有很多種,在計算機中常用的數(shù)制有:十進制,二進制、八進制和十六進制。十六進制數(shù)有兩個基本特點:它由十六個字符0~9以及A,B,C,D,E,F(xiàn)組成(它們分別表示十進制數(shù)0~15),十六進制數(shù)運算規(guī)律是逢十六進一,例如:十六進制數(shù)4AC8可寫成(4AC8)16,或?qū)懗?AC8H。</p><p><b&
4、gt; 要求: </b></p><p> (1)輸入一個十進制數(shù)N,將它轉(zhuǎn)換成R進制數(shù)輸出,并可以進行逆轉(zhuǎn)換。</p><p> ?。?)輸入數(shù)據(jù)包含多個測試實例,每個測試實例包含兩個整數(shù)N(32位整數(shù))和R(2<=R<=16, R<>10)。</p><p> ?。?)為每個測試實例輸出轉(zhuǎn)換后的數(shù),每個輸出占一行。如
5、果R大于10,則對應(yīng)的數(shù)字規(guī)則參考16進制(比如,10用A表示,等等)。</p><p><b> (4)界面友好。</b></p><p> 指導(dǎo)教師(簽字): 教研室主任(簽字): </p><p> 批準日期: 年 月 日</p
6、><p><b> 摘 要</b></p><p> 由于數(shù)制計算和不同數(shù)制之間轉(zhuǎn)換的需要,設(shè)計了一個10進制轉(zhuǎn)換其它進制(36進制以內(nèi))及逆轉(zhuǎn)換的軟件,該軟件具有簡單的將10進制數(shù)轉(zhuǎn)換成2、8、16進制數(shù)以及較復(fù)雜的高進制數(shù)的轉(zhuǎn)換和逆轉(zhuǎn)功能。本軟件采用C語言編寫以VC++作為軟件開發(fā)環(huán)境,采用順序棧存儲方式來存儲運算中的數(shù)位,借助棧后進先出的特點,易于結(jié)果輸出。操
7、作簡單,界面清晰,易于為用戶所接受。</p><p> 關(guān)鍵詞:進制轉(zhuǎn)換;順序棧;逆轉(zhuǎn)換</p><p><b> 目 錄</b></p><p><b> 1 課題描述1</b></p><p> 2 問題分析和任務(wù)定義2</p><p><b&g
8、t; 4 詳細設(shè)計7</b></p><p><b> 5 程序編碼8</b></p><p> 6 程序調(diào)試與測試13</p><p><b> 7 結(jié)果分析15</b></p><p><b> 8 總結(jié)16</b></p>&
9、lt;p><b> 參考文獻17</b></p><p><b> 1 課題描述</b></p><p> 數(shù)制有很多種,在計算機中常用的數(shù)制有:十進制,二進制、八進制和十六進制。十六進制數(shù)有兩個基本特點:它由十六個字符0~9以及A,B,C,D,E,F(xiàn)組成(它們分別表示十進制數(shù)0~15),十六進制數(shù)運算規(guī)律是逢十六進一,例如:十六進
10、制數(shù)4AC8可寫成(4AC8)16,或?qū)懗?AC8H。更大一些的數(shù)制則擴展十六進制未用的其他大寫字母。</p><p> 順序棧是順序存儲結(jié)構(gòu)的棧,是利用一組地址連續(xù)的存儲單元依次存放自棧底到棧頂?shù)臄?shù)據(jù)元素。同時附設(shè)棧頂指針top和?;羔榖ase,來方便棧內(nèi)數(shù)據(jù)元素的存取和棧的擴充。</p><p> 2 問題分析和任務(wù)定義</p><p><b>
11、 問題分析:</b></p><p> 編寫進制轉(zhuǎn)換及其逆轉(zhuǎn),其算法過程恰好是結(jié)果的逆序,因此建立一個順序棧將計算過程中得到的數(shù)位順序進棧,則按出棧順序就會輸出對應(yīng)的轉(zhuǎn)換結(jié)果。逆轉(zhuǎn)程序借助字符數(shù)組按順序?qū)⒚總€數(shù)位轉(zhuǎn)換成十進制數(shù)后求和,得到逆轉(zhuǎn)結(jié)果</p><p> 例如:11轉(zhuǎn)換成二進制數(shù)</p><p> 11%2=1; 11/2=5;1入
12、棧;</p><p> 5%2=1; 5/2=2;1入棧;</p><p> 2%2=0; 2/2=0;0入棧;</p><p><b> 被除數(shù)不為0;</b></p><p> 按順序出棧,得到結(jié)果為110;</p><p><b> 任務(wù)定義:</b&g
13、t;</p><p><b> 1)畫出流程圖;</b></p><p> 2)任意建立一個容量為20個棧元素的空棧;</p><p> 3)將十進制數(shù)與要轉(zhuǎn)進制先求余,將余數(shù)順序入棧;</p><p> 4)闡明測試方法,寫出完整的運行結(jié)果;</p><p> 5)撰寫課程設(shè)計說明書。
14、</p><p><b> 3 邏輯設(shè)計</b></p><p> (1)ADT Stack{</p><p> 數(shù)據(jù)對象:D={ai | ai ∈ElemSet,i=1,2,…,n, n≥0 }</p><p> 數(shù)據(jù)關(guān)系:R1={ < ai-1, ai >| ai -1, ai∈D,i=2,…,
15、n}</p><p><b> 基本操作:</b></p><p> Inistack(&S)</p><p> 操作結(jié)果:構(gòu)造一個空棧S。</p><p> stackEmpty(&S)</p><p> 初始條件:棧S已存在。</p><p>
16、 操作結(jié)果:判斷棧S是否為空,若為空,則返回1;否則返回0.</p><p> push(&S,x) </p><p> 初始條件:棧S已存在。</p><p> 操作結(jié)果:插入元素x為新的棧頂元素。</p><p> Pop(&S。&e) </p><p> 初始條件:棧S已存在
17、且非空。</p><p> 操作結(jié)果:刪除S的棧頂元素,并用y返回其值。</p><p> }ADT Stack</p><p> (2)主函數(shù)流程圖如圖3.2所示</p><p> 圖3.1 創(chuàng)建主函數(shù)流程圖</p><p> ?。?)十進制轉(zhuǎn)換其他進制數(shù)流程圖如圖3.3所示</p><p
18、> 圖3.2十進制轉(zhuǎn)換其他進制數(shù)算法流程圖</p><p> ?。?)其他進制數(shù)轉(zhuǎn)換十進制數(shù)流程圖如圖3.4所示</p><p> 圖3.3倒序輸出算法流程圖</p><p><b> 4 詳細設(shè)計</b></p><p> 本程序主要有三個算法:</p><p> 一、十進制整數(shù)
19、轉(zhuǎn)換其他進制數(shù),其主要思路為:</p><p> 例如:11轉(zhuǎn)換成二進制數(shù)</p><p> 11%2=1; 11/2=5;</p><p> 5%2=1; 5/2=2;</p><p> 2%2=0; 2/2=0;</p><p><b> 被除數(shù)不為0;</b><
20、;/p><p><b> 轉(zhuǎn)換結(jié)果為110;</b></p><p> 二、十進制小數(shù)轉(zhuǎn)換其他進制數(shù),其主要思路為:</p><p> 例如:0.125轉(zhuǎn)換成二進制小數(shù)</p><p> 0.125*2=0.25;取結(jié)果的整數(shù)為0;</p><p> 0.25*2=0.5;取結(jié)果的整數(shù)為0;
21、</p><p> 0.5*2=1.0;取結(jié)果的整數(shù)為1;</p><p><b> 小數(shù)部分不為0;</b></p><p> 轉(zhuǎn)換結(jié)果為0.001;</p><p> 三、其他數(shù)制轉(zhuǎn)換十進制數(shù),其主要思路為:</p><p> 例如:二進制數(shù)10.1轉(zhuǎn)換成十進制數(shù)</p>
22、<p><b> 1*=2;</b></p><p><b> 0*=1;</b></p><p><b> 1*=0.5;</b></p><p> 逆轉(zhuǎn)數(shù)字存儲在數(shù)組中,最后的結(jié)束符’\0’,為標志。</p><p> 轉(zhuǎn)換結(jié)果為2+1+0.5=3.
23、5;</p><p><b> 5 程序編碼</b></p><p> #include<stdio.h></p><p> #include<math.h></p><p> #include<stdlib.h></p><p> #define S
24、TACK_INIT_SIZE 20</p><p> #define STACKINCREMENT 10</p><p> typedef int SElemType;</p><p> typedef struct{</p><p> SElemType *base,*top;</p><p> int s
25、tacksize;</p><p><b> }SqStack;</b></p><p> int InitStack(SqStack &S){</p><p> S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));</p><p>
26、 if(!S.base)exit(0);</p><p> S.top=S.base;</p><p> S.stacksize=STACK_INIT_SIZE;</p><p><b> return 1;</b></p><p><b> }</b></p><p&g
27、t; int Push(SqStack &S,SElemType e){</p><p> if(S.top-S.base>=S.stacksize){</p><p> S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));</p><p
28、> if(!S.base)exit(0);</p><p> S.top=S.base+S.stacksize;</p><p> S.stacksize+=STACKINCREMENT;</p><p><b> }</b></p><p> *S.top++=e;</p><p&g
29、t;<b> return 1;</b></p><p><b> }</b></p><p> int Pop(SqStack &S,SElemType &e){</p><p> if(S.top==S.base)return 0;</p><p> e=*--S.to
30、p;</p><p><b> return 1;</b></p><p><b> }</b></p><p> int StackEmty(SqStack S){</p><p> if(S.top==S.base)return 1;</p><p> else
31、 return 0;</p><p><b> }</b></p><p> void XSZZ(double n,int T){</p><p><b> int i=0;</b></p><p><b> double a;</b></p><p
32、> if(n==0.0)printf("00000");</p><p> while(n!=0.0)</p><p><b> {</b></p><p><b> a=T*n;</b></p><p> n=a-(int)a;</p><p
33、><b> if(a>=10)</b></p><p><b> {</b></p><p> printf("%c",((int)a-10+'A'));</p><p><b> i++;</b></p><p><
34、;b> }</b></p><p><b> else{ </b></p><p> printf("%d",((int)a>0?(int)a:0));</p><p><b> i++;</b></p><p><b> }</
35、b></p><p> if(i==5)break;</p><p><b> }</b></p><p><b> }</b></p><p><b> int NZ(){</b></p><p> int i=0,j,T,k=0;&l
36、t;/p><p> double sum=0;</p><p> char a[20],X;</p><p> getchar();</p><p> printf("輸入轉(zhuǎn)換數(shù)");</p><p> while((a[i]=getchar())!='\n'){</p&
37、gt;<p> if((a[i]<='9'&&a[i]>='0')||(a[i]<='Z'&&a[i]>='A')||a[i]=='.');</p><p> else {break;}</p><p> if(a[i]=='.
38、')k=i;</p><p><b> i++;}</b></p><p><b> k=k?k:i;</b></p><p> if(a[i]!='\n'){ </p><p> while(getchar()!='\n');</p>
39、<p> printf("輸入有誤");</p><p> return 0;}</p><p> a[i]='\0';</p><p> a[k]='\0';</p><p> printf("輸入轉(zhuǎn)換數(shù)的進制");</p><p
40、> scanf("%d%c",&T,&X);</p><p> if((!(T>1&&T<36))||X!='\n'){</p><p> while(getchar()!='\n');</p><p> printf("輸入有誤");p
41、rintf("sdf %c",X);</p><p> return 0;}</p><p> for(j=0;j<k;j++)</p><p><b> {</b></p><p> if(((a[j]-'0'>=T)&&(a[j]<=
42、9;9'))||((a[j]-'A'+10>=T)&&(a[j]>'9')))</p><p><b> {</b></p><p> printf("輸入有誤!");return 1;</p><p><b> }</b><
43、;/p><p> if(a[j]>='A')</p><p> sum+=((a[j]-'A'+10)*pow(T,k-j-1));</p><p><b> else</b></p><p> sum+=((a[j]-'0')*pow(T,k-j-1));<
44、;/p><p><b> }</b></p><p> for(j=k+1;j<i;j++)</p><p><b> {</b></p><p> if(((a[j]-'0'>=T)&&(a[j]<='9'))||((a[j]-
45、'A'+10>=T)&&(a[j]>'9')))</p><p><b> {</b></p><p> printf("輸入有誤!");return 1;</p><p><b> }</b></p><p>
46、 if(a[j]>='A')</p><p> sum+=((a[j]-'A'+10)*pow(T,k-j));</p><p><b> else</b></p><p> sum+=((a[j]-'0')*pow(T,k-j));</p><p><b
47、> }</b></p><p> if(!(((a[j]-'0'>=T)&&(a[j]<='9'))||((a[j]-'A'+10>=T)&&(a[j]>'9'))))printf("結(jié)果為%f",sum);</p><p>&l
48、t;b> return 1;</b></p><p><b> }</b></p><p><b> int ZZ(){</b></p><p> int N,T,i=0,a;</p><p> double Z,M;</p><p> char
49、 X[10];</p><p> SElemType e;</p><p> SqStack S;</p><p> InitStack(S);</p><p> printf("輸入轉(zhuǎn)換數(shù):");</p><p> scanf("%lf%c",&Z,&
50、X[0]);</p><p> if(X[0]!='\n'){ while(X[i]!='\n'){</p><p><b> i++;</b></p><p> printf("輸入有誤!");return 1;}</p><p> printf("
51、輸入轉(zhuǎn)換進制:");</p><p> scanf("%d%c",&T,&X[0]);</p><p> if(T<36&&T>1&&X[0]=='\n')</p><p> {printf("%c",X[0]);</p>
52、<p><b> N=(int)Z;</b></p><p><b> M=Z-N;</b></p><p><b> while(N)</b></p><p><b> {</b></p><p><b> if(T>
53、;10)</b></p><p><b> {</b></p><p><b> a=N%T;</b></p><p><b> if(a>=10)</b></p><p><b> {</b></p><p&
54、gt; a=a-10+'A';</p><p> Push(S,a);</p><p><b> }</b></p><p> else Push(S,N%T);</p><p><b> }</b></p><p> else Push(S,N%
55、T);</p><p><b> N=N/T;</b></p><p><b> }</b></p><p> printf("結(jié)果為:");</p><p> if(StackEmty(S))printf("0");</p><p
56、> while(!StackEmty(S))</p><p><b> {</b></p><p><b> Pop(S,e);</b></p><p> if(e>=10) printf("%c",e);</p><p> else printf(&quo
57、t;%d",e);</p><p><b> }</b></p><p> printf(".");</p><p> XSZZ(M,T);</p><p><b> }</b></p><p><b> else</b
58、></p><p> {printf("輸入有誤\n");i=0;</p><p> while(X[i]!='\n'){</p><p><b> i++;</b></p><p> scanf("%c",&X[i]);}</p>
59、<p><b> }}</b></p><p><b> main()</b></p><p><b> {</b></p><p> int choice;</p><p><b> char X;</b></p>
60、<p> do{printf("Press1:十進制轉(zhuǎn)換其他進制數(shù)\nPress2:其他進制數(shù)轉(zhuǎn)換十進制數(shù)\n");</p><p> scanf("%d",&choice);</p><p> switch(choice){</p><p> case 1: ZZ();break;</p>
61、;<p> case 2:NZ();break;</p><p> default:printf("輸入有誤!");</p><p><b> }</b></p><p> printf("\n continue ? y/n\n");</p><p> sc
62、anf("\t%c",&X);</p><p> while(X!='n'&&X!='y'){</p><p> printf("輸入有誤!\n請重新輸入:");</p><p> scanf("\t%c",&X);</p>
63、<p><b> }</b></p><p> }while(X=='y');</p><p><b> return 0;</b></p><p><b> }</b></p><p><b> 6 程序調(diào)試與測試</b&
64、gt;</p><p> (1)輸入十進制14.25轉(zhuǎn)換成十六進制數(shù)為E.4.</p><p> 圖6.1十進制轉(zhuǎn)換其他進制數(shù)運行圖</p><p> (2)輸入二進制1.1轉(zhuǎn)換為十進制1.5</p><p> 圖6.2其他進制轉(zhuǎn)換十進制數(shù)運行圖</p><p> ?。?)輸入數(shù)字字符混合體(非法字符)程序返回
65、錯誤提示</p><p> 圖6.3程序健壯性測試</p><p> ?。?)程序調(diào)試過程修改:在不同進制數(shù)的互轉(zhuǎn)換過程中小數(shù)部分尤為不好處理,例如:三進制數(shù)2.1整數(shù)部分2無需轉(zhuǎn)換,小數(shù)0.1轉(zhuǎn)換結(jié)果為1/3純循環(huán)小數(shù)。</p><p> 七進制數(shù)6.3、3.1、2.135,這些小數(shù)部分根本無法轉(zhuǎn)換成十進制整數(shù),這里不一一贅述,故設(shè)定轉(zhuǎn)換結(jié)果保留五位小數(shù)。&l
66、t;/p><p><b> 7 結(jié)果分析</b></p><p> 在設(shè)計的過程中遇到了許多問題,并最終得到解決,其分析過程如下:</p><p> (1)考慮到本程序轉(zhuǎn)換的數(shù)字對象并不是天文數(shù)字,棧操作定義中,初始化??臻g為20(存儲20位數(shù)字),但也可能出現(xiàn)空間不足。解決的辦法是當空間不足時自動進行擴充。</p><p
67、> ?。?)程序的健壯性問題。數(shù)據(jù)通過一定的形式讀入地。當輸入格式有誤時就程序無法計算時,返回輸入錯誤重新輸入。</p><p> (3)程序的循環(huán)操作問題。當輸入有誤時必須把輸入的錯誤字符讀入,再進行下次操作。</p><p> 時間復(fù)雜度T(n)=O(n);</p><p> 空間復(fù)雜度S(n)=O(n);</p><p>&
68、lt;b> 8 總結(jié)</b></p><p> 本程序?qū)崿F(xiàn)了數(shù)制轉(zhuǎn)換及其逆轉(zhuǎn)換功能,具有強大的健壯性和容錯能力。順序棧只參與其中的十進制整數(shù)轉(zhuǎn)換部分,小數(shù)轉(zhuǎn)換部分的算法與整數(shù)部分不同所以另成函數(shù)體。逆轉(zhuǎn)換借助數(shù)組讀入數(shù)位進行轉(zhuǎn)換,其整數(shù)和小數(shù)部分算法相同故屬一個函數(shù)。程序改進最多的要屬健壯性部分,為此加入了好多讀取非法輸入部分。在整整兩個星期的日子里,可以學(xué)到很多很多的的東西,尤其是漫長的改
69、錯部分!不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。</p><p><b> 參考文獻</b></p><p> [1] 嚴蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:清華大學(xué)出版社,2002</p><p> [2] 譚浩強.C程序設(shè)計[M]. 北京:清華大學(xué)出版社,2005</p>&
70、lt;p> [3] 李建忠.大學(xué)計算機基礎(chǔ)[M].西安:西北大學(xué)出版社,2005</p><p> [4] 何欽銘,顏暉. C語言程序設(shè)計[M].北京:高等教育出版社,2008 </p><p> [5] 謝俊屏. 大學(xué)計算機基礎(chǔ)實驗教程[M]. 西安:西北大學(xué)出版社,2005 </p><p><b> 附代碼:</b><
71、/p><p> #include<stdio.h></p><p> #include<math.h></p><p> #include<stdlib.h></p><p> #define STACK_INIT_SIZE 100</p><p> #define STACK
72、INCREMENT 10</p><p> typedef int SElemType;</p><p> typedef struct{</p><p> SElemType *base,*top;</p><p> int stacksize;</p><p><b> }SqStack;<
73、;/b></p><p> int InitStack(SqStack &S){</p><p> S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));</p><p> if(!S.base)exit(0);</p><p> S.top=S.ba
74、se;</p><p> S.stacksize=STACK_INIT_SIZE;</p><p><b> return 1;</b></p><p><b> }</b></p><p> int Push(SqStack &S,SElemType e){</p>
75、<p> if(S.top-S.base>=S.stacksize){</p><p> S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));</p><p> if(!S.base)exit(0);</p><p> S.top
76、=S.base+S.stacksize;</p><p> S.stacksize+=STACKINCREMENT;</p><p><b> }</b></p><p> *S.top++=e;</p><p><b> return 1;</b></p><p>
77、<b> }</b></p><p> int Pop(SqStack &S,SElemType &e){</p><p> if(S.top==S.base)return 0;</p><p> e=*--S.top;</p><p><b> return 1;</b>
78、</p><p><b> }</b></p><p> int StackEmty(SqStack S){</p><p> if(S.top==S.base)return 1;</p><p> else return 0;</p><p><b> }</b>
79、</p><p> void XSZZ(double n,int T){</p><p><b> int i=0;</b></p><p><b> double a;</b></p><p> if(n==0.0)printf("00000");</p>
80、<p> while(n!=0.0)</p><p><b> {</b></p><p><b> a=T*n;</b></p><p> n=a-(int)a;</p><p><b> if(a>=10)</b></p><
81、p><b> {</b></p><p> printf("%c",((int)a-10+'A'));</p><p><b> i++;</b></p><p><b> }</b></p><p><b> el
82、se{ </b></p><p> printf("%d",((int)a>0?(int)a:0));</p><p><b> i++;</b></p><p><b> }</b></p><p> if(i==5)break;</p>
83、<p><b> }</b></p><p><b> }</b></p><p><b> int NZ(){</b></p><p> int i=0,j,T,k=0;</p><p> double sum=0;</p><p&g
84、t; char a[20],X;</p><p> getchar();</p><p> printf("輸入轉(zhuǎn)換數(shù)");</p><p> while((a[i]=getchar())!='\n'){</p><p> if((a[i]<='9'&&a[i
85、]>='0')||(a[i]<='Z'&&a[i]>='A')||a[i]=='.');</p><p> else {break;}</p><p> if(a[i]=='.')k=i;</p><p><b> i++;}</b
86、></p><p><b> k=k?k:i;</b></p><p> if(a[i]!='\n'){ </p><p> while(getchar()!='\n');</p><p> printf("輸入有誤");</p><p
87、> return 0;}</p><p> a[i]='\0';</p><p> a[k]='\0';</p><p> printf("輸入轉(zhuǎn)換數(shù)的進制");</p><p> scanf("%d%c",&T,&X);</p>
88、;<p> if((!(T>1&&T<36))||X!='\n'){</p><p> while(getchar()!='\n');</p><p> printf("輸入有誤");printf("sdf %c",X);</p><p> re
89、turn 0;}</p><p> for(j=0;j<k;j++)</p><p><b> {</b></p><p> if(((a[j]-'0'>=T)&&(a[j]<='9'))||((a[j]-'A'+10>=T)&&(a[
90、j]>'9')))</p><p><b> {</b></p><p> printf("輸入有誤!");return 1;</p><p><b> }</b></p><p> if(a[j]>='A')</p>
91、;<p> sum+=((a[j]-'A'+10)*pow(T,k-j-1));</p><p><b> else</b></p><p> sum+=((a[j]-'0')*pow(T,k-j-1));</p><p><b> }</b></p>&
92、lt;p> for(j=k+1;j<i;j++)</p><p><b> {</b></p><p> if(((a[j]-'0'>=T)&&(a[j]<='9'))||((a[j]-'A'+10>=T)&&(a[j]>'9'))
93、)</p><p><b> {</b></p><p> printf("輸入有誤!");return 1;</p><p><b> }</b></p><p> if(a[j]>='A')</p><p> sum+=
94、((a[j]-'A'+10)*pow(T,k-j));</p><p><b> else</b></p><p> sum+=((a[j]-'0')*pow(T,k-j));</p><p><b> }</b></p><p> if(!(((a[j]-&
95、#39;0'>=T)&&(a[j]<='9'))||((a[j]-'A'+10>=T)&&(a[j]>'9'))))printf("結(jié)果為%f",sum);</p><p><b> return 1;</b></p><p><
96、b> }</b></p><p><b> int ZZ(){</b></p><p> int N,T,i=0,a;</p><p> double Z,M;</p><p> char X[10];</p><p> SElemType e;</p>
97、<p> SqStack S;</p><p> InitStack(S);</p><p> printf("輸入轉(zhuǎn)換數(shù):");</p><p> scanf("%lf%c",&Z,&X[0]);</p><p> if(X[0]!='\n'){p
98、rintf("輸入有誤!");while(X[i]!='\n'){</p><p><b> i++;</b></p><p> scanf("%c",&X[i]);}return 1;}</p><p> printf("輸入轉(zhuǎn)換進制:");</p
99、><p> scanf("%d%c",&T,&X[0]);</p><p> if(T<36&&T>1&&X[0]=='\n')</p><p> {printf("%c",X[0]);</p><p><b>
100、N=(int)Z;</b></p><p><b> M=Z-N;</b></p><p><b> while(N)</b></p><p><b> {</b></p><p><b> if(T>10)</b></p&
101、gt;<p><b> {</b></p><p><b> a=N%T;</b></p><p><b> if(a>=10)</b></p><p><b> {</b></p><p> a=a-10+'A
102、9;;</p><p> Push(S,a);</p><p><b> }</b></p><p> else Push(S,N%T);</p><p><b> }</b></p><p> else Push(S,N%T);</p><p&
103、gt;<b> N=N/T;</b></p><p><b> }</b></p><p> printf("結(jié)果為:");</p><p> if(StackEmty(S))printf("0");</p><p> while(!StackEmt
104、y(S))</p><p><b> {</b></p><p><b> Pop(S,e);</b></p><p> if(e>=10) printf("%c",e);</p><p> else printf("%d",e);</p&
105、gt;<p><b> }</b></p><p> printf(".");</p><p> XSZZ(M,T);</p><p><b> }</b></p><p><b> else</b></p><p
106、> {printf("輸入有誤\n");i=0;</p><p> while(X[i]!='\n'){</p><p><b> i++;</b></p><p> scanf("%c",&X[i]);}</p><p><b>
107、 }}</b></p><p><b> main()</b></p><p><b> {</b></p><p> int choice;</p><p><b> char X;</b></p><p> do{printf(
108、"Press1:十進制轉(zhuǎn)換其他進制數(shù)\nPress2:其他進制數(shù)轉(zhuǎn)換十進制數(shù)\n");</p><p> scanf("%d",&choice);</p><p> switch(choice){</p><p> case 1: ZZ();break;</p><p> case 2:
109、NZ();break;</p><p> default:printf("輸入有誤!");</p><p><b> }</b></p><p> printf("\n continue ? y/n\n");</p><p> scanf("\t%c",
110、&X);</p><p> while(X!='n'&&X!='y'){</p><p> printf("輸入有誤!\n請重新輸入:");</p><p> scanf("\t%c",&X);</p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計說明書--進制轉(zhuǎn)換的實現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---供貨信息管理_十進制到n進制的轉(zhuǎn)換
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--數(shù)制轉(zhuǎn)換問題
- 數(shù)制轉(zhuǎn)換課程設(shè)計--進制轉(zhuǎn)換的實現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----huffman編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--數(shù)組的存儲格式轉(zhuǎn)換
- 課程設(shè)計--進制轉(zhuǎn)換
- 課程設(shè)計--進制轉(zhuǎn)換
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
評論
0/150
提交評論