C++入門培訓(xùn)講義_第1頁(yè)
C++入門培訓(xùn)講義_第2頁(yè)
C++入門培訓(xùn)講義_第3頁(yè)
C++入門培訓(xùn)講義_第4頁(yè)
C++入門培訓(xùn)講義_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、武平一中信息學(xué)奧林匹克競(jìng)賽校本課程C+編程第一課時(shí):認(rèn)識(shí)C+程序和DEV-C+集成開發(fā)環(huán)境一學(xué)習(xí)目標(biāo):1認(rèn)識(shí)C+程序結(jié)構(gòu);2掌握編程基本步驟;3記住“保存”、“編譯”和“運(yùn)行”的快捷鍵(ctrl+s、F9、F10)二學(xué)習(xí)內(nèi)容與步驟:1雙擊桌面圖標(biāo),啟動(dòng)DEV-C+集成開發(fā)環(huán)境,單擊“文件”菜單下的“新建>源代碼”命令,在程序編輯區(qū)輸入下面程序:#include<iostream>#include<cstdlib>using namespace std;int main()cout<<"hello"system("pause

2、");return 0;2輸入完畢,單擊“文件”菜單下的保存命令。在彈出的“保存文件”對(duì)話框中保存位置選擇“桌面”,文件名為“ex1”,文件類型為c+不必修改,單擊保存。3單擊“運(yùn)行”菜單下的“編譯”命令,窗口出現(xiàn)紅色條時(shí)說明程序有錯(cuò)誤,請(qǐng)對(duì)照修改,直到正確為止。4單擊“運(yùn)行”菜單下的“運(yùn)行”命令;彈出新窗口,觀察新窗口中內(nèi)容,按一下鍵盤任意鍵(通常按空格鍵),返回編輯界面。5單擊“文件”菜單“退出”命令,結(jié)束。6觀察桌面的ex1.cpp和 ex1.exe兩個(gè)文件,雙擊“ex1.exe”試試,ex1.cpp稱為源程序,ex1.exe稱為可執(zhí)行程序,雖然這個(gè)程序簡(jiǎn)單了一點(diǎn),但是電腦中的

3、程序就是這樣設(shè)計(jì)出來的。7參考以上步驟,輸入下面這個(gè)程序:#include <iostream>using namespace std;int main()int a,b,c;cin>>a>>b;c=a+b;cout<<c;return 0;程序運(yùn)行之后,需要輸入2個(gè)整數(shù),輸完第一個(gè)數(shù)按一下空格鍵,輸完第二個(gè)數(shù)按一下Enter(回車鍵)。觀察程序運(yùn)行結(jié)果,說說這個(gè)程序的作用是什么?三參考書:全國(guó)青少年信息學(xué)奧林匹克競(jìng)賽教程 信息學(xué)奧賽一本通(C+版) 第二版,(董永建 舒春平等主編,科學(xué)技術(shù)文獻(xiàn)出版社出版),同學(xué)們可以到圖書館借閱。第二課時(shí):C+

4、編程體驗(yàn)一學(xué)習(xí)目標(biāo):1鞏固C+程序結(jié)構(gòu),記住“保存”、“編譯”和“運(yùn)行”的快捷鍵(ctrl+s、F9、F10);2了解C+數(shù)據(jù)類型(int和float);3掌握整除和求余運(yùn)算(整除/ 求余%);4學(xué)習(xí)編寫順序結(jié)構(gòu)的C+程序。二學(xué)習(xí)內(nèi)容:1計(jì)算票價(jià)已知每張門票價(jià)格為50元,輸入游客人數(shù),計(jì)算并輸出票價(jià)。#include<iostream>using namespace std;int main ()int n,k;cin>>n;k=n*50;cout<<k<<endl;return 0;2計(jì)算梯形面積輸入梯形上底、下底和高,計(jì)算并輸出梯形面積。#i

5、nclude <iostream>using namespace std;int main ()float a,b,h,s;cin>>a>>b>>h;s=(a+b)*h/2;cout<<s<<endl;return 0;3輸入一個(gè)三位數(shù),反序輸出,比如輸入:789,輸出:987。#include <iostream>using namespace std;int main()int a,b,c,n;cin>>n;a=n % 10;b=(n /10)%10;c=n/100;cout<<a&

6、lt;<b<<c<<endl;return 0;第三課時(shí):C+選擇語(yǔ)句一學(xué)習(xí)目標(biāo):1學(xué)習(xí)if單分支和雙分支結(jié)構(gòu)語(yǔ)句;2學(xué)習(xí)switch語(yǔ)句,;3學(xué)習(xí)復(fù)合語(yǔ)句;二學(xué)習(xí)內(nèi)容:1票價(jià)打折已知每張門票價(jià)格50元,5人以上的團(tuán)體票為45元,輸入游客人數(shù),計(jì)算并輸出票價(jià)。#include<iostream>using namespace std;int main()int n,k;cin>>n;if (n>4)k=n*45;elsek=n*50; cout<<k;思考:如果題目改為:5人以上打9.5折,程序是否需要修改?2計(jì)算2017

