零點起飛學Visual C++之 C++語言基礎(chǔ)_第1頁
零點起飛學Visual C++之 C++語言基礎(chǔ)_第2頁
零點起飛學Visual C++之 C++語言基礎(chǔ)_第3頁
零點起飛學Visual C++之 C++語言基礎(chǔ)_第4頁
零點起飛學Visual C++之 C++語言基礎(chǔ)_第5頁
已閱讀5頁,還剩114頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第2章 C+語言根底C+語言是對傳統(tǒng)C語言進行面向?qū)ο蟮臄U充。使用C+語言可以在Visual C+開發(fā)環(huán)境中開發(fā)出功能強大的應(yīng)用程序。通過本章的學習,讀者可以快速回想起C+的語法知識。2.1 什么是面向?qū)ο蟪绦蛟O(shè)計對象是面向?qū)ο蟪绦蛟O(shè)計技術(shù)的核心,那么到底什么是對象?世界上的一切事物都是對象,都是客觀對象。人類大腦中的認識和概念也是對象??梢妼ο罂梢允怯行蔚膶嶓w,也可以是無形的認識、知識、事件等。概括地說對象就是一個實體,它具有一個名字標志,并且具有自身的狀態(tài)和功能。在軟件設(shè)計和實現(xiàn)中,傳統(tǒng)的被人們廣泛使用的是面向過程的程序設(shè)計。隨著計算機技術(shù)的開展,面向?qū)ο蟮某绦蛟O(shè)計思想被越來越多的程序員所

2、接受。面向?qū)ο蟮某绦蛟O(shè)計是一種新型的程序設(shè)計方法。這種程序設(shè)計方法的特征是:應(yīng)用程序?qū)ο笙?。面向?qū)ο蟪绦蛟O(shè)計的根本元素是對象,而面向?qū)ο蟪绦蛟O(shè)計中把對象抽象成類,因此在程序設(shè)計中就主要包括類的定義和類的使用兩局部。在整個完整的軟件中就是通過在對象之間進行消息傳遞從而聯(lián)系全部的類。面向?qū)ο蟪绦蛟O(shè)計的核心就是對象和類。對象就是人們認識世界的根本單元,可以是人,可以是物,也可以是抽象的事件等。當然對象可以有假設(shè)干小的對象組成,例如某個學生可以看作一個對象,那么學生的生活方面,學習方面都可以看成小的對象。而學生由生活方面和學習方面組成。對象都具有區(qū)別于其他對象的靜態(tài)屬性和動態(tài)行為。靜態(tài)屬性又稱為對象

3、的狀態(tài),動態(tài)屬性又稱為對象的功能。類是現(xiàn)實世界中具有共同靜態(tài)屬性和動態(tài)屬性的對象的抽象,類和對象之間的關(guān)系就是抽象和具體之間的關(guān)系。類是多個對象進行綜合抽象的結(jié)果,而對象那么是類的實例化。例如:某個學生張三是一個對象,一個個像張三的學生那么可以抽象出一個學生類。張三就是學生類的實例化。消息是向某對象請求效勞的一種表達方式。對象內(nèi)有方法和數(shù)據(jù),外部的用戶或?qū)ο髮υ搶ο筇岢龅男谡埱?,可以稱為向該對象發(fā)送消息。面向?qū)ο蟮木幊谭椒ň哂?個根本特征,下面分別進行介紹。1抽象抽象就是對某些特定實例抽取其共有的性質(zhì)后所形成的概念,是抽取現(xiàn)實實例所共有的特征。抽象是對系統(tǒng)的簡單描述,強調(diào)了系統(tǒng)局部屬性,忽略

4、了系統(tǒng)的其他局部。2繼承繼承是從一種實際事物聯(lián)系到另外的事物,是一種聯(lián)結(jié)類的層次模型,允許類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現(xiàn)有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,稱為原始類的派生類,而原始類稱為新類的基類。繼承性使得程序設(shè)計的代碼復用得到充分解決。3封裝封裝是面向?qū)ο蟮奶卣髦唬菍ο蠛皖惛拍畹闹饕匦?。封裝是將事物的數(shù)據(jù)抽象的外部接口與內(nèi)部實現(xiàn)的細節(jié)隔離。內(nèi)部數(shù)據(jù)不可以被隨便修改,從而保證程序的平安性。4多態(tài)性多態(tài)性是指允許不同類的對象收到相同的消息時產(chǎn)生不同的響應(yīng)。C+語言支持兩種多態(tài)性,即編譯時的多態(tài)性和運行時的多態(tài)性。編譯時的多態(tài)性通過

