用C語言解決數(shù)制轉(zhuǎn)換問題_百度文庫_第1頁
用C語言解決數(shù)制轉(zhuǎn)換問題_百度文庫_第2頁
用C語言解決數(shù)制轉(zhuǎn)換問題_百度文庫_第3頁
用C語言解決數(shù)制轉(zhuǎn)換問題_百度文庫_第4頁
用C語言解決數(shù)制轉(zhuǎn)換問題_百度文庫_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、M 進(jìn)制轉(zhuǎn)十進(jìn)制:從該 M 進(jìn)制數(shù)的最后一位開始算,依次列為第 0 盤形制動(dòng)器是火車常用的一種制動(dòng)器、,在制動(dòng)過程中1火車的剎車芯盤會(huì)產(chǎn)生磨損,在使用了一段時(shí)間后,2.n,降低成本,常用堆焊方法對(duì)剎車芯盤的磨損表面進(jìn)行修復(fù)。1的2部分組成。在堆焊時(shí)0為了保證相鄰的兩堆焊層能完好且無縫隙地光滑過渡連接,主軸的轉(zhuǎn)速比較慢,且焊槍的軸向移動(dòng)速度與主軸的轉(zhuǎn)動(dòng)速度通過機(jī)械傳動(dòng)來實(shí)現(xiàn)緊密配合。堆焊設(shè)備示意圖如圖1所示。在實(shí)際修復(fù)剎車芯盤過程中發(fā)現(xiàn)這種設(shè)備存在問題,由于火車剎車芯盤一周的實(shí)際磨損量不均勻,所以堆焊時(shí)就要按磨損最嚴(yán)重區(qū)域所需要的堆焊層厚度進(jìn)行堆焊,然后再將多余的堆焊層金屬車削掉,這樣既浪費(fèi)了焊

2、接材料,11、CO2保護(hù)焊機(jī)量,從而使修復(fù)成本增加。針對(duì)上述問題,在現(xiàn)有設(shè)備的基礎(chǔ)上,重新設(shè)計(jì)了火車剎車芯盤修復(fù)專用自動(dòng)化堆焊機(jī),使其能夠根據(jù)剎車芯盤磨損程度的不同自動(dòng)調(diào)整堆焊層的厚度,而且主軸旋轉(zhuǎn)一周堆焊即可完成,從而提高了效率,節(jié)約了焊接材料,減少了堆焊后的車削工作量,降低了修復(fù)成本。齒輪類傳動(dòng)零件如齒輪、鏈輪、齒圈、齒條等是各類設(shè)備中常用的零件,其損壞的主要形式是齒面磨損和斷齒。磨損或斷齒后可用手工電弧堆焊的方法進(jìn)行修復(fù),這不僅能及時(shí)地保證設(shè)備正常運(yùn)行,而且可節(jié)約大量備件費(fèi),具有顯著的經(jīng)濟(jì)效益。本文介紹部分齒輪類傳動(dòng)零件堆焊修復(fù)成功的實(shí)例,供同行參考。二氧化碳?xì)怏w保護(hù)電弧堆焊成本較低生產(chǎn)

3、率高,但有合金元素?zé)龘p問題,電弧燃燒不穩(wěn),飛濺大,堆焊層質(zhì)量不如氬氣保護(hù)的好,適于修復(fù)球墨鑄鐵的曲軸、軸瓦及泥漿泵等堆焊性能要求不高的工作。用混合物氣體保護(hù),可以改變?nèi)鄣翁匦约昂缚p的形成。如CO2保護(hù)氣體以一定的速度從噴嘴中吹向電弧區(qū),把熔池與空氣隔開,同時(shí)對(duì)熔融金屬中的鐵、硅、錳等元素起氧化作用,形成氧化物以浮渣的形式在焊層表面,并在冷卻時(shí)脫落。熔化極氣體保護(hù)電弧堆焊易實(shí)現(xiàn)機(jī)械化和自動(dòng)化,生產(chǎn)效率高,堆焊過程無需清渣,提高了設(shè)備的負(fù)載持續(xù)率,對(duì)焊工操作技術(shù)要求較低,熔敷速度可與單絲埋弧堆焊相當(dāng),但設(shè)備價(jià)格較高,并消耗保護(hù)氣,使堆焊成本升高,適用于堆焊區(qū)域小、形狀不規(guī)則的工件或小零件的堆焊,小