7、年各月天數(shù)輸入2017年的月份,計(jì)算并輸出該月的天數(shù)。#include<iostream>using namespace std;int main()int month,day;cin>>month;switch(month)case 4:day=30;break;case 6:day=30;break;case 9:day=30;break;case 11:day=30;break;case 2:day=28;break;default:day=31;break;cout<<day<<endl;return 0;思考:本題也可以用if語(yǔ)句實(shí)現(xiàn),

8、請(qǐng)?jiān)囋嚒5谒恼n時(shí):C+循環(huán)語(yǔ)句(1)一上節(jié)課思考題:1票價(jià)打折已知每張門票價(jià)格50元,5人以上打9.5折,輸入游客人數(shù),計(jì)算并輸出票價(jià)。#include<iostream>using namespace std;int main()int n;float k;cin>>n;if (n>4)k=n*50*0.95;elsek=n*50; cout<<k; return 0;提示:因?yàn)?.5折是實(shí)數(shù),所以金額的變量類型應(yīng)修改為float。2計(jì)算2017年各月天數(shù)輸入2017年的月份,計(jì)算并輸出該月的天數(shù)(if語(yǔ)句實(shí)現(xiàn))。#include<iostre

9、am>using namespace std;int main()int month,day;cin>>month;day=31; /先把天數(shù)統(tǒng)一設(shè)置為31天 if (month=2) /如果是2月份,把day變量修改為28天 day=28;if (month=4)|(month=6)|(month=9)|(month=11) /如果是4月或6或9或11月,day=30; /把day變量修改為30天 cout<<day<<endl;return 0;提示:|是邏輯運(yùn)算符,“或”的意思。二、循環(huán)語(yǔ)句1導(dǎo)游購(gòu)票1已知每張門票價(jià)格50元,5人以上打9.5折。

10、售票處有10個(gè)導(dǎo)游在排隊(duì),因?yàn)槊總€(gè)旅游團(tuán)人數(shù)一般都不相同,所以每個(gè)導(dǎo)游希望購(gòu)買的門票張數(shù)也不一定相同?,F(xiàn)在要求你編寫一個(gè)程序,輸入10個(gè)導(dǎo)游需要的門票張數(shù),計(jì)算并輸出各自的總價(jià)。解題重點(diǎn):本題和原題的最主要區(qū)別是“10個(gè)導(dǎo)游在買票”,本質(zhì)上就是把原來的那個(gè)程序運(yùn)行10遍。相同的事情重復(fù)多遍,這在計(jì)算機(jī)領(lǐng)域叫“循環(huán)”。本題明確規(guī)定10遍,屬于“已知次數(shù)的循環(huán)”。要用for語(yǔ)句。參考程序:#include<iostream>using namespace std;int main()int n;float k;for (int i=1;i<=10;i+)cin>>n;

11、if (n>4)k=n*50*0.95;elsek=n*50; cout<<k<<endl; return 0;2導(dǎo)游購(gòu)票2已知每張門票價(jià)格50元,5人以上打9.5折。售票處有多個(gè)導(dǎo)游在排隊(duì),因?yàn)槊總€(gè)旅游團(tuán)人數(shù)一般都不相同,所以每個(gè)導(dǎo)游希望購(gòu)買的門票張數(shù)也不一定相同?,F(xiàn)在要求你編寫一個(gè)程序,輸入每一個(gè)導(dǎo)游需要的門票張數(shù),計(jì)算并輸出各自的總價(jià)。當(dāng)輸入的門票張數(shù)為0時(shí),程序結(jié)束。已知導(dǎo)游人數(shù)不超過100,每個(gè)導(dǎo)游購(gòu)買的門票不超過1000張。解題重點(diǎn):本題和上一題的最主要區(qū)別是“導(dǎo)游人數(shù)不確定”,也就是重復(fù)執(zhí)行的次數(shù)不確定了。這屬于“未知次數(shù)的循環(huán)”。要用while語(yǔ)句

12、。參考程序:#include<iostream>using namespace std;int main()int n;float k;cin>>n;while (n!=0) /當(dāng)輸入的門票張數(shù)不等于0的時(shí)候,就計(jì)算。 if (n>4)k=n*50*0.95; elsek=n*50;cout<<k<<endl;cin>>n; return 0;思考:今天的兩道“循環(huán)”練習(xí)題,都是輸入一張數(shù),輸出一個(gè)票價(jià)。再輸入一個(gè)張數(shù),又輸出一個(gè)票價(jià)。如果題目要求“連續(xù)輸入全部導(dǎo)游需要的門票張數(shù),再連續(xù)輸出相應(yīng)的總票價(jià)”該如何實(shí)現(xiàn)?第五課時(shí):C

