本店POD版圖書均在書名下有明顯紅字標注,POD圖書屬於按需定製,您下單購買後我們纔開始印刷,故不可取消訂單。 我們一般會在您下單後的7-10個工作日內完成發貨,請謹慎下單!商品無質量問題不支持退貨,定價和裝幀可能會與原書不同,請以實物為準!詳情請谘詢客服 購買電子版圖書請與客服直接聯係,或者到科學齣版社電子商務平颱直接購買 CCF中學生計算機程序設計-基礎篇 |
| 定價 | 36.00 |
齣版社 | 科學齣版社 |
版次 | 1 |
齣版時間 | 2016年10月 |
開本 | 16 |
作者 | 中國計算機學會 |
裝幀 | 平裝 |
頁數 | 256 |
字數 | 315 |
ISBN編碼 | 9787030500298 |
內容介紹
本叢書是基於《CCF青少年計算機程序設計評級標準》開發的一個係列培訓教材。該標準圍繞計算機程序設計的知識要求和能力要求,共分十級,其中1-3級為基礎級,4-5級為提高級,6-7級為高手級,8-10級為大師級。本叢書將評級內容進行歸納,計劃1-3級齣1本、4-5級齣1本,6-7級齣1本,8-10級齣1本,共4本教材。
目錄
目錄
第1章 模塊化編程—函數
1.1自定義函數的引入1
1.2函數的定義3
1.3函數調用與參數傳遞5
1.4變量的作用域9
1.5函數的應用11
1.6遞歸函數20
第2章 字符串處理—string類型
2.1string類型的引入33
2.2string類型的基本操作36
2.3string類型中字母與數字的關係41
2.4string類型的應用48
本章小結52
第3章 數據類型的組閤—結構和聯閤
3.1結構體(struct)的引入61
3.2結構體(struct)的使用66
*3.3結構體(struct)的擴展72
*3.4聯閤(union)的定義和使用76
*3.5枚舉(enum)的定義和使用79
本章小結81
第4章 功能強大的利器—指針
4.1指針概念、定義與內存分配85
4.2指針的引用與運算87
4.3指針與數組90
4.4指針與字符串95
*4.5函數指針和函數指針數組97
4.6指針的擴展100
本章小結104
第5章 數據外部存儲—文件
5.1數據存儲的分類109
5.2文件類型變量的定義及引用110
5.3文件的重定嚮116
本章小結118
第6章 數據結構及其運用
6.1什麼是數據結構125
6.2綫性錶的儲存結構及其應用126
6.3隊列及其應用138
6.4棧及其運用145
6.5二分及其快速排序151
第7章 簡單算法
7.1什麼是算法169
7.2高精度數值處理171
7.3簡單枚舉算法178
7.4模擬算法184
7.5簡單動態規劃187
7.6用遞歸實現迴溯算法199
第8章 數學在程序設計中的應用
8.1常用數學函數207
8.2質因數的分解209
8.3zui大公約數的歐幾裏德算法212
8.4加法原理與乘法原理216
8.5排列與組閤219
8.6圓排列、可重集排列222
第9章 STL(標準模闆庫)簡要說明
*9.1STL中的一些新概念227
9.2幾個常見的容器介紹232
9.3幾個常見的算法函數240
索引244
在綫試讀
第1章模塊化編程—函數
我們處理任何問題都有諸多環節,比如煮飯,先要準備米,將米淘淨後,然後根據米的吸水特性加水,弄好後放入電飯煲中,按下電飯煲的煮飯開關,等電飯煲燈熄滅,然後飯就做好瞭。現在煮飯看起來變得十分簡單,其關鍵原因是煮飯的技術活都被電飯煲乾瞭。電飯煲煮飯是如何控製火候和時間的,其實我們並不關心,我們所關心的是用電飯煲將飯煮熟的結果,這個方法我們叫封裝。在計算機程序設計中,封裝是一個非常重要的概念,它是實現程序模塊化結構的重要手段。在C++中,我們通常采用函數來進行模塊封裝,對於函數,我們所關心的是對給定的自變量輸入,能否得到我們想要的輸齣。有些函數係統已經做好瞭,可直接調用,比如諸多的數學函數、字符串處理函數等,有些函數則需要根據自己的需求進行個性開發,這章我們就重點講授如何創作自己的函數。
1.1自定義函數的引入
【例1.1】給齣平麵上兩個點的坐標,求兩點之間的曼哈頓距離。
提示:平麵上A點(x1,y1)與B點(x2,y2)的曼哈頓距離為:|x1-x2|+|y1-y2|。
分析:計算曼哈頓距離可以用前麵學過的分支結構來解決。
程序如下:
1//eg1.1_1
2#include
3usingnamespacestd;
4intmain()
5{
6doublex1,y1,x2,y2;
7doubledx,dy;
8cin>>x1>>y1>>x2>>y2;
9if(x1>x2)//計算|x1-x2|
運行結果:
輸入:1.21.52.53.8
輸齣:3.6
10dx=x1-x2;
11else
12dx=x2-x1;
13if(y1>y2)//計算|y1-y2|
14dy=y1-y2;
15else
16dy=y2-y1;
17cout<18return0;
19}
可以使用自定義函數來計算|x1-x2|,|y1-y2|。
程序如下:
1//eg1.1_2
2#include
3usingnamespacestd;
4doubleabs(doublex)//計算x的絕對值函數
5{
6if(x>0)
7returnx;
8else
9return-x;
10}
11intmain()
12{
13doublex1,y1,x2,y2;
14doubledx,dy,mht;
15cin>>x1>>y1>>x2>>y2;
16mht=abs(x1-x2)+abs(y1-y2);
17cout<18return0;
19}
比較上麵兩個程序容易發現,使用自定義函數的程序有以下幾個優點:
(1)程序結構清晰,邏輯關係明確,程序可讀性強。
(2)解決相同或相似問題時不用重復編寫代碼,可通過調用函數來解決,減少代碼量。
(3)利用函數實現模塊化編程,各模塊功能相對獨立,利用“各個擊破”降低調試難度。
1.2函數的定義
1.2函數的定義
前麵我們用過瞭很多C++標準函數,但是這些標準函數並不能滿足所有需求。當我們需要特定的功能函數時,這就需要我們要學會自定義函數,
根據需求定製想要的功能。
1.2.1函數定義的語法
返迴類型函數名(參數列錶)
{
函數體
}
關於函數定義的幾點說明:
(1)自定義函數符閤“根據已知計算未知”這一機製,參數列錶相當於已知,是自變量,函數名相當於未知,是因變量。如程序eg1.1_2中的abs函數的功能是根據給定的數x計算x的絕對值,參數列錶中x相當於已知—自變量,abs函數的值相當於未知—因變量。
(2)函數名是標識符,一個程序中除瞭主函數名必須為main外,其餘函數的名字按照標識符的取名規則命名。
(3)參數列錶可以是空的,即無參函數,也可以有多個參數,參數之間用逗號隔開,不管有沒有參數,函數名後的括號不能省略。參數列錶中的每個參數,由參數類型說明和參數名組成。如程序eg1.1_2中abs函數的參數列錶隻有一個參數,參數數據類型是double,參數名是x。
(4)函數體是實現函數功能的語句,除瞭返迴類型是void的函數,其他函數的函數體中至少有一條語句是“return錶達式;”用來返迴函數的值。執行函數過程中碰到return語句,將在執行完return語句後直接退齣函數,不去執行後麵的語句。
(5)返迴值的類型一般是前麵介紹過的int、double、char等類型,也可以是數組。有時函數不需要返迴任何值,例如函數可以隻描述一些過程用printf嚮屏幕輸齣一些內容,這時隻需定義函數返迴類型為void,並且無須使用return返迴函數的值。
1.2.2函數定義應用實例
根據上述定義,我們知道C++函數形態有以下四類:
(1)返迴類型函數名(參數列錶)。
(2)返迴類型函數名()。
(3)void函數名(參數列錶)。
(4)void函數名()。
下麵我們一起來看幾個例子:
【例1.2】給定兩個非負整數n和m,編寫函數計算組閤數Cmn。
分析:首先分析函數的功能,根據給定的n,m計算Cmn。n,m已知,相當於自變量;Cmn未知,相當於因變量。設計以下函數:
longlongC(intn,intm)
其中,函數的返迴值為Cmn,返迴類型為longlong,函數名為C,參數列錶中有兩個參數n,m,類型都是int。函數體是實現函數功能的語句,根據發現需要三次用到“計算一個數的階乘”這個功能,因此把這個功能獨立齣來設計一個函數來實現:
longlongf(intn)
該函數的返迴值為n!,返迴類型為longlong,函數名為f,需要一個參數n,類型為int。
綜上,該函數的代碼如下:
1//eg1.2
2longlongf(intn)
3{
4longlongans=1;
5for(inti=1;i<=n;i++)
6ans*=i;
7returnans;
8}
9
10longlongC(intn,intm)
11{
12returnf(n)/(f(m)*f(n-m));
13}
提示:
(1)函數體中的語句可以是對另一個函數的調用。
(2)對於較大的n,m來說,上述程序可能會産生溢齣。
【例1.3】編寫函數輸齣斐波那契數列的第n項。其中斐波那契數列f(n)的定義如下:
f(1)=0,f(2)=1
f(n)=f(n-1)+f(n-2)(n>=2)
分析:因為該函數不需要返迴值,隻需要輸齣f(n)即可,所以該函數的返迴類型為void,函數體部分隻需計算齣f(n)再輸齣即可。
函數代碼如下:
1//eg1.3
2voidoutput(intn)
3{
4if(n<=2)
5cout<6else
7{
8longlongp1,p2,p3;
9p1=0;
10p2=1;
11for(inti=3;i<=n;i++)
12{
13p3=p1+p2;
14p1=p2;
15p2=p3;
16}
17cout<18}
19}
1.3函數調用與參數傳遞
上一節學習瞭函數的定義方法和四種不同類型的函數,在實際編程中如何調用函數呢?調用函數時參數是如何傳遞的?參數傳遞又有幾種方法呢?本節將重點學習這些內容。
1.3.1函數的調用
1.調用方法
上一節中講過函數一共有四種不同的類型,也可以根據返迴類型分為兩大類:其中一類有返迴值,如程序eg1.1_2中的abs函數、例1.2中的f函數和C函數;另一類沒有返迴值,如例1.3中的output函數。對於有返迴值的函數,調用時必須以值的形式齣現在錶達式中。比如程序eg1.1_2第16行:
mht=abs(x1-x2)+abs(y1-y2);
該語句對abs函數的調用齣現在賦值語句的右邊,程序eg1.2第12行:
returnf(n)/(f(m)*f(n-m));
該語句對f函數的調用齣現在re
CCF中學生計算機程序設計-基礎篇 信息學奧賽官方指定用書 下載 mobi epub pdf txt 電子書 格式