<em id="lwy0s"></em>
      1. <div id="lwy0s"></div>
      2. AutoCAD 3DMAX C語言 Pro/E UG JAVA編程 PHP編程 Maya動畫 Matlab應用 Android
        Photoshop Word Excel flash VB編程 VC編程 Coreldraw SolidWorks A Designer Unity3D
         首頁 > C語言

        算法

        51自學網 2015-09-08 http://www.40288265.com
        什么是程序?程序= 數據結構+ 算法。

        對于面向對象程序設計,強調的是數據結構,而對于面向過程的程序設計語言如C、P a s c a l、F O RT R A N等語言,主要關注的是算法。掌握算法,也是為面向對象程序設計打下一個扎實的基礎。那么,什么是算法呢?

        人們使用計算機,就是要利用計算機處理各種不同的問題,而要做到這一點,人們就必須事先對各類問題進行分析,確定解決問題的具體方法和步驟,再編制好一組讓計算機執行的指令即程序,交給計算機,讓計算機按人們指定的步驟有效地工作。這些具體的方法和步驟,其實就是解決一個問題的算法。根據算法,依據某種規則編寫計算機執行的命令序列,就是編制程序,而書寫時所應遵守的規則,即為某種語言的語法。

        由此可見,程序設計的關鍵之一,是解題的方法與步驟,是算法。學習高級語言的重點,就是掌握分析問題、解決問題的方法,就是鍛煉分析、分解,最終歸納整理出算法的能力。與之相對應,具體語言,如C語言的語法是工具,是算法的一個具體實現。所以在高級語言的學習中,一方面應熟練掌握該語言的語法,因為它是算法實現的基礎,另一方面必須認識到算法的重要性,加強思維訓練,以寫出高質量的程序。

        下面通過例子來介紹如何設計一個算法:

        [例1-4] 輸入三個數,然后輸出其中最大的數。

        首先,得先有個地方裝這三個數,我們定義三個變量A、B、C,將三個數依次輸入到A、B、C中,另外,再準備一個M A X裝最大數。由于計算機一次只能比較兩個數,我們首先把A與B比,大的數放入M A X中,再把M A X 與C比,又把大的數放入M A X中。最后,把M A X輸出,此時M A X中裝的就是A、B、C三數中最大的一個數。算法可以表

        示如下:

        1) 輸入A、B、C。

        2) A與B中大的一個放入M A X中。

        3) 把C與M A X中大的一個放入M A X中。

        4) 輸出M A X,M A X即為最大數。

        其中的2 )、3 )兩步仍不明確,無法直接轉化為程序語句,可以繼續細化:

        2) 把A與B中大的一個放入M A X中,若A > B,則MAX ←A;否則MAX ←B。

        3) 把C與M A X中大的一個放入M A X中,若C > M A X,則M A X←C。

        于是算法最后可以寫成:

        1) 輸入A,B,C。

        2) 若A > B,則MAX ←A;

        否則M A X←B。

        3) 若C > M A X,則M A X←C。

        4) 輸出M A X,M A X即為最大數。
        這樣的算法已經可以很方便地轉化為相應的程序語句了。

        [例1-5] 猴子吃桃問題:有一堆桃子不知數目,猴子第一天吃掉一半,覺得不過癮,又多吃了一只,第二天照此辦理,吃掉剩下桃子的一半另加一個,天天如此,到第十天早上,猴子發現只剩一只桃子了,問這堆桃子原來有多少個?

        此題粗看起來有些無從著手的感覺,那么怎樣開始呢?假設第一天開始時有a1只桃子,第二天有a2只,. . .,第9天有a9只,第1 0天是a1 0只,在a1, a2, . . .,a1 0中,只有a1 0= 1是知道的,現要求a1,而我們可以看出,a1, a2, . .,a1 0之間存在一個簡單的關系:

        a9= 2 * ( a1 0+ 1 )

        a8= 2 * ( a9+ 1 )

        a1= 2 * ( a2+ 1 )

        也就是:ai= 2 * ( ai + 1+1) i=9,8,7,6,...,1

        這就是此題的數學模型。

        再考察上面從a9,a8直至a1的計算過程,這其實是一個遞推過程,這種遞推的方法在計算機解題中經常用到。另一方面,這九步運算從形式上完全一樣,不同的只是ai的下標而已。由此,我們引入循環的處理方法,并統一用a0表示前一天的桃子數,a1表示后一天的桃子數,將算法改寫如下:

        1) a1=1; {第1 0天的桃子數,a1的初值}

        i = 9。{計數器初值為9}

        2) a0= 2 * ( a1+ 1 )。{計算當天的桃子數}

        3) a1= a0。{將當天的桃子數作為下一次計算的初值}

        4) i=i-1。

        5) 若i > = 1,轉2 )。

        6) 輸出a0的值。

        其中2 )~5 )步為循環。

        <

         

         

         
        說明
        :本教程來源互聯網或網友上傳或出版商,僅為學習研究或媒體推廣,51zixue.net不保證資料的完整性。
         
        上一篇:高手講解:探索C++的秘密之詳解extern  下一篇:C語言的程序結構
        北京11选5技巧

            <em id="lwy0s"></em>
          1. <div id="lwy0s"></div>

                <em id="lwy0s"></em>
              1. <div id="lwy0s"></div>