5、重載來實現(xiàn),而運行時的多態(tài)性那么通過虛函數(shù)來實現(xiàn)。具體概念和實現(xiàn)方法將在后面進行講解。面向?qū)ο笫切滦偷某绦蛟O(shè)計方法,其思想比過程化的程序設(shè)計更先進。掌握面向?qū)ο蟮某绦蛟O(shè)計需要透徹理解面向?qū)ο蟮母靖拍詈吞匦?。C+語言作為面向?qū)ο蟮某绦蛟O(shè)計語言,學習和運用C+語言已經(jīng)成為現(xiàn)代程序員的根本要求。注意:C+并不是純面向?qū)ο蟮某绦蛟O(shè)計語言,它是一種面向過程程序設(shè)計和面向?qū)ο蟪绦蛟O(shè)計的混合程序設(shè)計語言。2.2 單一數(shù)據(jù)的表示數(shù)據(jù)類型數(shù)據(jù)類型就是一類數(shù)據(jù)的集合。在計算機中,數(shù)據(jù)以某種特定的形式存儲在計算機中,數(shù)據(jù)類型決定了數(shù)據(jù)在計算機中的存儲形式。2.2.1 數(shù)據(jù)的指代常量與變量常量是指在程序運行中,數(shù)值

6、不能改變的量。例如13、28、a、等,這些量在整個程序運行期間,其值不發(fā)生改變。在C+中,定義常量的語法如下所示。#define 標識符 常數(shù)其中,#表示這是一個宏定義命令;define為定義符號常量的關(guān)鍵字;標識符為常量的名稱;常數(shù)為符號常量具體的數(shù)值。常量定義中關(guān)鍵字和標識符,以及標識符和常數(shù)之間必須留一個以上的空格?!纠纭?定義一個名稱為PI的符號常量。#define 分析:上面定義了一個符號常量PI,其值在程序運行期間保持不變,且為。習慣上,符號常量名用大寫形式,但并不是必須使用大寫。變量那么是在程序運行期間其值可以改變的量。一個變量應(yīng)該有一個名字,在內(nèi)存占據(jù)一定的空間。在該存儲空間

7、中存放變量的值。在程序中可以利用變量的名字對變量進行訪問,即得到變量的值。在C+中定義變量的語法形式如下所示。數(shù)據(jù)類型 標識符; 其中,數(shù)據(jù)類型表示變量的數(shù)據(jù)類型是什么;標識符為所定義的變量的名稱。變量的數(shù)據(jù)類型和標識符之間必須留一個以上的空格?!纠纭?定義兩個變量。int a=8;/定義一個整型變量double a;/定義一個雙精度實型變量分析:上面第一行代碼定義了一個變量,并且賦初值為8。第二行代碼只是定義一個變量。習慣上,變量的標識符使用小寫形式。關(guān)于數(shù)據(jù)類型將在下面進行介紹。注意:C+規(guī)定標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。2.2.2 簡單數(shù)據(jù)

8、類型C+語言中的簡單數(shù)據(jù)類型是指根本的數(shù)據(jù)類型,即整型、實型、字符型等。下面介紹其特點和用法。1整型整型是程序設(shè)計語言中最常用的數(shù)據(jù)類型,是用來表達整數(shù)的數(shù)據(jù)類型。整型數(shù)據(jù)包括整型常量和整型變量。整型常量是整數(shù),例如1、100等,整數(shù)可以用十進制、八進制和十六進制表示。八進制整數(shù)以數(shù)字0開頭,后面的為八進制數(shù)據(jù)。十六進制那么以0 x開頭,后面的為十六進制數(shù)據(jù)。整型變量是在程序運行期間數(shù)據(jù)的值可能發(fā)生變化的整型量。整型變量又分為根本類型、短整型和長整型。其關(guān)鍵字以及表示數(shù)據(jù)的范圍如表所示。在C+中整型變量的定義為整型類型 標識符;并且整型類型中的signed可以省略。表2.1 整型的分類類 型比

9、 特 數(shù)數(shù) 據(jù) 范 圍signed int163276832767unsigned int16065535signed short int163276832767unsigned short int16065535signed long int3221474836482147483647unsigned long int3204294967295【例如】 定義三個整型變量。int a=10;/定義整型變量aint i,j;/定義整型變量i和j說明:可以利用關(guān)鍵字int一次說明多個整型變量。注意此時整型變量之間用逗號做分隔符,最后一個變量的后面加“;例如int I,j,k;。2實型實型數(shù)據(jù)類型同