4、面積堆焊可以采用單絲堆焊機(jī),大面積堆焊可以采用多絲堆焊機(jī),以改善熱循環(huán)。木炭機(jī)齒輪最常見的損壞方式是輪齒表面磨損或由于接觸疲勞而產(chǎn)生嚴(yán)重的點(diǎn)狀剝蝕,這時(shí)可以用堆焊法修復(fù)。退火。堆焊前進(jìn)行退火主要是為了減少木炭機(jī)齒輪內(nèi)部的殘余應(yīng)力,降低硬度,為修復(fù)后的齒輪的機(jī)加工和熱處理做準(zhǔn)備。退火溫度隨齒輪材料的不同而異,可從熱處理手冊(cè)中查得。M清洗。為了減少堆焊缺陷,焊前必須對(duì)木炭機(jī)齒輪表面的油污、銹燭和氧化物進(jìn)行認(rèn)真的清洗。s20Cr及40Cr鋼絲,以碳化焰或中性焰進(jìn)行氣焊堆焊;也可以用65從0焊條進(jìn)行電焊堆焊。對(duì)于用中碳鋼制成的整體淬火齒輪,可用鋼鋼絲以中性焰應(yīng)盡可能均勻堆焊至無缺陷。N木炭機(jī)齒輪機(jī)械加

5、工??捎糜谲嚧布庸ね鈭A和端面,然后銑齒或滾齒。如果件數(shù)少,也可用鉗工修整。 圖3-1 M進(jìn)制轉(zhuǎn)十進(jìn)制處理流程圖十進(jìn)制轉(zhuǎn)換為其他進(jìn)制:首先取x對(duì)需要轉(zhuǎn)換的進(jìn)制n取余,然后再對(duì)其取整,將取到的余數(shù)存入數(shù)組中,然后重復(fù)上面的步驟,將得到的余數(shù)依次存入數(shù)組中,知道x變成0。然后將數(shù)組反向輸出。輸出的數(shù)可能大于10,所以進(jìn)行了必要的判斷。N(2)棧的算法算法思路和上面基本相同,只是將取到的余數(shù)依次入棧,輸出時(shí)只要依次出棧就行。(3)遞歸的算法遞歸過程中不需要另外的存儲(chǔ)取到的余數(shù),只需要在遞歸返回時(shí)輸出相應(yīng)的結(jié)果就行。4. 主要變量#define MAX 0x7fffffff 定義了整形數(shù)的最大值,防止數(shù)

