C語言是面向過程的显拜,而C++是面向?qū)ο蟮?br>
C和C++的區(qū)別:
C是一個(gè)結(jié)構(gòu)化語言衡奥,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計(jì)首要考慮的是如何通過一個(gè)過程远荠,對(duì)輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制)矮固。
C++,首要考慮的是如何構(gòu)造一個(gè)對(duì)象模型矮台,讓這個(gè)模型能夠契合與之對(duì)應(yīng)的問題域,這樣就可以通過獲取對(duì)象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制根时。 所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣瘦赫。之所以說C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”蛤迎。
C與C++的最大區(qū)別:
在于它們的用于解決問題的思想方法不一樣确虱。之所以說C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”替裆,而就語言本身而言校辩,在C中更多的是算法的概念。那么是不是C就不重要了辆童,錯(cuò)宜咒!算法是程序設(shè)計(jì)的基礎(chǔ),好的設(shè)計(jì)如果沒有好的算法把鉴,一樣不行故黑。而且,“C加上好的設(shè)計(jì)”也能寫出非常好的東西庭砍。
一提到報(bào)數(shù)场晶,可能大家可能會(huì)在第一時(shí)間內(nèi)想到大學(xué)軍訓(xùn)的美好時(shí)光,嚴(yán)厲的教官讓我們從頭到尾依次的報(bào)數(shù)怠缸。
雖然剛開始很討厭教官诗轻,為什么訓(xùn)練的時(shí)候這么嚴(yán)厲,一個(gè)個(gè)都累的要死揭北,但是當(dāng)軍訓(xùn)快結(jié)束的時(shí)候大家反而都挺舍不得的了扳炬,人就是這么奇怪的動(dòng)物吏颖,(順帶默默地懷念一下以前的教官)。
不扯遠(yuǎn)了鞠柄,今天的報(bào)數(shù)游戲呢侦高,和軍訓(xùn)時(shí)候教官讓我們依次的報(bào)數(shù)不一樣,我們要做的報(bào)數(shù)游戲呢厌杜,是選擇一些人站成一圈奉呛,從第一個(gè)開始順時(shí)針開始報(bào)數(shù),一圈之后報(bào)數(shù)停止夯尽,念出報(bào)到數(shù)的人則要出局瞧壮,然后重新開始下一輪,周而復(fù)始匙握,依次計(jì)算出每一輪誰會(huì)出局咆槽,直到剩下最后一個(gè)人為止!
(咳咳圈纺,素材圖是我畫的秦忿,沒找到具體相關(guān)的圖片,大家將就一下)
玩法呢蛾娶,就如上面解說的一樣灯谣,輸入玩這個(gè)游戲的人數(shù)和報(bào)到數(shù),然后程序就會(huì)計(jì)算出每輪所淘汰的那個(gè)人蛔琅,最終留下幸存者(這人肯定運(yùn)氣好胎许,去買注彩票也是極好的)!
下面看代碼吧:
/*********************************************************************
*以循環(huán)隊(duì)列的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)
*時(shí)間復(fù)雜度T(n)
*采用循環(huán)隊(duì)列數(shù)據(jù)結(jié)構(gòu)罗售,使得每次對(duì)數(shù)組的訪問次數(shù)減少到最少
**********************************************************************/
#include
#include
int main()
{
int i = 0, num = 1, die = 0, front, rear, temp = 0;
while (num != 0)
{
printf(" 輸入人數(shù)辜窑,小于零退出:");
scanf("%d", &num);
printf(" 輸入報(bào)到數(shù):");
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出隊(duì) ", cycle[temp]);
}
else
{
i++;
rear = (rear + 1) % (num + 1);
cycle[rear] = cycle[temp];
}
}
printf("幸存者是%d ", cycle[front]);
free(cycle);
num = 0;
}
return 0;
}
其實(shí)這段代碼很簡單,并不是很難寨躁,只是大家學(xué)習(xí)C語言之后卻沒有學(xué)會(huì)怎么運(yùn)用所學(xué)知識(shí)的思想穆碎,也就是所謂的 “ 我能看懂程序代碼是怎么運(yùn)行的,可是职恳,程序是怎么設(shè)計(jì)出來的就完全懵逼了惨远。” 成了只會(huì)看而不會(huì)寫的人话肖!
自學(xué)C/C++不易北秽,此路應(yīng)攜手前行。
如果你想跟著小編一起學(xué)編程的話最筒!
可以來我專欄介紹的C語言/C++編程學(xué)習(xí)基地贺氓,【點(diǎn)擊進(jìn)入】!
還有(源碼床蜘,零基礎(chǔ)教程辙培,項(xiàng)目實(shí)戰(zhàn)教學(xué)視頻)【進(jìn)入領(lǐng)取】蔑水!