10、樣包括實型常量和實型變量。實型是用來表示實數(shù)的數(shù)據(jù)類型。實數(shù)又稱為浮點數(shù),可以用十進制小數(shù)表示,也可以用指數(shù)形式表示。實型常量即是實數(shù),例如、等。實型變量又分為單精度,以關(guān)鍵字float表示;雙精度以關(guān)鍵字double表示;長雙精度以關(guān)鍵字long double表示。三者的區(qū)別如表所示。表2.2 實型的分類在C+中實型變量的定義為float/longdouble實型變量名; 類 型比 特 數(shù)有 效 數(shù) 字數(shù) 據(jù) 范 圍float 32 63.410383.41038double 64151.7103081.710308long double128181.21049321.2104932【例如】

11、 定義兩個實型變量。/定義單精度實型變量f/定義雙精度實型變量ff3字符型字符型是用來表達字符的數(shù)據(jù)類型。字符常量是用單引號括起來的一個字符。如a、9等。字符型變量用來存放字符常量,且只能存放一個字符常量。字符變量的定義以關(guān)鍵字char說明。在C+中字符型變量的定義為char字符型變量名?!纠纭?定義字符型變量。char c=g;/定義字符型變量cchar p,w;/定義字符型變量p和w2.2.3 字符串常量字符常量是由單引號括起來的單個字符。C+語言同C語言一樣,除了字符常量外,還支持字符串常量。字符串常量是由一對雙引號括起來的字符序列。如:HELLO WORLD!, Study boy字

12、符串常量和字符常量的區(qū)別是,字符串常量在每一個字符串的最后一個字符后面,加上一個字符串結(jié)束標志,從而在程序訪問時可以判斷字符串的字符序列是否結(jié)束。2.2.4 構(gòu)造類型數(shù)組C+語言中除了根本數(shù)據(jù)類型外,還提供了構(gòu)造數(shù)據(jù)類型,即數(shù)組。數(shù)組是有序數(shù)據(jù)的組合,數(shù)組中的每一個元素都屬于同一數(shù)據(jù)類型,這和C語言中的數(shù)組是完全一致的。數(shù)組包括一維數(shù)組和多維數(shù)組。數(shù)組的定義格式和引用方式與在C語言中是一致的。【例如】 定義一個數(shù)組。int a3;分析:上面的語句定義了一個數(shù)組,這就是C+語言中構(gòu)造類型的根本使用方法。關(guān)于數(shù)組的使用將在節(jié)中進行詳細介紹。2.2.5 文件類型C+語言中提供了文件的數(shù)據(jù)類型,即C+

13、把文件看做是字符序列,文件由一個一個字符數(shù)據(jù)順序組成。根據(jù)數(shù)據(jù)結(jié)構(gòu)的組織形式,可以把文件分為文本文件和二進制文件。在C+中假設(shè)要對文件進行輸入輸出,必須首先創(chuàng)立一個流,然后將流和文件相關(guān)聯(lián)。即翻開文件,此時才可以進行操作,然后關(guān)閉文件。由于文件的使用比較復雜,在后面的章節(jié)中將詳細介紹C+中文件的根本操作。2.2.6 指針類型C+語言中的指針和C語言中的指針是完全一樣的。但是C+語言中提供了特殊的指針,即void型指針。它表示不確定的類型。void型指針是一種通用型指針,也就是說任何類型的指針都可以賦值給void型的指針變量?!纠纭?void型指針的使用。void *p;/定義void型指針變

14、量void p;/錯誤,不可以定義void型變量int i=3;char c=w;p=&i;p=&c; 上面介紹了在C+語言中常用的數(shù)據(jù)類型,掌握數(shù)據(jù)類型的根本概念和使用方法是進行程序設(shè)計的前提。讀者應(yīng)掌握上面介紹的全部概念。2.3 多個數(shù)據(jù)的表示數(shù)組數(shù)組作為一種構(gòu)造數(shù)據(jù)類型,它的使用和根本類型有很大不同。因此有必要對數(shù)組這一數(shù)據(jù)類型進行介紹。2.3.1 一維數(shù)組數(shù)組是有序數(shù)據(jù)的集合。在C+中一維數(shù)組的定義方式和C語言中一維數(shù)組的定義方式完全相同,并且使用方式以及使用的本卷須知都與C語言中根本一致。1一維數(shù)組的定義一維數(shù)組定義的根本形式如下:類型說明符 數(shù)組名稱常量表達式;其中,類型說明符指的