13、+循環(huán)語(yǔ)句(2)學(xué)習(xí)要點(diǎn):1復(fù)習(xí)自增自減運(yùn)算符,i+與+i的區(qū)別;2For 循環(huán)、循環(huán)嵌套;練習(xí)題:1.計(jì)算1+2+3+100的和;參考程序:#include<iostream>using namespace std;int main()int s=0;for (int i=1;i<=100;+i) s=s+i;cout<<s<<endl;return 0;2.計(jì)算1*2*3*20的積;參考程序:#include<iostream>using namespace std;int main()int long long s=1;for (in

14、t i=1;i<=20;+i) s=s*i;cout<<s<<endl;return 0;3.計(jì)算1!+2!+3!+20!的和;參考程序:#include<iostream>using namespace std;int main()int long long s=0;for (int i=1;i<=20;+i) int m=1; for (int j=1;j<=i;+j) m=m*j; s=s+m;cout<<s<<endl;return 0;思考題:1 對(duì)n!和的改進(jìn);2 輸出水仙花數(shù);第6課時(shí) 數(shù)組一學(xué)習(xí)目標(biāo):

15、1掌握“數(shù)組”這一數(shù)據(jù)類型的使用場(chǎng)合;2掌握“數(shù)組”的定義、應(yīng)用;3學(xué)習(xí)排序算法。二學(xué)習(xí)內(nèi)容:1輸入一個(gè)正整數(shù)n(不超過100),再輸入n個(gè)整數(shù),按相反的順序?qū)個(gè)整數(shù)輸出。分析與探索:輸入n個(gè)整數(shù),需要等到全部輸入完畢,才可以從最后一個(gè)開始逆序輸出,所以這n個(gè)整數(shù)需要事先保存起來,這n個(gè)數(shù)的類型相同,彼此之間有一定的關(guān)系,所以用一種新的數(shù)據(jù)類型數(shù)組來定義:Int a101就定義了一個(gè)有100個(gè)元素的整型數(shù)組。參考程序:#include<iostream>using namespace std;int a101,n;int main() cin>>n; for (int

16、 i=0;i<n;+i) cin>>ai; for (int i=n-1;i>=0;-i) cout<<ai<<' ' return 0;2輸入一個(gè)正整數(shù)n(不超過100),再輸入n個(gè)整數(shù),按從小到大的順序?qū)個(gè)整數(shù)輸出。#include<iostream>using namespace std;int a101,n;int main() freopen("sort.in","r",stdin); freopen("sort.out","w"

17、;,stdout); cin>>n; for (int i=1;i<=n;+i) cin>>ai; for (int i=1;i<n;+i) for (int j=i+1;j<=n;+j) if (ai>aj) int k=ai;ai=aj;aj=k; for (int i=1;i<=n;+i) cout<<ai<<" " return 0;3作業(yè)p70例5.4約瑟夫問題4作業(yè)p76例5.8矩陣的行列交換第7課時(shí) 函數(shù)一學(xué)習(xí)目標(biāo):1掌握函數(shù)的聲明、定義、調(diào)用;2掌握函數(shù)參數(shù)類型和作用范圍;3學(xué)習(xí)遞

18、歸算法。二學(xué)習(xí)內(nèi)容:先看p107兩題作業(yè):1編程求5!+7!+9!+11!的值。2編程求c(n,m)=n!/(m!*(n-m)!) (n>0,m>0)這兩道題需要反復(fù)計(jì)算某一個(gè)數(shù)的階乘,假如存在類似sin(x)這樣的函數(shù)js(x),那么問題就輕松解決了,但c+的標(biāo)準(zhǔn)函數(shù)庫(kù)中并沒有這樣的js(x)函數(shù),需要我們自己定義。函數(shù)需要先聲明、定義,才可以調(diào)用,下面是第1題作業(yè)的參考程序:#include<iostream>using namespace std;int js(int); /聲明函數(shù)int main() cout<<js(5)+js(7)+js(9)+

19、js(11)<<endl; /調(diào)用函數(shù) return 0; int js(int x) /定義函數(shù) int s=1; for(int i=1;i<=x;+i) s=s*i; return s; 聲明函數(shù)與定義函數(shù)的區(qū)別是:聲明時(shí)括號(hào)內(nèi)可以只寫參數(shù)類型,不寫具體名稱,語(yǔ)句末尾帶一個(gè)“;”號(hào)。第8課時(shí) c+文件操作到目前為止,我們寫的程序都是從鍵盤輸入數(shù)據(jù),程序運(yùn)行之后的結(jié)果也都是從顯示器顯示,在競(jìng)賽中,程序的輸入、輸出都需要使用文件。使用freopen重定向輸入、輸出流。格式如下:freopen("sum.in","r",stdin);

