版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第一章初識(shí)第一章初識(shí)C+語(yǔ)言語(yǔ)言 第一節(jié)第一節(jié)C+語(yǔ)言簡(jiǎn)介語(yǔ)言簡(jiǎn)介 第二節(jié)第二節(jié)C+語(yǔ)言程序結(jié)構(gòu)語(yǔ)言程序結(jié)構(gòu)第一節(jié)第一節(jié)C+語(yǔ)言簡(jiǎn)介語(yǔ)言簡(jiǎn)介 信息學(xué)奧林匹克競(jìng)賽是一項(xiàng)益智性的競(jìng)賽活動(dòng),核心是考查選手的智力和使用計(jì)算機(jī)解題的能力,選手首先應(yīng)針對(duì)競(jìng)賽題目的要求構(gòu)建數(shù)學(xué)模型,進(jìn)而構(gòu)造出計(jì)算機(jī)可以接受的算法,之后編寫出計(jì)算機(jī)能夠執(zhí)行的程序。程序設(shè)計(jì)是信息學(xué)競(jìng)賽的基本功,選手參與競(jìng)賽活動(dòng)的第一步是熟練掌握一門程序設(shè)計(jì)語(yǔ)言,目前競(jìng)賽中允許使用的程序設(shè)計(jì)語(yǔ)言有C語(yǔ)言、C+語(yǔ)言、Pascal。C+ 語(yǔ)言概述語(yǔ)言概述 wC+由美國(guó)AT&T貝爾實(shí)驗(yàn)室的本賈尼斯特勞斯特盧普博士在20世紀(jì)80年代初期發(fā)明并實(shí)
2、現(xiàn)(最初這種語(yǔ)言被稱作“C with Classes”帶類的C)。開(kāi)始,C+是作為C語(yǔ)言的增強(qiáng)版出現(xiàn)的,從給C語(yǔ)言增加類開(kāi)始,不斷的增加新特性。w今天C+已成為世界主流編程語(yǔ)言之一。C+ 語(yǔ)言的特點(diǎn)語(yǔ)言的特點(diǎn) 語(yǔ)言簡(jiǎn)潔緊湊,使用靈活方便語(yǔ)言簡(jiǎn)潔緊湊,使用靈活方便C+語(yǔ)言一共只有32個(gè)關(guān)鍵字和9種控制語(yǔ)句,程序書(shū)寫自由,主要用小寫字母表示。運(yùn)算符豐富運(yùn)算符豐富C+語(yǔ)言的運(yùn)算符包含的范圍很廣泛,共有34個(gè)運(yùn)算符。數(shù)據(jù)結(jié)構(gòu)豐富數(shù)據(jù)結(jié)構(gòu)豐富C+語(yǔ)言的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型等等結(jié)構(gòu)化語(yǔ)言結(jié)構(gòu)化語(yǔ)言結(jié)構(gòu)化語(yǔ)言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。生
3、成的代碼質(zhì)量高生成的代碼質(zhì)量高C+語(yǔ)言在代碼效率方面可以和匯編語(yǔ)言相媲美。可移植性強(qiáng)可移植性強(qiáng)C+語(yǔ)言編寫的程序很容易進(jìn)行移植,在一個(gè)環(huán)境下運(yùn)行的程序不加修改或少許修改就可以在完全不同的環(huán)境下運(yùn)行。C+程序結(jié)構(gòu)程序結(jié)構(gòu) 在介紹在介紹C+語(yǔ)言程序的結(jié)構(gòu)之前,我們先來(lái)看一個(gè)簡(jiǎn)單的例子:語(yǔ)言程序的結(jié)構(gòu)之前,我們先來(lái)看一個(gè)簡(jiǎn)單的例子:例1.1 在屏幕上輸出“Hello World!”。#include /使用cin,cout,須調(diào)用iostream 庫(kù),否則編譯出錯(cuò)#include / 使用system( )調(diào)用cstdlib庫(kù)using namespace std; /在C語(yǔ)言中要省略,例如在VC+
4、和TC+中int main() /有的C語(yǔ)言可用void main(),例如TC+和VC+coutHello World!endl; /輸出Hello World! system(pause); /暫停作用,使用system(pause)調(diào)用cstdlib庫(kù)return 0; /結(jié)束整個(gè)程序運(yùn)行結(jié)果:Hello World!【說(shuō)明】:1、以“/”開(kāi)頭為注釋行,“/”后的內(nèi)容用以對(duì)語(yǔ)句進(jìn)行說(shuō)明,輸入程序時(shí)可以不輸入。2、#include告訴編譯器的預(yù)處理器將輸入輸出流的標(biāo)準(zhǔn)頭文件(iostream)包括在本程序中。這個(gè)頭文件包括了C+中定義的基本標(biāo)準(zhǔn)輸入輸出程序庫(kù)的聲明。3、using name
5、space std使用std(標(biāo)準(zhǔn))名字空間的意思。所謂的名字空間是標(biāo)準(zhǔn)C+中的一種機(jī)制,用來(lái)控制不同類庫(kù)的沖突問(wèn)題。使用它可以在不同的空間內(nèi)使用相同名字的類或者函數(shù)。4、int main( )這一行為主函數(shù)(main function)的起始聲明。main()是所有C+程序的運(yùn)行的起始點(diǎn)。不管它是在代碼的開(kāi)頭,結(jié)尾還是中間,此函數(shù)中的代碼總是在程序開(kāi)始運(yùn)行時(shí)第一個(gè)被執(zhí)行。所有C+程序都必須有一個(gè)main(),int main()前int在Dev C+中可省略,在TC+和VC+中最好保留。main后面跟了一對(duì)圓括號(hào)( ),表示它是一個(gè)函數(shù)。C+中所有函數(shù)都跟有一對(duì)圓括號(hào)( ),括號(hào)中可以有一些
6、輸入?yún)?shù)。注意,圓括號(hào)括號(hào)中即使什么都沒(méi)有也不能省略。如例題中顯示,主函數(shù)main()中的內(nèi)容,由一對(duì)花括號(hào) 括起來(lái)。 5、cout Hello World! Environment Options” (如圖3),在彈出的對(duì)話框中選擇第二個(gè)標(biāo)簽頁(yè)”interface”(如圖4),在Language下拉列表中選擇Chinese即可,將操作界面改為中文的。圖3 圖4二、新建源程序二、新建源程序1)從主菜單選擇“文件” “新建” “源代碼”即可(如圖2所示)。圖22).此時(shí)屏幕右下側(cè)出現(xiàn)一片白色區(qū)域,稱為“源程序編輯區(qū)域” ;可以在此輸入程序。如(圖5)所示。注意: 1必須在英文輸入環(huán)境下編輯程序(
7、如果你當(dāng)前能在程序編輯區(qū)輸入中文,說(shuō)明你是在中文輸入環(huán)境下。為了輸入程序,你必須切換到英文輸入環(huán)境下)。 2在4.99以前的版本的Dev-C+環(huán)境下,為了查看程序運(yùn)行結(jié)果,需要在main函數(shù)的return語(yǔ)句前加上:system(pause)或getchar( ),這樣程序運(yùn)行到該語(yǔ)句時(shí),結(jié)果顯示屏幕將會(huì)停留,讓大家有時(shí)間看程序的輸出結(jié)果。否則結(jié)果顯示屏幕將會(huì)一閃而過(guò)。在4.99之后的版本可不必加該語(yǔ)句,運(yùn)行結(jié)束后結(jié)果顯示屏幕將自動(dòng)停留。圖5源程序編輯區(qū)#includeusing namespace std;int main ( )三、三、 保存源程序到硬盤保存源程序到硬盤一個(gè)好的習(xí)慣是創(chuàng)建了
8、一個(gè)新程序后,在還未輸入代碼之前先將該程序保一個(gè)好的習(xí)慣是創(chuàng)建了一個(gè)新程序后,在還未輸入代碼之前先將該程序保存到硬盤某個(gè)目錄下,然后在程序的編輯過(guò)程中經(jīng)常性地保存程序,以防止機(jī)存到硬盤某個(gè)目錄下,然后在程序的編輯過(guò)程中經(jīng)常性地保存程序,以防止機(jī)器突然斷電或者死機(jī)。要保存程序,只需從主菜單選擇器突然斷電或者死機(jī)。要保存程序,只需從主菜單選擇“文件文件”保存保存”就可以將文件保存到指定的硬盤目錄。如圖就可以將文件保存到指定的硬盤目錄。如圖6所示。所示。圖6保存此時(shí)會(huì)彈出一個(gè)對(duì)話框。在此你需要指定文件要存放的磁盤目錄(例如:此時(shí)會(huì)彈出一個(gè)對(duì)話框。在此你需要指定文件要存放的磁盤目錄(例如: D:tem
9、p),自定文件名稱),自定文件名稱(例如:例如:ex1)以及保存類型。在點(diǎn)擊右下角的保存按以及保存類型。在點(diǎn)擊右下角的保存按鈕后,在鈕后,在D盤上的盤上的temp目錄下將會(huì)出現(xiàn)一個(gè)名為目錄下將會(huì)出現(xiàn)一個(gè)名為ex1.cpp的源文件。的源文件。 四、編譯、運(yùn)行四、編譯、運(yùn)行 編譯:從主菜單選“運(yùn)行”“編譯運(yùn)行”或快捷鍵“F9”(圖7)。如果程序中存在詞法、語(yǔ)法等錯(cuò)誤,則編譯過(guò)程失敗。編譯器會(huì)在屏幕右下角的“Compile Log”標(biāo)簽頁(yè)中顯示錯(cuò)誤信息,如(圖8)所示,并且將源程序相應(yīng)的錯(cuò)誤行標(biāo)成紅色底色。圖8圖7 五、調(diào)試程序五、調(diào)試程序1設(shè)置程序斷點(diǎn)通過(guò)預(yù)處理、編譯和鏈接的程序僅僅是該程序中沒(méi)有
10、詞法和語(yǔ)法等錯(cuò)誤,而無(wú)法發(fā)現(xiàn)程序深層次的問(wèn)題(譬如算法不對(duì)導(dǎo)致結(jié)果不正確)。當(dāng)程序運(yùn)行出錯(cuò)時(shí),需要找出錯(cuò)誤原因。仔細(xì)讀程序來(lái)尋找錯(cuò)誤固然是一種方法,但是有時(shí)光靠讀程序已經(jīng)解決不了問(wèn)題,此時(shí)需要借助于程序調(diào)試(Debug)手段。這是一種有效的排錯(cuò)手段,每一位同學(xué)都需要掌握。如果想讓程序運(yùn)行到某一行前能暫停下來(lái),就需要將該行設(shè)成斷點(diǎn)。具體方法是在代碼所在行行首單擊,該行將被加亮。默認(rèn)的加亮顏色是紅色。如果想取消不讓某行代碼成為斷點(diǎn),則在代碼行首再次點(diǎn)擊即可。2運(yùn)行程序設(shè)置斷點(diǎn)后,此時(shí)程序運(yùn)行進(jìn)入debug狀態(tài)。要想運(yùn)行程序,就不能使用主菜單“Execute”“Run”,而是需要用主菜單“Debug
11、”“Debug”(或者按快捷鍵F8),如圖12所示。 3單步執(zhí)行程序要想運(yùn)行藍(lán)色底色的代碼,可以使用圖14所示的“Next Step( F7)”、“Step Into(Shift F7)”、“Continue(Ctrl F7)”,“Run to Cursor(Shift F4)”等(具體含義見(jiàn)下面的介紹)。在學(xué)習(xí)函數(shù)之前,一般用的是Next Step和Continue。學(xué)習(xí)函數(shù)后,還會(huì)用到Step Into。4設(shè)置watch窗口在調(diào)試程序時(shí),可能要看程序運(yùn)行過(guò)程中變量的值,以檢測(cè)程序?qū)ψ兞康奶幚硎欠裾_,可以在調(diào)試時(shí)通過(guò)調(diào)試菜單下的添加變量(Add Watch)窗口來(lái)增加變量watch,新增的
12、變量將會(huì)顯示在最左邊Explore的Debug頁(yè)中。如果左邊Explore中的當(dāng)前頁(yè)不是Debug頁(yè),則可以點(diǎn)擊Debug標(biāo)簽使之成為當(dāng)前頁(yè)。第二節(jié)第二節(jié)C+語(yǔ)言程序結(jié)構(gòu)語(yǔ)言程序結(jié)構(gòu)無(wú)論做任何事情,都要有一定的方式方法與處理步驟,所謂“無(wú)規(guī)矩?zé)o以成方圓”。計(jì)算機(jī)程序設(shè)計(jì)比日常生活中的事務(wù)處理更具有嚴(yán)謹(jǐn)性、規(guī)范性和可行性。為了使計(jì)算機(jī)有效地解決實(shí)際問(wèn)題,必須將處理步驟編排好,用計(jì)算機(jī)能理解的計(jì)算機(jī)語(yǔ)言編寫成“序列”,讓計(jì)算機(jī)自動(dòng)識(shí)別并執(zhí)行這個(gè)“序列”,達(dá)到解決實(shí)際問(wèn)題的目的。將處理問(wèn)題的步驟編排好,用計(jì)算機(jī)語(yǔ)言組成序列,就是常說(shuō)的編寫程序。在C+語(yǔ)言中,執(zhí)行每條語(yǔ)句都是由計(jì)算機(jī)完成相應(yīng)的具體操作
13、,編寫程序是利用C+語(yǔ)句的功能來(lái)實(shí)現(xiàn)預(yù)定的處理要求?!扒Ю镏校加谧阆隆?,我們從簡(jiǎn)單程序?qū)W起,逐步了解和掌握怎樣編寫程序。在學(xué)習(xí)C+語(yǔ)言之前,讓我們繞過(guò)那些繁瑣的語(yǔ)法規(guī)則細(xì)節(jié),通過(guò)一些簡(jiǎn)單的例題,來(lái)熟悉程序的基本組成和基本語(yǔ)句的用法,選手剛接觸編程時(shí),多動(dòng)手模仿是一條捷徑。例例1.2 在梯形中陰影部分面積是150平方厘米,求梯形面積?!痉治觥?已知梯形上、下底長(zhǎng)為15和25。令梯形的高為h,則由已知三角形面積為150平方厘米,有150(15*h)/2,得h為20,然后根據(jù)梯形面積公式算出梯形面積。程序如下: #include /printf和scanf調(diào)用cstdio庫(kù),在C語(yǔ)言中可調(diào)用st
14、dio.h庫(kù)#include / 使用system( )調(diào)用cstdlib庫(kù)using namespace std; /在C語(yǔ)言中要省略,例如在VC+和TC+中int main() /有的C語(yǔ)言可用void main(),例如TC+和VC+ /整個(gè)程序開(kāi)始 float s,h,up,down; / float定義s,h,up,down為單精度實(shí)型變量 up=15; /已知上底 down=25; /已知下底 h=2*150/up; /根據(jù)上底求出梯形的高 s=(up+down)*h/2; /求出梯形的面積 printf(s=%0.2fn,s);/ n是換行控制符,0.2f按實(shí)際位數(shù)輸出,保留2位
15、小數(shù) system(pause); /暫停作用,TC+和VC+中使用system( )調(diào)用stdlib.h庫(kù) return 0; /結(jié)束程序,在TC+和VC+中也要保留運(yùn)行結(jié)果:s=400.00 【說(shuō)明】:所謂namespace,是指標(biāo)識(shí)符的各種可見(jiàn)范圍。C+標(biāo)準(zhǔn)程序庫(kù)中的所有標(biāo)識(shí)符都被定義于一個(gè)名為std的namespace中。當(dāng)使用時(shí),相當(dāng)于在C中調(diào)用庫(kù)函數(shù),使用的是全局命名空間,也就是早期的C+實(shí)現(xiàn);當(dāng)使用的時(shí)候,該頭文件沒(méi)有定義全局命名空間,必須使用namespace std;這樣才能正確使用cout、cin和endl。例例1.3 已知一位小朋友的電影票價(jià)是10元,計(jì)算x位小朋友的總票
16、價(jià)是多少?【分析】 假設(shè)總票價(jià)用y來(lái)表示,則這個(gè)問(wèn)題可以用以下幾個(gè)步驟來(lái)實(shí)現(xiàn):輸入小朋友的數(shù)目x;用公式y(tǒng)=10*x計(jì)算總票價(jià);輸出總票價(jià)y的值。程序如下:#include /使用cin,cout,須調(diào)用iostream庫(kù)using namespace std;int main() int x,y; /定義整型變量 coutx; /小朋友的人數(shù) y=10*x; /計(jì)算總票價(jià) couttotal=yendl; /輸出總票價(jià) return 0; /結(jié)束程序 【說(shuō)明】:【說(shuō)明】: 1、int定義x,y為整型變量,有關(guān)整型變量將在第二章詳細(xì)介紹。2、coutx的作用是輸入一個(gè)數(shù),賦予變量x。 4、co
17、uttotal=yendl的作用是輸出提示符total=,輸出y的值,endl是換行的意思。 通過(guò)以上例1.2和例1.3兩個(gè)例子,可以總結(jié)出C+語(yǔ)言程序的結(jié)構(gòu)如下:1)C+語(yǔ)言變量在使用之前必須先定義其數(shù)據(jù)類型,未經(jīng)定義的變量不能使用。2)程序由一個(gè)或多個(gè)函數(shù)組成,一個(gè)程序中必須有且只有一個(gè)主函數(shù),主函數(shù)的名字為main。不論main()函數(shù)在程序中什么位置,程序都是從main()函數(shù)開(kāi)始執(zhí)行,main()函數(shù)執(zhí)行完畢,程序也就結(jié)束了。3)在程序中可以調(diào)用系統(tǒng)提供的庫(kù)函數(shù)。在調(diào)用庫(kù)函數(shù)之前,必須將相應(yīng)頭文件包含在程序中。4)程序中可以有注釋行。注釋是為了使程序更易于理解和提示。5)程序的語(yǔ)句以
18、分號(hào)結(jié)束。分號(hào)是C+語(yǔ)言不可缺少的組成部分。6)程序的書(shū)寫要注意適當(dāng)?shù)目s進(jìn),一般采用“逐層縮進(jìn)”形式,以便使程序更加清晰易讀。 把處理問(wèn)題的步驟編成能從上到下順序執(zhí)行的程序,是簡(jiǎn)單程序的基本特征。再來(lái)分析下面一道例題的程序結(jié)構(gòu),同時(shí)繼續(xù)學(xué)習(xí)基本語(yǔ)句。例1.4 有一個(gè)牧場(chǎng),牧場(chǎng)上的牧草每天都在勻速生長(zhǎng),這片牧場(chǎng)可供有一個(gè)牧場(chǎng),牧場(chǎng)上的牧草每天都在勻速生長(zhǎng),這片牧場(chǎng)可供15頭頭牛吃牛吃20天,或可供天,或可供20頭牛吃頭牛吃10天,那么,這片牧場(chǎng)每天新生的草量可供幾頭天,那么,這片牧場(chǎng)每天新生的草量可供幾頭牛吃牛吃1天?天?【分析】解決這類問(wèn)題的關(guān)鍵是利用牛吃的草量,最終求出這片牧場(chǎng)每天新生長(zhǎng)的草量,我們?cè)O(shè)1單位的草量為1頭牛1天所需的草量,于是15頭牛20天所食的草量為300單位(包括這20天內(nèi)的新生草量),20頭牛10天所食的草量為200單位(包括這10天內(nèi)的新生草量),兩者的差值即為10天內(nèi)的新生草量。程序如下:#include /使用cin,cout,須調(diào)用iostream庫(kù)using namespace std;int main() int s1,s2,s3; /變量定義 s1=15*20; /15頭牛20天所
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版房地產(chǎn)反擔(dān)保抵押合同附件十3篇
- 二零二五年度綠色物流鋼材運(yùn)輸服務(wù)合同2篇
- 二零二五年度車輛租賃與車輛銷售服務(wù)合同2篇
- 二零二五年度高端商務(wù)汽車租賃服務(wù)合同協(xié)議2篇
- 二零二五版冷鏈物流訂餐服務(wù)合同范本與質(zhì)量保證2篇
- 二零二五年擔(dān)保合同范本修訂要點(diǎn)與執(zhí)行建議6篇
- 二零二五版房產(chǎn)抵押投資合作合同范本3篇
- 二零二五版物流運(yùn)輸企業(yè)勞動(dòng)合同范本與司機(jī)權(quán)益保障服務(wù)合同3篇
- 二零二五年度房地產(chǎn)經(jīng)紀(jì)服務(wù)合同補(bǔ)充協(xié)議2篇
- 二零二五版12333職業(yè)培訓(xùn)補(bǔ)貼政策合同3篇
- 上海紐約大學(xué)自主招生面試試題綜合素質(zhì)答案技巧
- 辦公家具項(xiàng)目實(shí)施方案、供貨方案
- 2022年物流服務(wù)師職業(yè)技能競(jìng)賽理論題庫(kù)(含答案)
- 危化品安全操作規(guī)程
- 連鎖遺傳和遺傳作圖
- DB63∕T 1885-2020 青海省城鎮(zhèn)老舊小區(qū)綜合改造技術(shù)規(guī)程
- 高邊坡施工危險(xiǎn)源辨識(shí)及分析
- 中海地產(chǎn)設(shè)計(jì)管理程序
- 簡(jiǎn)譜視唱15942
- 《城鎮(zhèn)燃?xì)庠O(shè)施運(yùn)行、維護(hù)和搶修安全技術(shù)規(guī)程》(CJJ51-2006)
- 項(xiàng)目付款審核流程(visio流程圖)
評(píng)論
0/150
提交評(píng)論