15、是數(shù)組元素的類型,其是以根本數(shù)據(jù)類型,例如整型、浮點型等。數(shù)組名稱指的是該數(shù)組的名字。常量表達式那么是數(shù)組的大小?!纠纭?定義一個10個元素大小的整型數(shù)組num。int num10;/定義整型數(shù)組在定義了一維數(shù)組以后,程序中可以對該數(shù)組中的元素進行使用,并且在程序中只能對數(shù)組的某一個元素進行使用,不能使用整個數(shù)組。數(shù)組元素的表示形式為:數(shù)組名稱下標;【例如】 將例如中定義的整型數(shù)組的第3個元素初始化為3。num2=3;/對數(shù)組中的第3個元素賦值說明:在C+中數(shù)組元素的下標從0開始,因此第3個元素也就是下標為2的元素。2數(shù)組的初始化在定義了數(shù)組以后,可以利用上面的形式一個個對數(shù)組中的元素進行初

16、始化工作。同時也可以使用下面幾種方法對數(shù)組進行初始化。1定義數(shù)組時對數(shù)組元素賦初值。其根本形式為:類型說明符 數(shù)組名稱常量表達式=常量1,常量2,需要注意的是常量必須與類型說明符一致,或者可以進行轉(zhuǎn)換?!纠纭?定義一個字符數(shù)組,并且進行初始化。char c3=a,b,c;2只對數(shù)組中的局部進行賦值,當提供的常量個數(shù)與常量表達式的數(shù)值不相等時,只對數(shù)組前面的局部進行賦值。3定義數(shù)組元素為相等的值,此時可以使用下面的形式。類型說明符 數(shù)組名常量表達式=常量;【例如】 定義一個10個元素大小的整型數(shù)組,初始化為0。int num10=0;3一維數(shù)組的使用定義了一維數(shù)組以后,就相當于定義了多個數(shù)組類

17、型的變量。在應(yīng)用中可以像使用變量一樣使用數(shù)組元素。例如保存數(shù)據(jù)、進行計算等。【例如】 定義一個字符數(shù)組,將三個字符變量分別賦值給數(shù)組。代碼如下:char c1=a;char c2=s;char c3=d;/定義字符變量char c3;/定義字符數(shù)組c0=c1;c1=c2;c2=c3;本小節(jié)介紹了在C+中一維數(shù)組的定義和使用方式。在C+中一維數(shù)組的定義和使用與C語言的定義和使用根本相同。2.3.2 二維數(shù)組在C+中二維數(shù)組與C語言中的二維數(shù)組的定義是一樣的。一維數(shù)組是一行有序數(shù)據(jù)的結(jié)合,而二維數(shù)組那么是一個有序數(shù)據(jù)的一個矩陣。1二維數(shù)組的定義在C+中二維數(shù)組的定義形式與一維數(shù)組的定義根本相同,其

18、根本形式如下:類型說明符 數(shù)組名稱常量表達式1 常量表達式2;【例如】 定義一個整型的二維數(shù)組。int num23;分析:上面定義了一個2*3的整型數(shù)組。實際上二維數(shù)組的數(shù)據(jù)存儲也是在內(nèi)存中按順序排列的。在定義了二維數(shù)組以后,可以對數(shù)組元素進行引用。與一維數(shù)組一樣,二維數(shù)組元素的下標從0開始?!纠纭?將二維整型數(shù)組的第一行、第三列的元素賦值給整型變量i。int num23;/定義數(shù)組int i=num02;2二維數(shù)組的初始化二維數(shù)組的初始化可以與一維數(shù)組一樣對每個數(shù)組元素進行訪問,并賦值。除此之外還可以使用下面幾種形式對二維數(shù)組進行初始化。1分行初始化:分別對二維數(shù)組的每行的每個元素進行初始

19、化。【例如】 對二維數(shù)組進行初始化。char c23=a,b,c,d,e,f分析:上面就是定義一個二維數(shù)組,并且進行初始化。2全部初始化:一次性對數(shù)組的每個元素進行初始化?!纠纭?初始化二維數(shù)組char c23;。char c23=a,b,c,d,e,f;分析:上面的初始化與第一種方法根本一樣。它首先初始化第一行,然后初始化第二行。這種方式初始化由于沒有界面,容易遺漏。3二維數(shù)組的使用在定義了二維數(shù)組以后,在程序中就可以使用該數(shù)組。二維數(shù)組的使用與一維數(shù)組的使用根本相同。即可以利用下標的形式定義到一個具體的數(shù)組元素,然后進行訪問?!纠纭?將一個2*3的整型數(shù)組的00位置的元素與12位置的元

