版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)</b></p><p><b> 設(shè)計(jì)說(shuō)明書</b></p><p> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)評(píng)閱書</p><p><b> 課程設(shè)計(jì)任務(wù)書</b></p><p> 天災(zāi)元年 —近衛(wèi)戊年 第 二 學(xué)期</p>
2、<p> 課程設(shè)計(jì)名稱: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) </p><p> 設(shè)計(jì)題目: 進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn) </p><p> 設(shè)計(jì)依據(jù)、要求及主要內(nèi)
3、容(可另加附頁(yè)):</p><p> 進(jìn)制數(shù)制是人們利用符號(hào)進(jìn)行計(jì)數(shù)的科學(xué)方法。數(shù)制有很多種,在計(jì)算機(jī)中常用的數(shù)制有:十進(jìn)制,二進(jìn)制、八進(jìn)制和十六進(jìn)制。十六進(jìn)制數(shù)有兩個(gè)基本特點(diǎn):它由十六個(gè)字符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。</p><p><b&
4、gt; 要求: </b></p><p> (1)輸入一個(gè)十進(jìn)制數(shù)N,將它轉(zhuǎn)換成R進(jìn)制數(shù)輸出,并可以進(jìn)行逆轉(zhuǎn)換。</p><p> ?。?)輸入數(shù)據(jù)包含多個(gè)測(cè)試實(shí)例,每個(gè)測(cè)試實(shí)例包含兩個(gè)整數(shù)N(32位整數(shù))和R(2<=R<=16, R<>10)。</p><p> (3)為每個(gè)測(cè)試實(shí)例輸出轉(zhuǎn)換后的數(shù),每個(gè)輸出占一行。如
5、果R大于10,則對(duì)應(yīng)的數(shù)字規(guī)則參考16進(jìn)制(比如,10用A表示,等等)。</p><p><b> ?。?)界面友好。</b></p><p> 指導(dǎo)教師(簽字): 教研室主任(簽字): </p><p> 批準(zhǔn)日期: 年 月 日</p
6、><p><b> 摘 要</b></p><p> 由于數(shù)制計(jì)算和不同數(shù)制之間轉(zhuǎn)換的需要,設(shè)計(jì)了一個(gè)10進(jìn)制轉(zhuǎn)換其它進(jìn)制(36進(jìn)制以內(nèi))及逆轉(zhuǎn)換的軟件,該軟件具有簡(jiǎn)單的將10進(jìn)制數(shù)轉(zhuǎn)換成2、8、16進(jìn)制數(shù)以及較復(fù)雜的高進(jìn)制數(shù)的轉(zhuǎn)換和逆轉(zhuǎn)功能。本軟件采用C語(yǔ)言編寫以VC++作為軟件開(kāi)發(fā)環(huán)境,采用順序棧存儲(chǔ)方式來(lái)存儲(chǔ)運(yùn)算中的數(shù)位,借助棧后進(jìn)先出的特點(diǎn),易于結(jié)果輸出。操
7、作簡(jiǎn)單,界面清晰,易于為用戶所接受。</p><p> 關(guān)鍵詞:進(jìn)制轉(zhuǎn)換;順序棧;逆轉(zhuǎn)換</p><p><b> 目 錄</b></p><p><b> 1 課題描述1</b></p><p> 2 問(wèn)題分析和任務(wù)定義2</p><p><b&g
8、t; 4 詳細(xì)設(shè)計(jì)7</b></p><p><b> 5 程序編碼8</b></p><p> 6 程序調(diào)試與測(cè)試13</p><p><b> 7 結(jié)果分析15</b></p><p><b> 8 總結(jié)16</b></p>&
9、lt;p><b> 參考文獻(xiàn)17</b></p><p><b> 1 課題描述</b></p><p> 數(shù)制有很多種,在計(jì)算機(jī)中常用的數(shù)制有:十進(jìn)制,二進(jìn)制、八進(jìn)制和十六進(jìn)制。十六進(jìn)制數(shù)有兩個(gè)基本特點(diǎn):它由十六個(gè)字符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)
10、制數(shù)4AC8可寫成(4AC8)16,或?qū)懗?AC8H。更大一些的數(shù)制則擴(kuò)展十六進(jìn)制未用的其他大寫字母。</p><p> 順序棧是順序存儲(chǔ)結(jié)構(gòu)的棧,是利用一組地址連續(xù)的存儲(chǔ)單元依次存放自棧底到棧頂?shù)臄?shù)據(jù)元素。同時(shí)附設(shè)棧頂指針top和?;羔榖ase,來(lái)方便棧內(nèi)數(shù)據(jù)元素的存取和棧的擴(kuò)充。</p><p> 2 問(wèn)題分析和任務(wù)定義</p><p><b>
11、 問(wèn)題分析:</b></p><p> 編寫進(jìn)制轉(zhuǎn)換及其逆轉(zhuǎn),其算法過(guò)程恰好是結(jié)果的逆序,因此建立一個(gè)順序棧將計(jì)算過(guò)程中得到的數(shù)位順序進(jìn)棧,則按出棧順序就會(huì)輸出對(duì)應(yīng)的轉(zhuǎn)換結(jié)果。逆轉(zhuǎn)程序借助字符數(shù)組按順序?qū)⒚總€(gè)數(shù)位轉(zhuǎn)換成十進(jìn)制數(shù)后求和,得到逆轉(zhuǎn)結(jié)果</p><p> 例如:11轉(zhuǎn)換成二進(jì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)任意建立一個(gè)容量為20個(gè)棧元素的空棧;</p><p> 3)將十進(jìn)制數(shù)與要轉(zhuǎn)進(jìn)制先求余,將余數(shù)順序入棧;</p><p> 4)闡明測(cè)試方法,寫出完整的運(yùn)行結(jié)果;</p><p> 5)撰寫課程設(shè)計(jì)說(shuō)明書。
14、</p><p><b> 3 邏輯設(shè)計(jì)</b></p><p> (1)ADT Stack{</p><p> 數(shù)據(jù)對(duì)象: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)造一個(gè)空棧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> ?。?)主函數(shù)流程圖如圖3.2所示</p><p> 圖3.1 創(chuàng)建主函數(shù)流程圖</p><p> (3)十進(jìn)制轉(zhuǎn)換其他進(jìn)制數(shù)流程圖如圖3.3所示</p><p
18、> 圖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è)計(jì)</b></p><p> 本程序主要有三個(gè)算法:</p><p> 一、十進(jìn)制整數(shù)
19、轉(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; 2/2=0;</p><p><b> 被除數(shù)不為0;</b><
20、;/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*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)換十進(jìn)制數(shù),其主要思路為:</p><p> 例如:二進(jìn)制數(shù)10.1轉(zhuǎn)換成十進(jì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ù)字存儲(chǔ)在數(shù)組中,最后的結(jié)束符’\0’,為標(biāo)志。</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ù)的進(jìn)制");</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)換進(jì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:十進(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><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請(qǐng)重新輸入:");</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)試與測(cè)試</b&
64、gt;</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.2其他進(jìn)制轉(zhuǎn)換十進(jìn)制數(shù)運(yùn)行圖</p><p> ?。?)輸入數(shù)字字符混合體(非法字符)程序返回
65、錯(cuò)誤提示</p><p> 圖6.3程序健壯性測(cè)試</p><p> ?。?)程序調(diào)試過(guò)程修改:在不同進(jìn)制數(shù)的互轉(zhuǎn)換過(guò)程中小數(shù)部分尤為不好處理,例如:三進(jìn)制數(shù)2.1整數(shù)部分2無(wú)需轉(zhuǎn)換,小數(shù)0.1轉(zhuǎn)換結(jié)果為1/3純循環(huán)小數(shù)。</p><p> 七進(jìn)制數(shù)6.3、3.1、2.135,這些小數(shù)部分根本無(wú)法轉(zhuǎn)換成十進(jìn)制整數(shù),這里不一一贅述,故設(shè)定轉(zhuǎn)換結(jié)果保留五位小數(shù)。&l
66、t;/p><p><b> 7 結(jié)果分析</b></p><p> 在設(shè)計(jì)的過(guò)程中遇到了許多問(wèn)題,并最終得到解決,其分析過(guò)程如下:</p><p> ?。?)考慮到本程序轉(zhuǎn)換的數(shù)字對(duì)象并不是天文數(shù)字,棧操作定義中,初始化??臻g為20(存儲(chǔ)20位數(shù)字),但也可能出現(xiàn)空間不足。解決的辦法是當(dāng)空間不足時(shí)自動(dòng)進(jìn)行擴(kuò)充。</p><p
67、> ?。?)程序的健壯性問(wèn)題。數(shù)據(jù)通過(guò)一定的形式讀入地。當(dāng)輸入格式有誤時(shí)就程序無(wú)法計(jì)算時(shí),返回輸入錯(cuò)誤重新輸入。</p><p> (3)程序的循環(huán)操作問(wèn)題。當(dāng)輸入有誤時(shí)必須把輸入的錯(cuò)誤字符讀入,再進(jìn)行下次操作。</p><p> 時(shí)間復(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)換功能,具有強(qiáng)大的健壯性和容錯(cuò)能力。順序棧只參與其中的十進(jìn)制整數(shù)轉(zhuǎn)換部分,小數(shù)轉(zhuǎn)換部分的算法與整數(shù)部分不同所以另成函數(shù)體。逆轉(zhuǎn)換借助數(shù)組讀入數(shù)位進(jìn)行轉(zhuǎn)換,其整數(shù)和小數(shù)部分算法相同故屬一個(gè)函數(shù)。程序改進(jìn)最多的要屬健壯性部分,為此加入了好多讀取非法輸入部分。在整整兩個(gè)星期的日子里,可以學(xué)到很多很多的的東西,尤其是漫長(zhǎng)的改
69、錯(cuò)部分!不僅可以鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書本上所沒(méi)有學(xué)到過(guò)的知識(shí)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)[M].北京:清華大學(xué)出版社,2002</p><p> [2] 譚浩強(qiáng).C程序設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2005</p>&
70、lt;p> [3] 李建忠.大學(xué)計(jì)算機(jī)基礎(chǔ)[M].西安:西北大學(xué)出版社,2005</p><p> [4] 何欽銘,顏暉. C語(yǔ)言程序設(shè)計(jì)[M].北京:高等教育出版社,2008 </p><p> [5] 謝俊屏. 大學(xué)計(jì)算機(jī)基礎(chǔ)實(shí)驗(yàn)教程[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ù)的進(jìn)制");</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)換進(jì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:十進(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><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請(qǐng)重新輸入:");</p><p> scanf("\t%c",&X);</p><p><b>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)說(shuō)明書--進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---供貨信息管理_十進(jìn)制到n進(jìn)制的轉(zhuǎn)換
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)制轉(zhuǎn)換問(wèn)題
- 數(shù)制轉(zhuǎn)換課程設(shè)計(jì)--進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----huffman編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)組的存儲(chǔ)格式轉(zhuǎn)換
- 課程設(shè)計(jì)--進(jìn)制轉(zhuǎn)換
- 課程設(shè)計(jì)--進(jìn)制轉(zhuǎn)換
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論