日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

c语言中如何打出草花图案,C语言程序设计程设计题目1.doc

發(fā)布時(shí)間:2024/9/27 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言中如何打出草花图案,C语言程序设计程设计题目1.doc 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C語(yǔ)言程序設(shè)計(jì)程設(shè)計(jì)題目1

通信工程10級(jí)C語(yǔ)言課程設(shè)計(jì)任務(wù)書

各位同學(xué)可以自由組合,不超過(guò)以下題目中所規(guī)定的人數(shù)進(jìn)行選題(不允許重復(fù)選題)。

輔導(dǎo)時(shí)間:另定

地點(diǎn):軟件中心(語(yǔ)音樓8樓)

答辯檢查時(shí)間:18周星期五上午8:00起

1. Huffman編解碼(1人)

要求: a. 隨機(jī)輸入一段英文(含標(biāo)點(diǎn)、空格以及大小寫的區(qū)分,標(biāo)點(diǎn)僅限逗號(hào)“,”和句點(diǎn)“.”);

b. 統(tǒng)計(jì)各種符號(hào)出現(xiàn)的頻度;

c. 進(jìn)行Huffman編碼(以二進(jìn)制01代碼輸出);

d. 以上一步的輸出(二進(jìn)制序列)作為輸入進(jìn)行解碼,恢復(fù)原英文;

e. 比較輸入和輸出,統(tǒng)計(jì)出錯(cuò)的個(gè)數(shù)。

前綴碼、Huffman編碼算法:前綴碼:給定一個(gè)序列的集合,若不存在一個(gè)序列是另一個(gè)序列的前綴,則該序列集合稱為前綴碼。哈夫曼(Huffman)算法可用來(lái)設(shè)計(jì)前綴編碼,用該算法構(gòu)造一棵有n個(gè)葉子(每個(gè)葉子具有一個(gè)權(quán)值)的二叉樹(shù)的過(guò)程如下:(1)根據(jù)n個(gè)權(quán)值{w1,w2,…,wn}構(gòu)成n棵二叉樹(shù)的集合F={T1,T2,…,Tn},其中每棵二叉樹(shù)Ti中只有一個(gè)帶權(quán)為wi的根結(jié)點(diǎn),其左右子樹(shù)均為空。2)在F中選取兩棵根結(jié)點(diǎn)的權(quán)值最小的樹(shù)作為左右子樹(shù)來(lái)構(gòu)造一棵新的二叉樹(shù),且置新的二叉樹(shù)的根結(jié)點(diǎn)的權(quán)值為其左、右子樹(shù)結(jié)點(diǎn)的根結(jié)點(diǎn)的權(quán)值之和。(3)在F中刪除這兩棵樹(shù),同時(shí)將新得到的二叉樹(shù)加入F中。(4)重復(fù)(2)和(3),直到F中只含一棵樹(shù)時(shí)為止。稱這棵樹(shù)為最優(yōu)二叉樹(shù)(或哈夫曼樹(shù))。?如果約定將每個(gè)結(jié)點(diǎn)的左分支表示字符“0”,右分支表示字符“1”,則可以把從根結(jié)點(diǎn)到某葉子結(jié)點(diǎn)的路徑上分支字符組成的字符串作為該葉子結(jié)點(diǎn)的編碼。?對(duì)于所有可能傳輸?shù)淖址?#xff0c;令每個(gè)字符對(duì)應(yīng)一個(gè)葉結(jié)點(diǎn),權(quán)值為其出現(xiàn)的頻率,那么根據(jù)哈夫曼算法構(gòu)造出二叉樹(shù)后,就得到了每個(gè)字符的二進(jìn)制編碼。?根據(jù)構(gòu)造過(guò)程可知,這種編碼方案得到的字符的編碼長(zhǎng)度的數(shù)學(xué)期望值為最小,因此這種編碼方案是一個(gè)最優(yōu)前綴碼。在構(gòu)造過(guò)程中,每次都是選取兩棵最小權(quán)值的二叉樹(shù)進(jìn)行合并。