20、素進行數(shù)據(jù)交換。int num23=1,2,3,4,5,6;/定義數(shù)組并初始化int i;i=num00;num00=num12;num12=i;上面介紹了在C+中二維數(shù)組的定義、初始化和使用的根本方法。讀者應(yīng)掌握二維數(shù)組這種構(gòu)造數(shù)據(jù)類型。2.3.3 字符型數(shù)組前面已經(jīng)介紹了在定義一維或者二維數(shù)組時,需要指定其類型說明符。類型說明符是根本數(shù)據(jù)類型,例如整型、浮點型、字符型等。但是字符數(shù)組與其他數(shù)組有時不同,下面對字符數(shù)組的特殊用法進行介紹。1字符數(shù)組的定義字符數(shù)組與一般數(shù)組的定義是一樣的。同時數(shù)組的初始化與一般的數(shù)組也沒什么兩樣。對數(shù)組元素的訪問也與普通數(shù)組一致?!纠纭?定義一個二維字符數(shù)組

21、,用來存放3行字符串常量。并且將第2行和第3行對應(yīng)的元素進行交換。char c33=o,n,e,t,w,o,t,h,r;/定義二維字符數(shù)組并初始化char cc;for(int i=0;ic0c1c2c3;在鍵盤上輸入China,此時在c5中保存的是一個亂碼,而不是0。因此如果此時輸出,那么會輸出一個亂碼。為了消除這種現(xiàn)象,可以在輸出時單個輸出字符,同時不輸出最后元素的字符。2整個字符串一次輸入:整個字符串一次輸入時,當遇到空格,那么默認地作為一個0字符保存在數(shù)組中。并且此后輸入的字符不再保存。如果還有連續(xù)輸入的要求那么作為下一個輸入?!纠纭?輸入兩個字符串,并輸出。char c15,c25

22、;cinc1c2;/輸入coutc1 c210&b10)/&的使用a=100;b=100;分析:上面的代碼就是邏輯運算符&的根本使用方法。使用該運算符對常用的邏輯組合判斷有很大的作用。2.4.4 關(guān)系運算符關(guān)系運算和邏輯運算一樣,在程序設(shè)計中經(jīng)常用到。邏輯運算最常用的是判斷某種具體值是否屬于某類的情況。例如計算1加到100的值,那么需要從1加到100,期間需要判斷變量是否大于100,從而設(shè)計程序。關(guān)系判斷在程序設(shè)計中也是十分重要的運算?!纠纭?比較a和b的大小。if(ab)couta is bigger than bendl;分析:上面進行的就是大于關(guān)系運算,當a大于b時輸出語句。2.4.5

23、 位運算符位運算是在程序設(shè)計中不經(jīng)常使用,但是應(yīng)用技巧性很強的一類運算。其主要包括“,“,“和“&?!笆怯乙七\算符,實際上就是變量除2?!笆前次蝗》催\算符,即把變量的二進制取反?!笆前褍蓚€變量按位進行異或?!?是將兩個變量按位相與?!纠纭?把十進制數(shù)據(jù)10除2。int i=10;int b=i1;/除2結(jié)果5分析:所謂的除2運算就是把該數(shù)據(jù)對應(yīng)的二進制數(shù)據(jù)右移一位。例如10的二進制為00001010,對應(yīng)的右移一位的數(shù)據(jù)為00000101,即5。2.4.6 逗號運算符逗號運算符是一類比較特殊的運算符,其是將多個表達式連接起來。逗號運算符又稱為順序求值運算符?!纠纭?逗號運算符的使用。int

24、 a=9;int b;int c=(b=a+2,b+3);/逗號運算符的使用分析:逗號運算符即把兩個表達式進行順序連接,首先求解第一個表達式的值,然后求解第二個表達式的值,得到整個逗號運算的值。本例中,先計算a+2得b=11,再計算b+3的整個逗號運算的值為14,即c=14。2.5 程序的根本單元表達式和語句由運算符構(gòu)成的式子稱為C+語言的表達式。常見的表達式有賦值表達式,算術(shù)表達式和逗號表達式。賦值表達式是由賦值運算符構(gòu)成的表達式,例如int a=10。雖然賦值表達式十分簡單,但其應(yīng)用廣泛。函數(shù)的返回值可以直接作為賦值表達式右半局部,例如函數(shù)int fun(),可以這樣寫出賦值表達式int

25、i=fun()。逗號表達式即前面講解的由逗號運算符構(gòu)成的表達式。程序通過語句向計算機發(fā)送命令。但是程序中并不都是語句,聲明局部的內(nèi)容不是語句。例如int i=9;這條賦值語句不能算作一條語句。在C+程序設(shè)計中常用的語句包括以下幾種。1控制語句:在程序設(shè)計中最常用的結(jié)構(gòu)類設(shè)計語句。例如循環(huán)、條件等。2函數(shù)調(diào)用:程序設(shè)計中對函數(shù)的調(diào)用。3表達式語句:一個表達式構(gòu)成的語句。最簡單的如賦值語句:int a=0;。4空語句:只有一個分號所構(gòu)成的語句。5復合語句:用大括號“把幾條語句放在一起成為復合語句,又稱為分程序。2.6 程序控制結(jié)構(gòu)C+語言中有3種根本的程序控制結(jié)構(gòu),分別是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)

