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