版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
英第8單元C++快樂編程——小學(xué)C++創(chuàng)意編程實例(課件)堂課Hi,Pythonlist,tuple,dictionary語復(fù)雜問題,函數(shù)上陣——函數(shù)英第8單元C++快樂編程——小學(xué)C++創(chuàng)意編程實例(課件目錄目錄第27課老鷹捉小雞游戲――庫函數(shù)第28課剪刀石頭布游戲——自定義函數(shù)第29課古老漢諾塔游戲——函數(shù)的聲明和調(diào)用目錄目錄第27課老鷹捉小雞游戲――庫函數(shù)第28課剪刀老鷹捉小雞游戲――庫函數(shù)第27課老鷹捉小雞游戲――庫函數(shù)第27課
體育課上,皮皮魯與小伙伴玩老鷹捉小雞的游。皮皮魯?shù)男』锇?,一共?位小朋友,按1至6號進行編號,從中隨機選擇一位當老鷹。皮皮魯準備編程調(diào)用隨機函數(shù)rand(),產(chǎn)生一個機隨數(shù),隨機數(shù)是幾,就讓幾號小朋友來當老鷹。讀故事體育課上,皮皮魯與小伙伴玩老鷹捉小雞的游。理思路C++函數(shù)有兩種,一種是庫函數(shù),一種是自己編寫的函數(shù)。常見的庫函數(shù)有隨機函數(shù)rand()、時間函數(shù)time()等。在編程時,這些函數(shù)不需要自己定義和編寫,如果想使用這些庫函數(shù),必須在文件開頭“包含”有關(guān)頭文件即可,本題中需要添加的頭文件是<stdlib.h>和<time.h>。1.理解題意理思路C++函數(shù)有兩種,一種是庫函數(shù),一種是自己編寫的函數(shù)。2.問題思考理思路2.問題思考理思路3.思路分析本題,其思路如下:第一步:使用srand(time(0))函數(shù),獲取當前系統(tǒng)時間,設(shè)置隨機數(shù)種子;第二步:調(diào)用隨機函數(shù)rand()產(chǎn)生一個1~6之間的隨機數(shù);第三步:輸出隨機數(shù)n。理思路3.思路分析本題,其思路如下:理思路查秘籍1.英漢字典main[me?n]主要的;重要的
void[v??d]空的;無參數(shù);無返回值;無類型2.庫函數(shù)的使用在程序設(shè)計中,常常將一些常用的功能模塊編寫成函數(shù)放在C++庫中,叫庫函數(shù)。C++常用庫中提供了大量的可以調(diào)用的庫函數(shù),如數(shù)學(xué)運算的、文件操作的等,在編寫程序的過程中,可以直接拿來使用。格式如下:查秘籍1.英漢字典2.庫函數(shù)的使用求解決1.編寫代碼2.測試程序運行結(jié)果:第1次運行產(chǎn)生隨機數(shù)為:第2次運行產(chǎn)生隨機數(shù)為:第3次運行產(chǎn)生隨機數(shù)為:求解決1.編寫代碼2.測試程序運行結(jié)果:求解決2.程序解決3.易犯錯誤一般情況下,rand()和srand()要一起使用,其中srand()用來初始化隨機數(shù)種子,rand()用來產(chǎn)生隨機數(shù)。time()函數(shù)用來獲取系統(tǒng)時間,因為每次運行程序的時間是不相同的,所以產(chǎn)生的隨機數(shù)也是不一樣的。一般情況下,rand()和srand()要一起使用,其中srand()用來初始化隨機數(shù)種子,rand()用來產(chǎn)生隨機數(shù)。time()函數(shù)用來獲取系統(tǒng)時間,因為每次運行程序的時間是不相同的,所以產(chǎn)生的隨機數(shù)也是不一樣的。求解決2.程序解決3.易犯錯誤一般情況下,rand()和sr求解決4.拓展應(yīng)用默認情況下隨機數(shù)種子為1,而相同的隨機數(shù)種子產(chǎn)生的隨機數(shù)是一樣的,失去了隨機性的意義,所以為使每次得到的隨機數(shù)不一樣,用函數(shù)srand()初始化隨機數(shù)種子。srand()的參數(shù)是time函數(shù)的值(即當前時間),因為兩次調(diào)用rand()函數(shù)的時間通常是不同的,這樣就可以保證隨機性了。如產(chǎn)生10個1~100之間的隨機數(shù)可以這樣寫:#include<iostream>#include<cstdlib>//調(diào)用rand()和srand()函數(shù)
#include<ctime>//調(diào)用time()函數(shù)
usingnamespacestd;intmain(){inti,n;srand(time(0));for(i=0;i<10;i++){ n=rand()%100+1;cout<<n<<endl; }}求解決4.拓展應(yīng)用默認情況下隨機數(shù)種子為1,而相同的隨機數(shù)種閱覽室每個C程序都至少有一個函數(shù),即主函數(shù)main()。每個程序可以包含若干個其他函數(shù),但有且只有一個main函數(shù)。程序總是從main函數(shù)開始執(zhí)行,在程序執(zhí)行時main函數(shù)可以調(diào)用其他函數(shù),其他函數(shù)也可以互相調(diào)用,但其他函數(shù)不能調(diào)用main函數(shù)。1.主函數(shù)閱覽室每個C程序都至少有一個函數(shù),即主函數(shù)main()。每個閱覽室2.常用數(shù)學(xué)函數(shù)
編寫程序時,如果需要解決一些數(shù)學(xué)問題,此時千萬不要著急先去寫代碼,C++庫中提供了很多數(shù)學(xué)函數(shù),隨時可以調(diào)用,這些庫函數(shù)多包含中<cmath>庫中。閱覽室2.常用數(shù)學(xué)函數(shù)編寫程序時,如果需要解決一些數(shù)學(xué)問練武功1.閱讀程序?qū)懡Y(jié)果輸入:5輸入:-8輸出:
輸出:
練武功1.閱讀程序?qū)懡Y(jié)果輸入:5輸入:練武功2.修改程序錯誤1:
錯誤2:
下面這段代碼是求一個實數(shù)的平方根,其中有2處錯誤,快來改正吧!
練武功2.修改程序錯誤1:錯誤練武功3.完善程序傳說古代的敘拉古國王海倫二世發(fā)現(xiàn)一個公式,利用三角形的三條邊長可以用來求取三角形面積。已知△ABC中的三邊長分別為a,b,c,求△ABC的面積(提示:海倫公式如下,其中p=(a+b+c)/2)。練武功3.完善程序傳說古代的敘拉古國王海倫二世發(fā)現(xiàn)一個公式,練武功4.編寫程序
班級聯(lián)歡會上要舉行抽獎活動,全班50名同學(xué)每人都拿到了1個抽獎號,試編寫程序?qū)崿F(xiàn)隨機抽獎活動,每次抽出5位幸運同學(xué)。練武功4.編寫程序班級聯(lián)歡會上要舉行抽獎活剪刀石頭布游戲――自定義函數(shù)第28課剪刀石頭布游戲――自定義函數(shù)第28課
剪刀石頭布,是一種非常簡單而有趣的小游戲,游戲規(guī)則很簡單,通過剪刀,石頭,布三種手勢判斷勝負,即剪刀勝布,布勝石頭,石頭勝剪刀。現(xiàn)在,需要你編寫一個程序,判斷人與電腦進行剪刀石頭布游戲的結(jié)果。讀故事剪刀石頭布,是一種非常簡單而有趣的小游戲,游戲規(guī)則很簡單理思路這是一個猜拳游戲(剪刀勝布,布勝石頭,石頭勝剪刀),人與電腦對決。人出的拳由自己決定,電腦則隨機出拳,最后判斷勝負。
1.理解題意理思路這是一個猜拳游戲(剪刀勝布,布勝石頭,石頭勝剪刀),人2.問題思考理思路2.問題思考理思路3.算法分析本題可通過自定義不同的函數(shù)來實現(xiàn)特定的功能,思路如下:第一步:定義一個玩家出拳函數(shù)voidplayer(inta);第二步:定義電腦出拳函數(shù)intcomputer();第三步:定義判斷輸贏函數(shù)voidpd(intx,intn)。理思路3.算法分析本題可通過自定義不同的函數(shù)來實現(xiàn)特定的功能,思路查秘籍1.函數(shù)的定義當C++提供給我們的標準函數(shù)不能滿足需要時,沒關(guān)系,我們也可以自己編寫函數(shù)的。在C++語言中,函數(shù)是由函數(shù)頭和函數(shù)體組成,每個組成部分都有著不同的作用。函數(shù)定義的一般格式如下:查秘籍1.函數(shù)的定義查秘籍2.函數(shù)定義的說明(1)返回值類型函數(shù)的數(shù)據(jù)類型是函數(shù)的返回值類型,可能是int、double、char等,若數(shù)據(jù)類型為void,則無返回值。(2)函數(shù)名函數(shù)名是函數(shù)的實際名稱。一個程序中除了主函數(shù)必須為main外,其余函數(shù)的名稱按照變量的取名規(guī)則命名,最好取有助于記憶的名字。(3)形式參數(shù)形式參數(shù)(簡稱形參)表可以是空的(即無參函數(shù));也可以有多個形參,形參間用逗號隔開,不管有無參數(shù),函數(shù)名后的圓括號都必須有。(4)函數(shù)主體函數(shù)主體包含一組定義函數(shù)執(zhí)行任務(wù)的語句。函數(shù)體內(nèi)的語句決定該函數(shù)功能。函數(shù)體實際上是一個復(fù)合語句,它可以沒有任何類型說明,而只有語句,也可以兩者都沒有,即空函數(shù)。查秘籍2.函數(shù)定義的說明求解決1.編寫代碼求解決1.編寫代碼求解決2.測試程序
求解決2.測試程序求解決3.程序解決4.易犯錯誤首先,我們需要定義3個函數(shù)來完成玩家出拳(player)、電腦出拳頭(computer)和比較判斷(pd)結(jié)果。然后給出文字提示,讓玩家輸入對應(yīng)的數(shù)字代表玩家出拳。玩家出拳結(jié)束,電腦開始出拳,電腦通過產(chǎn)生隨機數(shù)來出拳。剪刀石頭布游戲規(guī)則很簡單,即剪刀勝布,布勝石頭,石頭勝剪刀。如果x代表人出拳,n代表電腦出拳,1代表剪刀,2代表石頭,3代表布,則通過以下邏輯表達式,判斷人和電腦對決輸贏的結(jié)果。求解決3.程序解決4.易犯錯誤首先,我們需要定義3個函數(shù)來完求解決5.程序改進想一想,為了避免玩一次游戲就退出程序,可以將主程序代碼放在循環(huán)中,while(1)條件一直成立,這樣可以一直不斷在玩,添加如下所示代碼。intmain(){while(1){cout<<"剪刀石頭布開始\n"<<endl;cout<<"請選擇:1.剪刀2.石頭3.布"<<endl;cin>>x;player(x);n=computer();pd(x,n);}}6.拓展應(yīng)用在本程序末尾還可以添加用于統(tǒng)計整個戰(zhàn)況的代碼,如cout<<"戰(zhàn)況:贏:"<<y<<"次輸:"<<s<<"次平:"<<p<<"次"<<endl。求解決5.程序改進想一想,為了避免玩一次游戲就退出程序,可以閱覽室一個C++程序可由一個主函數(shù)和若干個其他函數(shù)構(gòu)成。一個較大的程序可分為若干個程序模塊,每一個模塊用來實現(xiàn)一個特定的功能。在C++語言中用子程序?qū)崿F(xiàn)模塊的功能。子程序由函數(shù)來完成。1.主函數(shù)與其他函數(shù)閱覽室一個C++程序可由一個主函數(shù)和若干個其他函數(shù)構(gòu)成。一個閱覽室2.形式參數(shù)與實際參數(shù)
函數(shù)的參數(shù)分為形式參數(shù)和實際參數(shù)。在定義函數(shù)時,函數(shù)名后面圓括號中的變量名稱為形式參數(shù),簡稱“形參”。調(diào)用函數(shù)時函數(shù)名后面圓括號中的參數(shù)稱為實際參數(shù),也叫實參。調(diào)用函數(shù)將實際參數(shù)傳遞給形式參數(shù),然后執(zhí)行函數(shù)體。閱覽室2.形式參數(shù)與實際參數(shù)函數(shù)的參數(shù)分為形式參數(shù)和實際練武功1.閱讀程序?qū)懡Y(jié)果練武功1.閱讀程序?qū)懡Y(jié)果練武功2.修改程序下面這段代碼是定義一個輸出“*”的函數(shù),利用它輸出三角形的“*”號圖,其中,輸出的行數(shù)在程序運行時輸入。其中有2處錯誤,快來改正吧!錯誤1:
錯誤2:
練武功2.修改程序下面這段代碼是定義一個輸出“*”的函數(shù),利練武功3.完善程序練武功3.完善程序練武功4.編寫程序
已知1個六邊形,其六邊形的面積是4個三角形面積之和,已知4個三角形各邊的長度,求六邊形的面積。請利用函數(shù)編程求解此題(提示:六邊形的面積等于四個三角形的面積)。練武功4.編寫程序已知1個六邊形,其六邊形的面積是4古老漢諾塔游戲――函數(shù)聲明和調(diào)用第29課古老漢諾塔游戲――函數(shù)聲明和調(diào)用第29課
有一個的古老傳說:在印度北部的一個圣廟里,大梵天創(chuàng)造世界的時候做了3根金剛石柱子A、B、C。其中,在A柱子上穿好了由小到大,且編號為1到n的黃金圓盤,這就是所謂的漢諾塔。有一位僧侶,不論白天黑夜要將所有的圓盤從A柱子移到C柱子,但他同時要遵守以下規(guī)則:(1)一次只能移動1個圓盤,它必須位于某個柱子的頂部;(2)圓盤只能在三個柱子上存放。(3)大圓盤不能放在小圓盤上面。試編程輸出每一步移動的方法。并估算下,要將A柱上的64個圓盤,按規(guī)則要求全部移動到C柱上,需要多長時間。讀故事有一個的古老傳說:在印度北部的一個圣廟里,大梵天創(chuàng)造世界的理思路
游戲最簡單的情況是當只有1個圓盤時,只要將圓盤從A柱移到C柱上就可以了。如果有2個圓盤,則需要通過3個步驟解決這個游戲:①將1號圓盤從A柱移到B柱上;②將2號圓盤從A柱移到C柱上。③再將1號圓盤從B柱移C到柱上。以此類推,雖然游戲的目的是將圓盤從A柱移到C柱上,但是有必要使用B柱作為圓盤的臨時安放位置??梢远x函數(shù)hanoi(n,a,b,c),通過遞歸解決該問題。1.理解題意理思路游戲最簡單的情況是當只有1個圓盤時,只要將圓2.問題思考理思路2.問題思考理思路3.算法分析本題要求用最少的移動次數(shù),把1到n號圓盤從A柱經(jīng)過B柱移動到C柱。根據(jù)分析,需要經(jīng)過以下幾步:第一步:用最少移動次數(shù)把1到n-1號圓盤從A柱經(jīng)過C柱移動到B柱;第二步:把n號圓盤直接從A柱移動到C柱;第三步:用最少移動次數(shù)把1到n-1號圓盤從B柱經(jīng)過A柱移動到C柱。觀察發(fā)現(xiàn),第1步和第3步與原問題的本質(zhì)是一樣的,只是圓盤數(shù)量在減少,源柱、中間柱和目標柱的狀態(tài)發(fā)生了變化。至此,遞歸關(guān)系比較明顯,遞歸終止條件就是當n=1時,直接從A柱移動到C柱即可。理思路3.算法分析本題要求用最少的移動次數(shù),把1到n號圓盤從A柱經(jīng)查秘籍1.函數(shù)的聲明與調(diào)用編寫程序時,若想調(diào)用函數(shù),必須先告訴計算機,也就是要先聲明函數(shù)。只有聲明了函數(shù)之后,才可以按規(guī)定格式調(diào)用函數(shù)。具體格式如下:如果在所有函數(shù)定義之前聲明了函數(shù),那么該函數(shù)在本程序文件中任何地方都有效。如果是在某個主調(diào)函數(shù)內(nèi)部聲明了被調(diào)用函數(shù),那么該函數(shù)就只能在這個函數(shù)內(nèi)部有效。函數(shù)聲明與函數(shù)定義時的第一行類似,只多了1個“;”號。查秘籍1.函數(shù)的聲明與調(diào)用如果在所有函數(shù)定義之前聲明了函數(shù),查秘籍2.函數(shù)的返回值在組成函數(shù)體的各類語句中,在程序的最后要加一個返回語句return。它的一般形式是:return(表達式);其功能是把程序流程從被調(diào)函數(shù)轉(zhuǎn)向主調(diào)函數(shù)并把表達式的值帶回主調(diào)函數(shù),實現(xiàn)函數(shù)的返回。當一個函數(shù)類型定義為void,或沒有返回值時,函數(shù)中可以沒有return語句;函數(shù)類型定義為int,必須有返回值。查秘籍2.函數(shù)的返回值求解決1.編寫代碼2.測試程序輸入:1運行結(jié)果:
輸入:2運行結(jié)果:
輸入:3運行結(jié)果:
求解決1.編寫代碼2.測試程序輸入:1輸入:2輸入:3求解決3.程序解決4.易犯錯誤如果要把64個圓盤,由一根柱上移到另一根柱上,并且始終保持上小下大的順序。這需要多少次移動呢?通過遞歸的方法,假設(shè)有n片,移動次數(shù)是f(n),顯然f(1)=1,f(2)=3,f(3)=7,且f(k+1)=2*f(k)+1,且不難證明f(n)=2n-1。n=64時,f(n)=18446744073709551615。這個數(shù)字非常龐大,如每秒鐘一次,共需多長時間呢?假如一個平年365天,才有60秒×60分×24小時×365=31536000秒,因此,移完這些圓盤需要5845.54億年以上,而地球存在至今不過45億年。因此,眾僧們即便是耗盡畢生精力也不可能完成64個圓盤的移動。函數(shù)定義與函數(shù)聲明是不同的,定義是寫出函數(shù)的完整形式,而聲明是告訴系統(tǒng)此函數(shù)的返回值類型、參數(shù)的個數(shù)與類型,便于編譯時進行有效的類型檢查。函數(shù)聲明與函數(shù)定義時的第一行類似,只多了1個“;”號。在函數(shù)定義時,函數(shù)名后沒有分號。求解決3.程序解決4.易犯錯誤如果要把64個圓盤,由一根柱上求解決5.程序改進在C語言中,除了主函數(shù)外,對于用戶定義的函數(shù)要遵循“先定義,后使用”的規(guī)則。若把函數(shù)的定義放在調(diào)用之后,應(yīng)該在調(diào)用之前對函數(shù)進行聲明(或稱為函數(shù)說明)。但若被調(diào)函數(shù)的定義出現(xiàn)在主調(diào)函數(shù)之前,也可以不進行函數(shù)聲明。程序代碼如下所示。求解決5.程序改進在C語言中,除了主函數(shù)外,對于用戶定義的函求解決6.拓展應(yīng)用在印度還有一個傳說,國王打算獎賞國際象棋的發(fā)明人——宰相西達依爾。就問他想要什么,他對國王說:“陛下,請您在這張棋盤的第1個小格里賞給我一粒麥子,在第2個小格里給2粒,第3個小格給4粒,以后每一小格都比前一小格加一倍。請您把這樣擺滿棋盤上所有64格的麥粒,都賞給您的仆人吧!”國王覺得這個要求太容易滿足了,就命令給他這些麥粒。當人們把一袋一袋的麥子搬來開始計數(shù)時,國王才發(fā)現(xiàn),就是把全印度甚至全世界的麥粒全拿來,也滿足不了那位宰相的要求。那么,宰相要求得到的麥粒到底有多少呢?總數(shù)為1+2+2^2+…+2^63=2^64-1等于移完漢諾塔所需的步驟數(shù)。我們已經(jīng)知道這個數(shù)字有多么大了。人們估計,全世界兩千年也難以生產(chǎn)這么多麥子!求解決6.拓展應(yīng)用在印度還有一個傳說,國王打算獎賞國際象棋的閱覽室定義在函數(shù)外部沒有被花括號括起來的變量稱為全局變量。全局變量的作用域是從變量定義的位置開始,到源程序文件結(jié)束。1.全局變量2.局部變量定義在函數(shù)內(nèi)部,作用域為局部的變量稱為局部變量。換句話說,局部變量只在定義它的函數(shù)內(nèi)有效。函數(shù)的形參和在該函數(shù)里定義的變量都屬于局部變量。閱覽室定義在函數(shù)外部沒有被花括號括起來的變量稱為全局變量。全練武功1.閱讀程序?qū)懡Y(jié)果輸出:
練武功1.閱讀程序?qū)懡Y(jié)果輸出:練武功2.修改程序錯誤1:
錯誤2:
在函數(shù)內(nèi)部直接或間接地調(diào)用自己的函數(shù),稱為遞歸函數(shù)。下面是利用遞歸函數(shù)求n的階乘,其中有2處錯誤,快來改正吧!練武功2.修改程序錯誤1:錯誤2:練武功3.完善程序輸入一個自然數(shù),輸出它的逆序數(shù),如輸入234,輸出432。練武功3.完善程序輸入一個自然數(shù),輸出它的逆序數(shù),如輸入23練武功4.編寫程序
哥德巴赫猜想是近代三大數(shù)學(xué)難題之一,即任何一個大于2的偶數(shù),都可表示成2個素數(shù)之和。如4=2+2,6=3+3,8=3+5,10=3+7。編程定義一個判斷素數(shù)的函數(shù),利用它驗證4~n之間的偶數(shù)都能分解為2個素數(shù)之和,其中n>=4。練武功4.編寫程序哥德巴赫猜想是近代三大數(shù)學(xué)難題之一,感謝觀看感謝觀看Hi,Pythonlist,tuple,dictionary感謝觀看感謝觀看Hi,Python英第8單元C++快樂編程——小學(xué)C++創(chuàng)意編程實例(課件)堂課Hi,Pythonlist,tuple,dictionary語復(fù)雜問題,函數(shù)上陣——函數(shù)英第8單元C++快樂編程——小學(xué)C++創(chuàng)意編程實例(課件目錄目錄第27課老鷹捉小雞游戲――庫函數(shù)第28課剪刀石頭布游戲——自定義函數(shù)第29課古老漢諾塔游戲——函數(shù)的聲明和調(diào)用目錄目錄第27課老鷹捉小雞游戲――庫函數(shù)第28課剪刀老鷹捉小雞游戲――庫函數(shù)第27課老鷹捉小雞游戲――庫函數(shù)第27課
體育課上,皮皮魯與小伙伴玩老鷹捉小雞的游。皮皮魯?shù)男』锇?,一共?位小朋友,按1至6號進行編號,從中隨機選擇一位當老鷹。皮皮魯準備編程調(diào)用隨機函數(shù)rand(),產(chǎn)生一個機隨數(shù),隨機數(shù)是幾,就讓幾號小朋友來當老鷹。讀故事體育課上,皮皮魯與小伙伴玩老鷹捉小雞的游。理思路C++函數(shù)有兩種,一種是庫函數(shù),一種是自己編寫的函數(shù)。常見的庫函數(shù)有隨機函數(shù)rand()、時間函數(shù)time()等。在編程時,這些函數(shù)不需要自己定義和編寫,如果想使用這些庫函數(shù),必須在文件開頭“包含”有關(guān)頭文件即可,本題中需要添加的頭文件是<stdlib.h>和<time.h>。1.理解題意理思路C++函數(shù)有兩種,一種是庫函數(shù),一種是自己編寫的函數(shù)。2.問題思考理思路2.問題思考理思路3.思路分析本題,其思路如下:第一步:使用srand(time(0))函數(shù),獲取當前系統(tǒng)時間,設(shè)置隨機數(shù)種子;第二步:調(diào)用隨機函數(shù)rand()產(chǎn)生一個1~6之間的隨機數(shù);第三步:輸出隨機數(shù)n。理思路3.思路分析本題,其思路如下:理思路查秘籍1.英漢字典main[me?n]主要的;重要的
void[v??d]空的;無參數(shù);無返回值;無類型2.庫函數(shù)的使用在程序設(shè)計中,常常將一些常用的功能模塊編寫成函數(shù)放在C++庫中,叫庫函數(shù)。C++常用庫中提供了大量的可以調(diào)用的庫函數(shù),如數(shù)學(xué)運算的、文件操作的等,在編寫程序的過程中,可以直接拿來使用。格式如下:查秘籍1.英漢字典2.庫函數(shù)的使用求解決1.編寫代碼2.測試程序運行結(jié)果:第1次運行產(chǎn)生隨機數(shù)為:第2次運行產(chǎn)生隨機數(shù)為:第3次運行產(chǎn)生隨機數(shù)為:求解決1.編寫代碼2.測試程序運行結(jié)果:求解決2.程序解決3.易犯錯誤一般情況下,rand()和srand()要一起使用,其中srand()用來初始化隨機數(shù)種子,rand()用來產(chǎn)生隨機數(shù)。time()函數(shù)用來獲取系統(tǒng)時間,因為每次運行程序的時間是不相同的,所以產(chǎn)生的隨機數(shù)也是不一樣的。一般情況下,rand()和srand()要一起使用,其中srand()用來初始化隨機數(shù)種子,rand()用來產(chǎn)生隨機數(shù)。time()函數(shù)用來獲取系統(tǒng)時間,因為每次運行程序的時間是不相同的,所以產(chǎn)生的隨機數(shù)也是不一樣的。求解決2.程序解決3.易犯錯誤一般情況下,rand()和sr求解決4.拓展應(yīng)用默認情況下隨機數(shù)種子為1,而相同的隨機數(shù)種子產(chǎn)生的隨機數(shù)是一樣的,失去了隨機性的意義,所以為使每次得到的隨機數(shù)不一樣,用函數(shù)srand()初始化隨機數(shù)種子。srand()的參數(shù)是time函數(shù)的值(即當前時間),因為兩次調(diào)用rand()函數(shù)的時間通常是不同的,這樣就可以保證隨機性了。如產(chǎn)生10個1~100之間的隨機數(shù)可以這樣寫:#include<iostream>#include<cstdlib>//調(diào)用rand()和srand()函數(shù)
#include<ctime>//調(diào)用time()函數(shù)
usingnamespacestd;intmain(){inti,n;srand(time(0));for(i=0;i<10;i++){ n=rand()%100+1;cout<<n<<endl; }}求解決4.拓展應(yīng)用默認情況下隨機數(shù)種子為1,而相同的隨機數(shù)種閱覽室每個C程序都至少有一個函數(shù),即主函數(shù)main()。每個程序可以包含若干個其他函數(shù),但有且只有一個main函數(shù)。程序總是從main函數(shù)開始執(zhí)行,在程序執(zhí)行時main函數(shù)可以調(diào)用其他函數(shù),其他函數(shù)也可以互相調(diào)用,但其他函數(shù)不能調(diào)用main函數(shù)。1.主函數(shù)閱覽室每個C程序都至少有一個函數(shù),即主函數(shù)main()。每個閱覽室2.常用數(shù)學(xué)函數(shù)
編寫程序時,如果需要解決一些數(shù)學(xué)問題,此時千萬不要著急先去寫代碼,C++庫中提供了很多數(shù)學(xué)函數(shù),隨時可以調(diào)用,這些庫函數(shù)多包含中<cmath>庫中。閱覽室2.常用數(shù)學(xué)函數(shù)編寫程序時,如果需要解決一些數(shù)學(xué)問練武功1.閱讀程序?qū)懡Y(jié)果輸入:5輸入:-8輸出:
輸出:
練武功1.閱讀程序?qū)懡Y(jié)果輸入:5輸入:練武功2.修改程序錯誤1:
錯誤2:
下面這段代碼是求一個實數(shù)的平方根,其中有2處錯誤,快來改正吧!
練武功2.修改程序錯誤1:錯誤練武功3.完善程序傳說古代的敘拉古國王海倫二世發(fā)現(xiàn)一個公式,利用三角形的三條邊長可以用來求取三角形面積。已知△ABC中的三邊長分別為a,b,c,求△ABC的面積(提示:海倫公式如下,其中p=(a+b+c)/2)。練武功3.完善程序傳說古代的敘拉古國王海倫二世發(fā)現(xiàn)一個公式,練武功4.編寫程序
班級聯(lián)歡會上要舉行抽獎活動,全班50名同學(xué)每人都拿到了1個抽獎號,試編寫程序?qū)崿F(xiàn)隨機抽獎活動,每次抽出5位幸運同學(xué)。練武功4.編寫程序班級聯(lián)歡會上要舉行抽獎活剪刀石頭布游戲――自定義函數(shù)第28課剪刀石頭布游戲――自定義函數(shù)第28課
剪刀石頭布,是一種非常簡單而有趣的小游戲,游戲規(guī)則很簡單,通過剪刀,石頭,布三種手勢判斷勝負,即剪刀勝布,布勝石頭,石頭勝剪刀?,F(xiàn)在,需要你編寫一個程序,判斷人與電腦進行剪刀石頭布游戲的結(jié)果。讀故事剪刀石頭布,是一種非常簡單而有趣的小游戲,游戲規(guī)則很簡單理思路這是一個猜拳游戲(剪刀勝布,布勝石頭,石頭勝剪刀),人與電腦對決。人出的拳由自己決定,電腦則隨機出拳,最后判斷勝負。
1.理解題意理思路這是一個猜拳游戲(剪刀勝布,布勝石頭,石頭勝剪刀),人2.問題思考理思路2.問題思考理思路3.算法分析本題可通過自定義不同的函數(shù)來實現(xiàn)特定的功能,思路如下:第一步:定義一個玩家出拳函數(shù)voidplayer(inta);第二步:定義電腦出拳函數(shù)intcomputer();第三步:定義判斷輸贏函數(shù)voidpd(intx,intn)。理思路3.算法分析本題可通過自定義不同的函數(shù)來實現(xiàn)特定的功能,思路查秘籍1.函數(shù)的定義當C++提供給我們的標準函數(shù)不能滿足需要時,沒關(guān)系,我們也可以自己編寫函數(shù)的。在C++語言中,函數(shù)是由函數(shù)頭和函數(shù)體組成,每個組成部分都有著不同的作用。函數(shù)定義的一般格式如下:查秘籍1.函數(shù)的定義查秘籍2.函數(shù)定義的說明(1)返回值類型函數(shù)的數(shù)據(jù)類型是函數(shù)的返回值類型,可能是int、double、char等,若數(shù)據(jù)類型為void,則無返回值。(2)函數(shù)名函數(shù)名是函數(shù)的實際名稱。一個程序中除了主函數(shù)必須為main外,其余函數(shù)的名稱按照變量的取名規(guī)則命名,最好取有助于記憶的名字。(3)形式參數(shù)形式參數(shù)(簡稱形參)表可以是空的(即無參函數(shù));也可以有多個形參,形參間用逗號隔開,不管有無參數(shù),函數(shù)名后的圓括號都必須有。(4)函數(shù)主體函數(shù)主體包含一組定義函數(shù)執(zhí)行任務(wù)的語句。函數(shù)體內(nèi)的語句決定該函數(shù)功能。函數(shù)體實際上是一個復(fù)合語句,它可以沒有任何類型說明,而只有語句,也可以兩者都沒有,即空函數(shù)。查秘籍2.函數(shù)定義的說明求解決1.編寫代碼求解決1.編寫代碼求解決2.測試程序
求解決2.測試程序求解決3.程序解決4.易犯錯誤首先,我們需要定義3個函數(shù)來完成玩家出拳(player)、電腦出拳頭(computer)和比較判斷(pd)結(jié)果。然后給出文字提示,讓玩家輸入對應(yīng)的數(shù)字代表玩家出拳。玩家出拳結(jié)束,電腦開始出拳,電腦通過產(chǎn)生隨機數(shù)來出拳。剪刀石頭布游戲規(guī)則很簡單,即剪刀勝布,布勝石頭,石頭勝剪刀。如果x代表人出拳,n代表電腦出拳,1代表剪刀,2代表石頭,3代表布,則通過以下邏輯表達式,判斷人和電腦對決輸贏的結(jié)果。求解決3.程序解決4.易犯錯誤首先,我們需要定義3個函數(shù)來完求解決5.程序改進想一想,為了避免玩一次游戲就退出程序,可以將主程序代碼放在循環(huán)中,while(1)條件一直成立,這樣可以一直不斷在玩,添加如下所示代碼。intmain(){while(1){cout<<"剪刀石頭布開始\n"<<endl;cout<<"請選擇:1.剪刀2.石頭3.布"<<endl;cin>>x;player(x);n=computer();pd(x,n);}}6.拓展應(yīng)用在本程序末尾還可以添加用于統(tǒng)計整個戰(zhàn)況的代碼,如cout<<"戰(zhàn)況:贏:"<<y<<"次輸:"<<s<<"次平:"<<p<<"次"<<endl。求解決5.程序改進想一想,為了避免玩一次游戲就退出程序,可以閱覽室一個C++程序可由一個主函數(shù)和若干個其他函數(shù)構(gòu)成。一個較大的程序可分為若干個程序模塊,每一個模塊用來實現(xiàn)一個特定的功能。在C++語言中用子程序?qū)崿F(xiàn)模塊的功能。子程序由函數(shù)來完成。1.主函數(shù)與其他函數(shù)閱覽室一個C++程序可由一個主函數(shù)和若干個其他函數(shù)構(gòu)成。一個閱覽室2.形式參數(shù)與實際參數(shù)
函數(shù)的參數(shù)分為形式參數(shù)和實際參數(shù)。在定義函數(shù)時,函數(shù)名后面圓括號中的變量名稱為形式參數(shù),簡稱“形參”。調(diào)用函數(shù)時函數(shù)名后面圓括號中的參數(shù)稱為實際參數(shù),也叫實參。調(diào)用函數(shù)將實際參數(shù)傳遞給形式參數(shù),然后執(zhí)行函數(shù)體。閱覽室2.形式參數(shù)與實際參數(shù)函數(shù)的參數(shù)分為形式參數(shù)和實際練武功1.閱讀程序?qū)懡Y(jié)果練武功1.閱讀程序?qū)懡Y(jié)果練武功2.修改程序下面這段代碼是定義一個輸出“*”的函數(shù),利用它輸出三角形的“*”號圖,其中,輸出的行數(shù)在程序運行時輸入。其中有2處錯誤,快來改正吧!錯誤1:
錯誤2:
練武功2.修改程序下面這段代碼是定義一個輸出“*”的函數(shù),利練武功3.完善程序練武功3.完善程序練武功4.編寫程序
已知1個六邊形,其六邊形的面積是4個三角形面積之和,已知4個三角形各邊的長度,求六邊形的面積。請利用函數(shù)編程求解此題(提示:六邊形的面積等于四個三角形的面積)。練武功4.編寫程序已知1個六邊形,其六邊形的面積是4古老漢諾塔游戲――函數(shù)聲明和調(diào)用第29課古老漢諾塔游戲――函數(shù)聲明和調(diào)用第29課
有一個的古老傳說:在印度北部的一個圣廟里,大梵天創(chuàng)造世界的時候做了3根金剛石柱子A、B、C。其中,在A柱子上穿好了由小到大,且編號為1到n的黃金圓盤,這就是所謂的漢諾塔。有一位僧侶,不論白天黑夜要將所有的圓盤從A柱子移到C柱子,但他同時要遵守以下規(guī)則:(1)一次只能移動1個圓盤,它必須位于某個柱子的頂部;(2)圓盤只能在三個柱子上存放。(3)大圓盤不能放在小圓盤上面。試編程輸出每一步移動的方法。并估算下,要將A柱上的64個圓盤,按規(guī)則要求全部移動到C柱上,需要多長時間。讀故事有一個的古老傳說:在印度北部的一個圣廟里,大梵天創(chuàng)造世界的理思路
游戲最簡單的情況是當只有1個圓盤時,只要將圓盤從A柱移到C柱上就可以了。如果有2個圓盤,則需要通過3個步驟解決這個游戲:①將1號圓盤從A柱移到B柱上;②將2號圓盤從A柱移到C柱上。③再將1號圓盤從B柱移C到柱上。以此類推,雖然游戲的目的是將圓盤從A柱移到C柱上,但是有必要使用B柱作為圓盤的臨時安放位置??梢远x函數(shù)hanoi(n,a,b,c),通過遞歸解決該問題。1.理解題意理思路游戲最簡單的情況是當只有1個圓盤時,只要將圓2.問題思考理思路2.問題思考理思路3.算法分析本題要求用最少的移動次數(shù),把1到n號圓盤從A柱經(jīng)過B柱移動到C柱。根據(jù)分析,需要經(jīng)過以下幾步:第一步:用最少移動次數(shù)把1到n-1號圓盤從A柱經(jīng)過C柱移動到B柱;第二步:把n號圓盤直接從A柱移動到C柱;第三步:用最少移動次數(shù)把1到n-1號圓盤從B柱經(jīng)過A柱移動到C柱。觀察發(fā)現(xiàn),第1步和第3步與原問題的本質(zhì)是一樣的,只是圓盤數(shù)量在減少,源柱、中間柱和目標柱的狀態(tài)發(fā)生了變化。至此,遞歸關(guān)系比較明顯,遞歸終止條件就是當n=1時,直接從A柱移動到C柱即可。理思路3.算法分析本題要求用最少的移動次數(shù),把1到n號圓盤從A柱經(jīng)查秘籍1.函數(shù)的聲明與調(diào)用編寫程序時,若想調(diào)用函數(shù),必須先告訴計算機,也就是要先聲明函數(shù)。只有聲明了函數(shù)之后,才可以按規(guī)定格式調(diào)用函數(shù)。具體格式如下:如果在所有函數(shù)定義之前聲明了函數(shù),那么該函數(shù)在本程序文件中任何地方都有效。如果是在某個主調(diào)函數(shù)內(nèi)部聲明了被調(diào)用函數(shù),那么該函數(shù)就只能在這個函數(shù)內(nèi)部有效。函數(shù)聲明與函數(shù)定義時的第一行類似,只多了1個“;”號。查秘籍1.函數(shù)的聲明與調(diào)用如果在所有函數(shù)定義之前聲明了函數(shù),查秘籍2.函數(shù)的返回值在組成函數(shù)體的各類語句中,在程序的最后要加一個返回語句return。它的一般形式是:return(表達式);其功能是把程序流程從被調(diào)函數(shù)轉(zhuǎn)向主調(diào)函數(shù)并把表達式的值帶回主調(diào)函數(shù),實現(xiàn)函數(shù)的返回。當一個函數(shù)類型定義為void,或沒有返回值時,函數(shù)中可以沒有return語句;函數(shù)類型定義為int,必須有返回值。查秘籍2.函數(shù)的返回值求解決1.編寫代碼2.測試程序輸入:1運行結(jié)果:
輸入:2運行結(jié)果:
輸入:3運行結(jié)果:
求解決1.編寫代碼2.測試程序輸入:1輸入:2輸入:3求解決3.程序解決4.易犯錯誤如果要把64個圓盤,由一根柱上移到另一根柱上,并且始終保持上小下大的順序。這需要多少次移動呢?通過遞歸的方法,假設(shè)有n片,移動次數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州城市職業(yè)學(xué)院《安全評價理論與技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽職業(yè)技術(shù)學(xué)院《人機工程研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025青海省建筑安全員《A證》考試題庫
- 生態(tài)保護修復(fù)和水土流失綜合治理項目可行性研究報告-生態(tài)修復(fù)需求迫切
- 貴陽人文科技學(xué)院《工科大學(xué)化學(xué)-有機化學(xué)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州中醫(yī)藥大學(xué)《物流信息系統(tǒng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025陜西建筑安全員C證考試題庫
- 2025云南省建筑安全員《A證》考試題庫
- 廣州應(yīng)用科技學(xué)院《鋼筋混凝土原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025山西省建筑安全員C證(專職安全員)考試題庫
- 17J008擋土墻(重力式、衡重式、懸臂式)圖示圖集
- 2025年濟南鐵路局招聘筆試參考題庫含答案解析
- 2024至2030年中國大顆粒尿素行業(yè)投資前景及策略咨詢研究報告
- 《長方體和正方體》復(fù)習(教案)
- 超聲技術(shù)報告范文
- 思想道德與法治(同濟大學(xué))知到智慧樹章節(jié)答案
- 小學(xué)語文閱讀理解24個萬能答題公式
- 湖南省懷化市2023-2024學(xué)年七年級上學(xué)期語文期末試卷(含答案)
- 《廊坊市綠色建筑專項規(guī)劃(2020-2025)》
- 2024-2030年中國濕巾行業(yè)發(fā)展趨勢及競爭策略分析報告
- 2023-2024學(xué)年全國小學(xué)二年級上語文人教版期末試卷(含答案解析)
評論
0/150
提交評論