26、構(gòu)。幾乎所有應(yīng)用軟件都會使用這3種程序控制結(jié)構(gòu)。順序結(jié)構(gòu)比較簡單,程序按照語句的順序執(zhí)行。選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)可以完成很多復雜的功能。本節(jié)將對這3種控制結(jié)構(gòu)進行分析,講解操作實例。2.6.1 直腸子程序順序結(jié)構(gòu)順序結(jié)構(gòu)是最簡單、最常用的程序結(jié)構(gòu)。其典型特點是程序完全按照語句出現(xiàn)的先后次序執(zhí)行。在順序結(jié)構(gòu)的程序中,最常用的是賦值語句。其是C+程序中最根本的語句,作用是將表達式的值賦給變量或?qū)ο?。賦值語句的語法格式如下:name= expression;其中,name為變量或者對象,expression為表達式。順序結(jié)構(gòu)常見的用法是在程序中和用戶的輸入進行交互。程序從上到下順序執(zhí)行?!纠纭?設(shè)計一

27、個程序,輸入某個學生的語文、數(shù)學、英語3門課的成績后計算其總成績和平均分。分析:要求3個數(shù)相加求其總和并計算平均值,采用順序設(shè)計比較合理,具體代碼如下:分析:上面的例子就是順序程序設(shè)計,其中的cin和cout為首的幾行是輸入輸出,具體用法將在下面進行介紹。這里只需了解順序程序設(shè)計的根本結(jié)構(gòu)即可。說明:C+程序設(shè)計中注釋符為“/,即“/后面的內(nèi)容為注釋內(nèi)容。同時在C+中“/*和“*/成對出現(xiàn),其中的內(nèi)容也為注釋內(nèi)容2.6.2 有頭腦的程序選擇結(jié)構(gòu)選擇結(jié)構(gòu)是利用條件語句實現(xiàn)的。根據(jù)指定的條件表達式的結(jié)果,選擇符合條件的某一分支執(zhí)行相關(guān)操作。條件語句中的條件表達式通常是關(guān)系表達式、邏輯表達式、數(shù)字表

28、達式或者字符串表達式。選擇結(jié)構(gòu)程序設(shè)計是應(yīng)用程序設(shè)計過程中較為常用的結(jié)構(gòu)。關(guān)系運算符是選擇結(jié)構(gòu)中常用的判斷語句。在C+語言中常用的是ifelse語句,其最常用的形式有下面3種。1第一種樣式if (關(guān)系表達式) 語句1;else 語句2;分析:上面的選擇結(jié)構(gòu)是根據(jù)if后面的括號的關(guān)系表達式的值進行選擇分支。如果關(guān)系表達式為真,那么執(zhí)行語句1;否那么,執(zhí)行語句2?!纠纭?是一個選擇結(jié)構(gòu)例如。下面的代碼根據(jù)整型變量a的值與3的大小關(guān)系進行選擇結(jié)構(gòu)的輸出。if(a3)/判斷a是否大于3,如果大于3,執(zhí)行下面的語句,否那么執(zhí)行else后面的語句couta is bigger than 3endl;el

29、se couta is not bigger than 310的關(guān)系的真假進行語句選擇。如果為真,那么執(zhí)行語句,將x重新賦值為11。否那么跳過該語句。if(x10)x=11;分析:上面的形式是選擇結(jié)構(gòu)中最簡單的用法,即根據(jù)條件表達式的值進行判斷,符合條件那么執(zhí)行語句,否那么不執(zhí)行語句。需要注意的是語句可以是利用大括號括起來的復合語句。3第三種樣式if(表達式1)語句1else if(表達式2)語句2else if(表達式m)語句melse 語句m+1分析:上面的選擇結(jié)構(gòu)是一個多項選擇結(jié)構(gòu)。其根據(jù)表達式的值逐層向下執(zhí)行,遇到真那么執(zhí)行if后面的語句,否那么執(zhí)行else進入下一層選擇結(jié)構(gòu)?!纠纭?/p>