表達(dá)式求值是程序設(shè)計(jì)語(yǔ)言編譯中的一個(gè)最基本問(wèn)題。它的實(shí)現(xiàn)是棧應(yīng)用的又一個(gè)典型例子。這里介紹一種簡(jiǎn)單直觀、廣為使用的算法,通常稱為“算符優(yōu)先法”。要把一個(gè)表達(dá)式翻譯成正確求值的一個(gè)機(jī)器指令序列,或者直接對(duì)表達(dá)式求值,首先要能夠正確解釋表達(dá)式。例如,要對(duì)下面的算術(shù)表達(dá)式求值:??? 4 + 2 × 3 - 10/5

首先要了解算術(shù)四則運(yùn)算的規(guī)則。即:???(1)先乘除,后加減;? (2)從左算到右;? (3)先括號(hào)內(nèi),后括號(hào)外。由此,這個(gè)算術(shù)表達(dá)式的計(jì)算順序應(yīng)為??? 4 + 2 × 3 - 10/5 = 4 + 6 - 10/5 = 10 - 10/5 = 10 - 2 = 8

算符優(yōu)先法就是根據(jù)這個(gè)運(yùn)算優(yōu)先關(guān)系的規(guī)定來(lái)實(shí)現(xiàn)對(duì)表達(dá)式的編譯或解釋執(zhí)行的。任何一個(gè)表達(dá)式都是由操作數(shù)(operand)、運(yùn)算符(operator)和界限符(delimiter)組成的,我們稱它們?yōu)閱卧~。一般地,操作數(shù)既可以是常數(shù)也可以是被說(shuō)明為變量或常量的標(biāo)識(shí)符;運(yùn)算符可以分為算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符3類;基本界限符有左右括號(hào)和表達(dá)式結(jié)束符等。為了敘述的簡(jiǎn)潔,我們僅討論簡(jiǎn)單算術(shù)表達(dá)式的求值問(wèn)題。這種表達(dá)式只含加、減、乘、除4種運(yùn)算符。讀者不難將它推廣到更一般的表達(dá)式上。我們把運(yùn)算符和界限符統(tǒng)稱為算符,它們構(gòu)成的集合命名為OP。根據(jù)上述3條運(yùn)算規(guī)則,在運(yùn)算的每一步中,任意兩個(gè)相繼出現(xiàn)的算符θ1和θ2之間的優(yōu)先關(guān)系至多是下面3種關(guān)系之一:??? θ1θ2? θ1的優(yōu)先權(quán)高于θ2表1定義了算符之間的這種優(yōu)先關(guān)系。

表1 算符間的優(yōu)先關(guān)系

由規(guī)則(3),+、-、*和/為θ1時(shí)的優(yōu)先性均低“(”但高于“)”,由規(guī)則(2),當(dāng)θ1=θ2時(shí),令θ1>θ2,“#”是表達(dá)式的結(jié)束符。為了算法簡(jiǎn)潔,在表達(dá)式的最左邊也虛設(shè)一個(gè)“#”構(gòu)成整個(gè)表達(dá)式的一對(duì)括號(hào)。表中的“(”=“)”表示當(dāng)左右括號(hào)相遇時(shí),括號(hào)內(nèi)的運(yùn)算已經(jīng)完成。同理,“#”=“#”表示整個(gè)表達(dá)式求值完畢。“)”與“(”、“#”與“)”以及“(”與“#”之間無(wú)優(yōu)先關(guān)系,這是因?yàn)楸磉_(dá)式中不允許它們相繼出現(xiàn),一旦遇到這種情況,則可以認(rèn)為出現(xiàn)了語(yǔ)法錯(cuò)誤。在下面的討論中,我們暫假定所輸入的表達(dá)式不會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤。為實(shí)現(xiàn)算符優(yōu)先算法,可以使用兩個(gè)工作棧。一個(gè)稱做OPTR,用以寄存運(yùn)算符;另一個(gè)稱做OPND,用以寄存操作數(shù)或運(yùn)算結(jié)果。算法的基本思想的:(1)首先置操作數(shù)棧為空棧,表達(dá)式起始符“#”為運(yùn)算符棧的棧底元素;2)依次讀入表達(dá)式中每個(gè)字符,若是操作數(shù)則進(jìn) OPND 棧,若是運(yùn)算符則和 OPTR 棧的棧頂運(yùn)算符比較優(yōu)先權(quán)后

總結(jié)

以上是生活随笔為你收集整理的c语言中如何打出草花图案,C语言程序设计程设计题目1.doc的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。