1. 程式人生 > 實用技巧 >適合剛剛學習程式設計的萌新:C語言程式設計學習製作超簡單又好玩的報數遊戲!

適合剛剛學習程式設計的萌新:C語言程式設計學習製作超簡單又好玩的報數遊戲!

C語言是面向過程的,而C++是面向物件的

C和C++的區別:

C是一個結構化語言,它的重點在於演算法和資料結構。C程式的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。

C++,首要考慮的是如何構造一個物件模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取物件的狀態資訊得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”。

C與C++的最大區別:

在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”,而就語言本身而言,在C中更多的是演算法的概念。那麼是不是C就不重要了,錯!演算法是程式設計的基礎,好的設計如果沒有好的演算法,一樣不行。而且,“C加上好的設計”也能寫出非常好的東西。


一提到報數,可能大家可能會在第一時間內想到大學軍訓的美好時光,嚴厲的教官讓我們從頭到尾依次的報數。


雖然剛開始很討厭教官,為什麼訓練的時候這麼嚴厲,一個個都累的要死,但是當軍訓快結束的時候大家反而都挺捨不得的了,人就是這麼奇怪的動物,(順帶默默地懷念一下以前的教官)。

不扯遠了,今天的報數遊戲呢,和軍訓時候教官讓我們依次的報數不一樣,我們要做的報數遊戲呢,是選擇一些人站成一圈,從第一個開始順時針開始報數,一圈之後之後報數停止,念出報到數的人則要出局,然後重新開始下一輪,周而復始,依次計算出每一輪誰會出局,直到剩下最後一個人為止!


(咳咳,素材圖是我畫的,沒找到具體相關的圖片,大家將就一下)

玩法呢,就如上面解說的一樣,輸入玩這個遊戲的人數和報到數,然後程式就會計算出每輪所淘汰的那個人,最終留下倖存者(這人肯定運氣好,去買注彩票也是極好的)!


下面看程式碼吧:

/*********************************************************************

*以迴圈佇列的資料結構實現

*時間複雜度T(n)

*採用迴圈佇列資料結構,使得每次對陣列的訪問次數減少到最少

**********************************************************************/

#include

#include

int main() { int i = 0, num = 1, die = 0, front, rear, temp = 0; while (num != 0) { printf(" 輸入人數,小於零退出:"); scanf("%d", &num); printf(" 輸入報到數:"); scanf("%d", &die); int *cycle = (int *)malloc((num + 1) * sizeof(int)); for (i = 0; i <= num; i++) { cycle[i] = i; } front = 1; rear = num; i = 1; while (front != rear) { temp = (rear + 1) % (num + 1); cycle[temp] = cycle[front]; front = (front + 1) % (num + 1); if (i == die) { i = 1; printf("%d出隊 ", cycle[temp]); } else { i++; rear = (rear + 1) % (num + 1); cycle[rear] = cycle[temp]; } } printf("倖存者是%d ", cycle[front]); free(cycle); num = 0; } return 0; }



其實這段程式碼很簡單,並不是很難,只是大家學習C語言之後卻沒有學會怎麼運用所學知識的思想,也就是所謂的 “ 我能看懂程式程式碼是怎麼執行的,可是,程式是怎麼設計出來的就完全懵逼了。” 成了只會看而不會寫的人!

自學C/C++不易,此路應攜手前行。

如果你想跟著小編一起學程式設計的話!

可以來我的C語言/C++程式設計學習基地【點選進入】

還有(原始碼,零基礎教程,專案實戰教學視訊)【進入領取】!