30、一個選擇結(jié)構(gòu)例如。將a的取值分為4個范圍,然后根據(jù)a的范圍,分別輸出一句代碼。if(a3)/判斷a是否小于3couta is small than 3endl;/a小于3else if(a6)/a不小于3,繼續(xù)判斷是否小于6couta is not small 3,but is small than 6endl;else if(a10)/a不小于6,判斷是否小于10couta is not small 6,but is small than 10endl;else couta is bigger than 10endl;分析:上面的形式是一種多項選擇擇形式。在實際應(yīng)用中,可能表達式的范圍并不可

31、以一分為二,可能會出現(xiàn)多個范圍,這就需要多項選擇擇語句。例如,郵局的包裹就需要根據(jù)不同的重量段進行收費。需要使用多項選擇擇語句。除了if語句外,switch語句也是較為常用的。其是多分支選擇語句。當然多分支語句可以用if語句的嵌套進行替換,但是switch更加簡單,程序可讀性更好。其形式如下:swith(表達式)case 常量表達式1:語句1case 常量表達式2:語句2case 常量表達式3:語句3case 常量表達式n:語句ndefault 語句n+1上面的結(jié)構(gòu)根據(jù)switch后面括號內(nèi)的表達式的選擇語句執(zhí)行。當表達式的值與case后面的常量表達式的值相等時那么執(zhí)行“:后面的語句。當找不到

32、對應(yīng)的值時,那么執(zhí)行default后面的語句。【例如】利用switch語句改寫例如,即利用switch語句實現(xiàn)a的取值范圍的劃定。switch(a/3)/switch判斷case 0:/a/3為0couta is small than 3endl;break;case 1: /a/3為1couta is not small 3,but is small than 6endl;break;case 2:/a/3為2couta is not small 6,but is small than 9endl;break;default:/a/3不滿足上面的取值couta is not small th

33、an 9endl;分析:上面的選擇結(jié)構(gòu)那么是根據(jù)a/3的值選擇語句執(zhí)行。需要注意的是,執(zhí)行完一個case語句后,流程會繼續(xù)執(zhí)行下一條case語句。因此程序的case語句經(jīng)常需要添加break跳出整個結(jié)構(gòu)。上面介紹了常用的幾種選擇結(jié)構(gòu)。在實際應(yīng)用中可以根據(jù)適宜的結(jié)構(gòu)設(shè)計選擇程序。下面介紹一個選擇結(jié)構(gòu)設(shè)計的例子?!纠纭?設(shè)計一個程序,輸入一個數(shù)據(jù),如果輸入數(shù)據(jù)大于10,那么在屏幕輸出its greater than 10。如果小于等于10而大于5,那么在屏幕輸出its greater than 5,but less than 10。如果小于5,那么輸出its less than 5。分析:要求根

34、據(jù)輸入數(shù)據(jù)的區(qū)間選擇輸出,程序需要使用if語句的第三種使用方式,具體程序如下:分析:上面的程序就是選擇結(jié)構(gòu)的設(shè)計。根據(jù)一個輸入的整數(shù)值,輸出其范圍。如果輸入的值大于10,那么輸出一條大于10的語句。如果輸入大于5而小于10,那么輸出其大于5小于10的語句。如果不滿足上面的情況那么輸出小于5的一條語句。2.6.3 死腦筋的程序循環(huán)結(jié)構(gòu)循環(huán)程序設(shè)計也是程序設(shè)計中常用的結(jié)構(gòu)之一。程序中一些代碼段需要重復執(zhí)行以實現(xiàn)某些功能。例如程序中要計算1加到100的值,如果選擇順序結(jié)構(gòu),那么相加語句至少要寫99條。而如果使用循環(huán)結(jié)構(gòu),程序的結(jié)構(gòu)會十分清晰。循環(huán)結(jié)構(gòu)中常用的形式是for循環(huán)、while循環(huán)和dowh

35、ile循環(huán),以及goto語句。1for循環(huán)for循環(huán)的根本形式如下所示。for(表達式1;表達式2;表達式3)語句;其執(zhí)行過程如下所述。1先求解表達式1;2求解表達式2,假設(shè)其值為真值為非0,那么執(zhí)行for循環(huán)中的內(nèi)嵌語句,然后執(zhí)行步驟3,否那么跳轉(zhuǎn)到步驟5;3求解表達式3;4轉(zhuǎn)回到步驟2;5循環(huán)結(jié)束,順序向下執(zhí)行?!纠纭恳粋€for循環(huán)例如。語句執(zhí)行10次,即程序輸出10行“study。for(i=0;i10;i+)/i從1到10進行10次循環(huán) coutstudy3語句,如果成立那么輸出a3,然后將a加1,再執(zhí)行判斷a3語句,繼續(xù)循環(huán)執(zhí)行。while(a3)cout3endl;a+;分析:上