20、/以只讀方式打開sum.in文件freopen("sum.out","w",stdout); /以寫入方式打開sum.out文件這樣,程序就從sum.in文件中讀取輸入數(shù)據(jù),運(yùn)行結(jié)果也保存到輸出文件sum.out中。第1題:計(jì)算a+b(文件名sum)輸入輸出樣例:sum.in 25 30sum.out55數(shù)據(jù)規(guī)模:a和b均不超過230參考程序:#include<iostream>using namespace std;int main ()int a,b;freopen("sum.in","r",std

21、in);freopen("sum.out","w",stdout);cin>>a>>b;cout<<a+b;fclose(stdin);fclose(stdout);return 0;第2題:輸入n個(gè)數(shù),從大到小排序(文件名sort)輸入輸出樣例:sort.in858 56 12 25 10 50 6 45sort.out58 56 50 45 25 12 10 6數(shù)據(jù)規(guī)模:n不超過100000參考程序:#include<iostream>#include<algorithm>using nam

22、espace std;int a100000,n;int comp(const int &a,const int &b) return a>b; int main ()freopen("sort.in","r",stdin);freopen("sort.out","w",stdout);cin>>n;for (int i=0;i<n;+i) cin>>ai;sort(a,a+n,comp);for (int i=0;i<n;+i) cout<<a

23、i<<" "fclose(stdin);fclose(stdout);return 0;NOIP2016全國(guó)信息學(xué)分區(qū)聯(lián)賽提高組第一試 玩具迷題(toy)【問題描述】小南有一套可愛的玩具小人,它們各有不同的職業(yè)。 有一天,這些玩具小人把小南的眼鏡藏了起來。小南發(fā)現(xiàn)玩具小人們圍成了一個(gè) 圈,它們有的面朝圈內(nèi),有的面朝圈外。如下圖: 這時(shí)singer 告訴小南一個(gè)謎題:“眼鏡藏在我左數(shù)第 3 個(gè)玩具小人的右數(shù)第 1 個(gè)玩 具小人的左數(shù)第 2 個(gè)玩具小人那里?!毙∧习l(fā)現(xiàn),這個(gè)謎題中玩具小人的朝向非常關(guān)鍵,因?yàn)槌瘍?nèi)和朝外的玩具小人的左右方向是相反的:

24、面朝圈內(nèi)的玩具小人,它的左邊是順時(shí)針方向,右邊是逆時(shí)針方向;而面向圈外的玩具小人,它的左邊是逆時(shí)針方向,右邊是順時(shí)針方向。 小南一邊艱難地辨認(rèn)著玩具小人,一邊數(shù)著: singer 朝內(nèi),左數(shù)第 3 個(gè)是archer。 archer 朝外,右數(shù)第 1 個(gè)是thinker。 thinker 朝外,左數(shù)第 2 個(gè)是writer。 “所以眼鏡藏在writer 這里!”雖然成功找回了眼鏡,但小南并沒有放心。如果下次有更多的玩具小人藏他的眼鏡,或是謎題的長(zhǎng)度更長(zhǎng),他可能就無法找到眼鏡了。所以小南希望你寫程序幫他解決類似的謎題。這樣的謎題具體可以描述為: 有

25、 n 個(gè)玩具小人圍成一圈,已知它們的職業(yè)和朝向?,F(xiàn)在第 1 個(gè)玩具小人告訴小南一個(gè)包含 m 條指令的謎題,其中第 i 條指令形如“左數(shù)/右數(shù)第 si 個(gè)玩具小人”。你需要輸出依次數(shù)完這些指令后,到達(dá)的玩具小人的職業(yè)?!据斎敫袷健繌奈募oy.in 中讀入數(shù)據(jù)。 輸入的第一行包含兩個(gè)正整數(shù) n, m ,表示玩具小人的個(gè)數(shù)和指令的條數(shù)。 接下來 n 行,每行包含一個(gè)整數(shù)和一個(gè)字符串,以逆時(shí)針為順序給出每個(gè)玩具小人的朝向和職業(yè)。其中 0 表示朝向圈內(nèi), 1 表示朝向圈外。保證不會(huì)出現(xiàn)其他的數(shù)。字符串長(zhǎng)度不超過 10 且僅由小寫字母構(gòu)成,字符串不為空,并且字符串兩兩不同。整數(shù)和字符串之間用一個(gè)空格隔開。 接下來 m 行,其中第 i 行包含兩個(gè)整數(shù) ai, si ,表示第 i 條指令。若 ai = 0 ,表示向 左數(shù) si 個(gè)人;若

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論