6、字溢出。int m; 用于表示輸入的數(shù)據(jù)是哪個(gè)進(jìn)制的數(shù)。char s33; 輸入時(shí)用于存儲(chǔ)輸入的十進(jìn)制數(shù)x的m進(jìn)制表示。處理過程中用于存儲(chǔ)m進(jìn)制表示的每一位所代表的的數(shù)字。int n; 要將輸入的m進(jìn)制數(shù)轉(zhuǎn)換成的進(jìn)制。int len; 輸入的字符數(shù)據(jù)有多長(zhǎng)。注:其他變量在程序中均有說明。5. 主要函數(shù)功能表5-1 程序中的函數(shù)函數(shù)功能int Turn10( int l ;將m進(jìn)制的數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)void Turnx( int x ;將十進(jìn)制的數(shù)轉(zhuǎn)換成n進(jìn)制數(shù)int CalcRecursion( int k, int c ;將m進(jìn)制轉(zhuǎn)換成10進(jìn)制void Recursion( int x ;將

7、十進(jìn)制數(shù)x轉(zhuǎn)換成n進(jìn)制數(shù)void InitStack( PSTACK s ;初始化棧void Push( PSTACK s, int x ;將一個(gè)元素壓入棧中int Pop( PSTACK s ;取出棧頂元素void UseStack( int x ;將十進(jìn)制數(shù)x轉(zhuǎn)換成n進(jìn)制數(shù)void Convert( char *s ;將輸入的數(shù)據(jù)轉(zhuǎn)換成數(shù)字6. 調(diào)試說明程序開始運(yùn)行時(shí)提示用戶按照規(guī)定的輸入格式輸入數(shù)據(jù)圖6-1 提示用戶按照格式輸入需要的數(shù)據(jù)對(duì)于用戶輸入的數(shù)據(jù),程序中具有檢查數(shù)據(jù)的功能,程序規(guī)定原數(shù)據(jù)的進(jìn)制不能和需要轉(zhuǎn)換的進(jìn)制相同數(shù)據(jù)的進(jìn)制不能超過36,因?yàn)?6后不好表達(dá)。數(shù)據(jù)中也不能出現(xiàn)除

8、a.z,A.Z,0.9之外的字符m進(jìn)制數(shù)中的每一位不可能大于等于m,否則數(shù)據(jù)應(yīng)該是錯(cuò)的。當(dāng)數(shù)據(jù)輸入正確時(shí)將給出不同進(jìn)制之間的轉(zhuǎn)換結(jié)果輸出完成后,程序?qū)⒄=Y(jié)束。6 心得體會(huì)數(shù)據(jù)結(jié)構(gòu)是一門純屬于設(shè)計(jì)的科目,它需用把理論變?yōu)樯蠙C(jī)調(diào)試。在學(xué)習(xí)科目的第一節(jié)課起,老師就為我們闡述了它的重要性。它對(duì)我們來說具有一定的難度。它是其它編程語言的一門基本學(xué)科。剛開始學(xué)的時(shí)候確實(shí)有很多地方我很不理解,每次上課時(shí)老師都會(huì)給我們出不同的設(shè)計(jì)題目,對(duì)于我們一個(gè)初學(xué)者來說,無疑是一個(gè)具大的挑戰(zhàn),撞了幾次壁之后,我決定靜下心來,仔細(xì)去寫程序。老師會(huì)給我們需要編程的內(nèi)容一些講解,順著老師的思路,來完成自己的設(shè)計(jì),我們可以開始

9、運(yùn)行自己的程序,可是好多處的錯(cuò)誤讓人看的可怕,還看不出到底是哪里出現(xiàn)了錯(cuò)誤,但是程序還是得繼續(xù)下去,我多次請(qǐng)教了老師和同學(xué),逐漸能自己找出錯(cuò)誤,并加以改正。Visual studio 2008里檢查錯(cuò)誤有時(shí)候真是讓你難以找到為什么錯(cuò)。經(jīng)過了這次課程設(shè)計(jì),現(xiàn)在已經(jīng)可以了解很多錯(cuò)誤的原因,這對(duì)我來說是一個(gè)突破性的進(jìn)步,眼看著一個(gè)個(gè)錯(cuò)誤通過自己的努力在我眼前消失,覺得很是開心。在這一段努力學(xué)習(xí)的過程中,我的編程設(shè)計(jì)有了明顯的提高。雖然程序中不是很完美,但是對(duì)于我來說已經(jīng)不錯(cuò)了,今后還需繼續(xù)努力。參考文獻(xiàn)1 譚浩強(qiáng). C語言程序設(shè)計(jì)教程. 北京:清華大學(xué)出版社,20082 嚴(yán)蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)(

10、C語言版). 清華大學(xué)出版社,20103 王曉東.計(jì)算機(jī)算法設(shè)計(jì)與分析.電子工業(yè)出版社,2007附錄1:源程序清單/程序名稱:課程設(shè)計(jì).c/程序功能:分別采用數(shù)組、棧、遞歸實(shí)現(xiàn)進(jìn)制間的轉(zhuǎn)換/程序作者:黃超/最后修改日期:2010-6-24#include #include #include #include "public.h" /公用的函數(shù)頭文件#include "array.h" /數(shù)組實(shí)現(xiàn)轉(zhuǎn)換的頭文件#include "Recursion.h" /遞歸實(shí)現(xiàn)轉(zhuǎn)換的頭文件#include "stack.h" /堆

11、棧實(shí)現(xiàn)轉(zhuǎn)換的頭文件int main(int x, i;while ( 1 system( "pause" ;system( "cls" ;/提示用戶按照正確的格式輸入數(shù)據(jù)printf( "請(qǐng)輸入要轉(zhuǎn)換的數(shù)據(jù), 格式:原數(shù)據(jù)進(jìn)制 數(shù)據(jù) 要轉(zhuǎn)換的進(jìn)制(<=36:n" ;/讀入數(shù)據(jù)scanf( "%d%s%d", &m, s, &n ;if ( m = n printf( "原數(shù)據(jù)進(jìn)制應(yīng)該要轉(zhuǎn)換的進(jìn)制不同!n" ;elseif ( m>36 | n>36 printf

12、( "輸入的進(jìn)制超出了可以表達(dá)的范圍!n" ;else/計(jì)算數(shù)字用m進(jìn)制表示時(shí)的位數(shù)len = strlen( s ; /數(shù)據(jù)的位數(shù)for ( i=0; i if ( si<48 | ( si>=58 && si<=64 |( si>=91 && si <= 96 | si>122 break;if ( i != len printf( "輸入的數(shù)據(jù)中出現(xiàn)不符合要求的字符!n" ;continue;Convert( s ; /將字符數(shù)據(jù)轉(zhuǎn)換為數(shù)字,并存入數(shù)組中for ( i=0; i i

13、f ( si > m break;if ( i != len printf( "輸入的數(shù)據(jù)有錯(cuò)誤!n" ;continue;break;/計(jì)算出x的十進(jìn)制表示,便以后面的使用x = Turn10( len ;/輸出使用數(shù)組計(jì)算出的結(jié)果printf( "用數(shù)組算出x為:%dn", x ;/輸出使用遞歸計(jì)算出的結(jié)果printf( "用遞歸算出x為:%dn", CalcRecursion( len-1, 1 ;/轉(zhuǎn)換為其他進(jìn)制/x的n進(jìn)制表示,用數(shù)組實(shí)現(xiàn)printf( "%d的%d進(jìn)制表示(數(shù)組計(jì)算: ", x,

14、n ;Turnx( x ;/x的n進(jìn)制表示,用遞歸實(shí)現(xiàn)printf( "%d的%d進(jìn)制表示(遞歸計(jì)算: ", x, n ;Recursion( x ;/x的n進(jìn)制表示,用堆棧實(shí)現(xiàn)printf( "n%d的%d進(jìn)制表示(堆棧計(jì)算: ", x, n ;UseStack( x ;return 0;/頭文件名稱:array.h/*功能:將m進(jìn)制的數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)*參數(shù):l: s數(shù)組元素的個(gè)數(shù)*/int Turn10( int l int a32=1, i=0, result;/數(shù)組a存儲(chǔ)m的k次冪, result為轉(zhuǎn)換后的十進(jìn)制數(shù)/當(dāng)ai*m不會(huì)超出整形范圍wh

15、ile ( ai <= MAX/m ai+1 = ai * m; /m(i+1 = mi * m+i;i = result = 0; /初始化resultfor ( -l; l>=0; -l, +i /當(dāng)s的下標(biāo)減少時(shí),a的下標(biāo)應(yīng)該增加result += sl*ai; /將得到的次方乘以x中一位相乘后相加return result; /返回得到的十進(jìn)制數(shù)/*功能:將十進(jìn)制的數(shù)轉(zhuǎn)換成n進(jìn)制數(shù)*參數(shù):x: 十進(jìn)制數(shù)值*/void Turnx( int x int i=0, t;char result32; /n進(jìn)制表示的每一位while ( x /當(dāng)x不為0時(shí)t = x%n; /用t保

16、存x對(duì)n的余數(shù),便以下面判斷if ( t > 9 resulti+ = t-10+'A' /大于9的數(shù)用字母A.F表示elseresulti+ = t+'0' /小于9的數(shù)用字符0.9表示x /= n;for ( -i; i>=0; -i /逆向輸出每一位printf( "%c", resulti ;printf( "n" ;/頭文件名稱:public.h#define MAX 0x7fffffffint m; /輸入的數(shù)據(jù)為哪個(gè)進(jìn)制int n; /要轉(zhuǎn)換成哪個(gè)進(jìn)制int len; /輸入的字符串的長(zhǎng)度char

17、 s33; /m進(jìn)制數(shù)/*功能:將輸入的數(shù)據(jù)轉(zhuǎn)換成數(shù)字*參數(shù):s:輸入的x的m進(jìn)制的字符串指針*/void Convert( char *s int i = 0; /從字符串的0地址開始while ( si /當(dāng)si!=0的/字符轉(zhuǎn)換成對(duì)應(yīng)的數(shù)字if ( si>='a' && si<='z' si = si-'a'+10;elseif ( si>='A' && si<='Z' si = si-'A'+10;elsesi -= '0

18、9;+i;/頭文件名稱:Recursion.h/*功能:將m進(jìn)制轉(zhuǎn)換成10進(jìn)制*參數(shù):k:初始化時(shí)為s數(shù)組元素的個(gè)數(shù),遞歸時(shí)為數(shù)組的下標(biāo)c:m的k-1次方*/int CalcRecursion( int k, int c if ( k >= 0 /下標(biāo)>=0時(shí) /返回k對(duì)應(yīng)的元素乘以對(duì)應(yīng)的次方return sk*c + CalcRecursion( k-1, c*m ;elsereturn 0;/*功能:將十進(jìn)制數(shù)x轉(zhuǎn)換成n進(jìn)制數(shù)*參數(shù):x:十進(jìn)制數(shù)x*/void Recursion( int x int t;if ( x > 0 Recursion( x/n ;t = x%

19、n;if ( t > 10 printf( "%c", t-10+'A' ;elseprintf( "%d", t ;/頭文件名稱:stack.h#include #define MAXSTACK 33 /堆棧的最大位置/定義棧數(shù)據(jù)結(jié)構(gòu)typedef struct _stackint *addr; /棧的存儲(chǔ)地址int length; /棧的最大長(zhǎng)度int top; /棧頂int bottom; /棧底STACK, *PSTACK;/*功能:初始化棧*參數(shù):s:棧的地址*/void InitStack( PSTACK s s->addr = malloc( MAXSTACK*sizeof( int ; /申請(qǐng)空間s->length = M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論