36、面的代碼中首先比較a與3,然后根據(jù)判斷結(jié)果執(zhí)行循環(huán)體。注意while后面括號內(nèi)的表達式后面不能添加分號。同時使用while循環(huán)時應(yīng)該在循環(huán)體中對while循環(huán)條件進行改變,否那么程序一直進行循環(huán)。3goto語句goto語句常用的形式是:goto 語句標號;語句標號用標識符來表示,是由字母、數(shù)字和下劃線組成,但第一個符號必須是字母或下劃線。goto語句可以和if語句一起構(gòu)成循環(huán)結(jié)構(gòu)。使用goto語句程序可讀性差,流程不清晰,因此程序設(shè)計中應(yīng)盡量防止使用goto語句。【例如】 是一個goto語句例如。首先執(zhí)行print:后面的語句,然后順序執(zhí)行。當執(zhí)行到goto print;時那么程序會跳轉(zhuǎn)到pr

37、int:后面的語句再次執(zhí)行。print: coutstudyendl;goto print需要注意的是語句標號是一個非C+關(guān)鍵字的標識符,在語句標號后面添加一個分號表示語句標號所在位置。說明:一般情況下不使用goto語句,過多使用goto語句會影響程序可讀性和穩(wěn)定性。4dowhile循環(huán)dowhile循環(huán)常用的形式如下:do循環(huán)體語句while表達式它是這樣執(zhí)行的,首先執(zhí)行一次循環(huán)體,然后判斷表達式。如果表達式為真,那么返回重新執(zhí)行循環(huán)體,直到表達式的值為0?!纠纭?是一個dowhile循環(huán)例如。首先執(zhí)行大括號內(nèi)的語句,然后判斷a=3,如果成立,那么繼續(xù)執(zhí)行括號內(nèi)語句。依次循環(huán),直到whil

38、e后面括號內(nèi)的表達式為假時,不再執(zhí)行。docoutstudyendl;a+;while(a配合使用,cin可以連續(xù)輸入多個數(shù)據(jù),但需要注意的是用戶輸入多個數(shù)據(jù)時需要在連續(xù)輸入之間參加空格、回車或Tab鍵。同時C+語言的輸入默認使用了系統(tǒng)默認格式,但是在程序設(shè)計中可以對輸入輸出進行格式控制。例如可以按十六進制、八進制等進行輸入輸出,具體使用如例如所示。2標準輸出標準輸出是指從內(nèi)存到屏幕的輸出。cout和“配合使用。同時cout可以輸出多項,即可以連續(xù)使用“進行輸出,輸出按從左向右進行輸出。cout中定義控制符endl代表回車換行。下面給出一個輸入輸出的實例。由于cout和cin定義在頭文件中,編

39、寫程序時需要將此頭文件包含在程序中。【例如】 連續(xù)輸入3個整數(shù),然后把3個數(shù)據(jù)分別以十進制、八進制、十六進制輸出。具體代碼如下:2.8 編程實例與調(diào)試前面已經(jīng)介紹了C+語言的根底知識,下面介紹C+程序設(shè)計中代碼編寫和程序調(diào)試的根本方法。2.8.1 編寫代碼分析根本問題后,就需要把實際問題抽象成一定的數(shù)學模型,然后通過軟件設(shè)計工具進行描述后,根據(jù)此流程圖編寫程序。代碼編寫是程序中的根本工作之一,當把問題的數(shù)學模型做好以后,根據(jù)數(shù)學模型作出程序流程圖,剩下的工作就是由編程實現(xiàn)。因此代碼編寫用數(shù)學模型去實現(xiàn)。那么代碼編寫要注意哪些問題呢?首先是注意根據(jù)程序流程圖編寫代碼。程序流程圖是把數(shù)學模型進行轉(zhuǎn)化得到的,是程序設(shè)計中最重要的一局部??梢哉f流程圖是對程序設(shè)計的最強有力的指導。然后注意代碼編寫的習慣。無論是注釋的添加,還是空格的使用,都需要注意。養(yǎng)成良好的編寫代碼的習慣是一個程序員最根本的素質(zhì)。最后就是注意對代碼的重復使用。程序設(shè)計中代碼的重復利用是十分重要的,C+語言“類的產(chǎn)生可以說就是為了代碼的重復利用問題,因此編寫程序時應(yīng)該把一些常用的代碼段保存,做成自己的庫文件。在Visual C+中編寫代碼首先應(yīng)該注意代碼的格式。同時應(yīng)該了解一些常用的技巧。在中可以使用右下角的狀態(tài)欄定位光標的當前位

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論