C語言/C加加編程學習—坦克大戰小遊戲製作代碼
C語言是面向過程的,而C++是面向對象的
C和C++的區別:
C是一個結構化語言,它的重點在於演算法和數據結構。C程序的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。
C++,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取對象的狀態信息得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為「 設計這個概念已經被融入到C++之中 」。
C與C++的最大區別:在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為「 設計這個概念已經被融入到C++之中 」,而就語言本身而言,在C中更多的是演算法的概念。那麼是不是C就不重要了,錯!演算法是程序設計的基礎,好的設計如果沒有好的演算法,一樣不行。而且,「C加上好的設計」也能寫出非常好的東西。
文章中講的東西他們都看懂了
但具體到自己寫代碼的時候卻完全不知道從何入手
其實看懂知識點常式和真正學會寫代碼之間相差了好幾條街
我一再強調
學編程沒有捷徑
只有老老實實地敲代碼
接下來以訓練為主
小編推薦一個學C語言/C++的學習裙【 六九九,四七零,五九六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多乾貨和技術資料分享!
1. 題目分析
上面這張圖就是楊輝三角,相信大家在中學數學課中學習過。它實際上是二項式(a + b)的n次方展開後各項的係數排成的三角形,它有如下特點:
每行左右兩邊都是1
從第二行起,中間的每一個數是上一行里相鄰兩個數之和
第n行有n個數字
2. 解法一
看到這個問題,最容易想到的是創建一個二維數組。之後像填表一樣把每一行的數據依次填進二維數組中。如圖所示:
楊輝三角二維數組
2.1 二維數組初始化
首先,我們需要創建一個二維數組(我們以10 * 10的二維數組為例),全部元素初始化為0,之後把所有1的位置填上。代碼如下:
執行結果:
執行結果
這段代碼中需要注意:
用宏MAX定義數組長度,方便改寫
數組初始化為0
列印時使用「%5d」,防止後面數字位數太多破壞列印格式
2.2 計算剩餘單元格
代碼如下:
這段代碼中需要注意:
從第三行開始計算(i = 2)
每一個空格的內容都是它左上方和上方兩個元素之和
2.3 最終結果
於是我們得到了完整的程序:
小編推薦一個學C語言/C++的學習裙【 六九九,四七零,五九六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多乾貨和技術資料分享!
執行結果如下:
執行結果
最終列印形式和楊輝三角還有距離,請大家自己思考一下,如何把這些數字列印成標準的楊輝三角格式。
這個解法是最樸素的方法,一般大家都能想到。我們要做的只是把這個方法用代碼實現而已。在真正的程序設計工作中,往往都是這樣先相處樸素解法,之後再分析哪些環節可以優化。下面我們就看看這個方法能否優化。
3. 解法二
解法一種兩組for循環看似比較冗餘,我們希望能夠用一組循環完成所有工作。
執行結果完全相同。此解法把填寫數字1的工作放入循環中,減少了一個循環。
4. 解法三
解法二中的兩組循環其實都是對二維數組的遍歷,第一遍填數字,第二遍列印。那我們能不能一次遍歷就完成既填空又列印的動作呢。請看下面這段代碼:
5. 解法四
解法三還能優化嗎?當然可以,我們最終的目的是列印,並非保存,那麼我們其實沒有必要用一個二維數組把所有的數字保存起來。我們只需要在列印的時候讀取上一行的內容,同時計算出當前行內容保存起來即可。那麼我們試著用兩個一維數組來完成。
小編推薦一個學C語言/C++的學習裙【 六九九,四七零,五九六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多乾貨和技術資料分享!
這段代碼的執行效率很高,存儲空間使用的也比較少。但可讀性相對差一些。我們用了兩個數組array1和array2,又用了兩個指針來管理這兩個數組。為什麼不直接用數組名操作呢,因為兩個數組的使用時交替進行的,一個保存當前行,一個保存上一行。
這個解法難度比較大,初學者可以先不做了解。如果留言中需要具體講解的人數多,我會在下一篇中重點講解。
程序設計千變萬化,這道題也遠不止這四種解法。請大家在學習這四種的同時自己思考新的方法。
6. 課後練習
今天的課後練習題出個簡單的,請編程列印出9*9乘法表。
TAG:小辰帶你學知識 |