武漢大學C++完整講義(李春葆)_第1頁
武漢大學C++完整講義(李春葆)_第2頁
武漢大學C++完整講義(李春葆)_第3頁
武漢大學C++完整講義(李春葆)_第4頁
武漢大學C++完整講義(李春葆)_第5頁
已閱讀5頁,還剩689頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

課程:面向?qū)ο蟮某绦蛟O計目前支持面向?qū)ο蟪绦蛟O計的主要環(huán)境:

?C++?Java教材

C++程序設計,清華大學出版社,劉加海等,2009年C++程序設計,清華大學出版社,李春葆等,2005年上機環(huán)境:VisualC++6.0第1章C++概述1.1C++的發(fā)展歷史

C++源于C語言。1972年至1973年期間,D.M.Ritchie首創(chuàng)了一種新的程序設計語言,取名為C語言。設計C語言的最初目的是編寫操作系統(tǒng)。由于其簡單、靈活的特點,C語言很快就被用于編寫各種不同類型的程序,從而成為世界上最流行的語言之一。C語言是面向過程的語言->C++是面向?qū)ο蟮恼Z言,稱為“帶類的C”,1993年正式取名為C++。C++改進了C的不足之處,支持面向?qū)ο蟮某绦蛟O計,在改進的同時保持了C的簡潔性和高效性。

C++編譯系統(tǒng):Microsoft公司的VisualC++6.0、Borland公司的BorlandC++5.02等。1.2程序設計語言和程序設計方法1.2.1程序和程序設計語言計算機程序是對計算機處理對象和計算規(guī)則的描述。程序設計語言是用來描述計算機事務處理過程、便于計算機執(zhí)行的規(guī)范化語言。無論自然語言還是計算機語言,其基礎是一組記號和規(guī)則,根據(jù)規(guī)則由記號構成記號串的總體就是語言。我們知道,人類自然語言(如漢語)是人們交流和表達思想的工具。那么,人與計算機如何“交流”呢?為此,就產(chǎn)生了計算機語言,其功能是人用計算機語言編寫一系列的動作,計算機能夠“理解”這些動作,按照指定的動作去執(zhí)行。正是這種相同點,所以計算機語言和自然語言都叫作“語言”。

自然語言由于其歷史性和文化性,除了其語法外,還包含復雜的語義和語境,所以,人們也能理解很多不完全符合語法的語句。但計算機語言是人發(fā)明的,它主要是用語法來表達人的思想,因而在編寫程序時要嚴格遵守語法規(guī)則。如同人類有很多自然語言一樣,計算機語言也有很多種。按照計算機歷史的發(fā)展有如下幾類:

機器語言它是面向機器的,是特定計算機系統(tǒng)所固有的語言。用機器語言進行程序設計,需要對機器結構有較多的了解。用機器語言編寫的程序可讀性很差,程序難以修改和維護。

匯編語言為了提高程序設計效率,人們考慮用有助記憶的符號來表示機器指令中操作碼和運算數(shù),例如用ADD表示加法,SUB表示減法等。相對機器語言來看,用匯編語言編寫程序的難度有所降低,程序的可讀性,有所提高,但仍與人類的思維相差甚遠。高級語言匯編語言和計算機的機器語言十分接近,它的書寫格式在很大程度上取決于特定計算機的機器指令,這對于人們抽象思維和交流十分不便。高級語言指的是像Fortran、C、Pascal和Basic等與具體機器無關的語言,這樣程序設計者不需要了解機器的內(nèi)部結構,只要按照計算機語言的語法編寫程序即可。1.2.2結構化程序設計出現(xiàn)高級語言之后,如何用它來編寫較大的程序呢?人們把程序看成是處理數(shù)據(jù)的一系列過程。過程或函數(shù)定義為一個接一個順序執(zhí)行的一組指令。數(shù)據(jù)與程序分開存儲,程序設計的主要技巧在于追蹤哪些函數(shù)和調(diào)用哪些函數(shù),哪些數(shù)據(jù)發(fā)生了變化。為解決其中可能存在的問題,結構化程序設計應運而生。C程序由函數(shù)組成,從組織形式上看,函數(shù)亦稱為模塊,每個模塊實現(xiàn)一個單一的功能,這稱為模塊化程序設計。模塊化程序設計的思想是,按照自頂向下的原則,把問題逐層分解。先從總體出發(fā),把問題分成若干個大塊,每一大塊代表一個大任務;在此基礎上再對每個大塊細化,把大任務變成若干個小任務。這一過程叫做逐步求精,直到每個小任務都能用基本結構(順序、分支和循環(huán)3種結構之一)表示為止。在劃分模塊的過程中,應保證模塊的單入口單出口、完整性和獨立性,這種方法稱為結構化程序設計。

結構化程序設計仍然存在諸多問題:

生產(chǎn)率低下軟件代碼重用程度低軟件仍然很難維護針對結構化程序設計的缺點,人們提出了面向?qū)ο蟮某绦蛟O計方法。1.2.3面向?qū)ο蟮某绦蛟O計面向?qū)ο蟪绦蛟O計的本質(zhì)是把數(shù)據(jù)和處理數(shù)據(jù)的過程當成一個整體即對象。一般認為,面向?qū)ο蟪绦蛘Z言至少包含下面一些概念:

對象對象是人們要進行研究的任何實際存在的事物,它具有狀態(tài)(用數(shù)據(jù)來描述)和操作(用來改變對象的狀態(tài))。面向?qū)ο笳Z言把狀態(tài)和操作封裝于對象體之中,并提供一種訪問機制,使對象的“私有數(shù)據(jù)”僅能由這個對象的操作來執(zhí)行。用戶只能通過向允許公開的操作提出要求(消息),才能查詢和修改對象的狀態(tài)。這樣,對象狀態(tài)的具體表示和操作的具體實現(xiàn)都是隱蔽的。

類把眾多事物歸納、劃分成一些類,把具有共性的事物劃分為一類,得出一個抽象的概念,是人類認識世界經(jīng)常采用的思維方法。類是面向?qū)ο笳Z言必需提供的用戶定義的數(shù)據(jù)類型,它將具有相同狀態(tài)、操作和訪問機制的多個對象抽象成為一個對象類。在定義了類以后,屬于這種類的一個對象叫作類實例或類對象。一個類的定義應包括類名、類的說明和類的實現(xiàn)。

繼承繼承是面向?qū)ο笳Z言的另一個必備要素。類與類之間可以組成繼承層次,一個類的定義(稱為子類)可以定義在另一個已定義類(稱為父類)的基礎上。子類可以繼承父類中的屬性和操作,也可以定義自已的屬性和操作,從而使內(nèi)部表示上有差異的對象可以共享與它們結構有共同部分的有關操作,達到代碼重用的目的。面向?qū)ο蟪绦蛟O計的主要優(yōu)點是:

與人類習慣的思維方式一致結構化程序設計是面向過程的,以算法為核心,把數(shù)據(jù)和過程作為相互獨立的部分。面向?qū)ο蟪绦蛟O計以對象為中心,對象是一個統(tǒng)一體,它是由描述內(nèi)部狀態(tài)表示靜態(tài)屬性的數(shù)據(jù)以及可以對這些數(shù)據(jù)施加的操作封裝在一起所構成的。面向?qū)ο笤O計方法是對問題領域進行自然分解,確定需要使用的對象和類,建立適當?shù)念惖燃?,在對象之間傳遞消息實現(xiàn)必要的聯(lián)系,從而按照人們習慣的思維方式建立起問題域的模型,模擬客觀世界。

可重用性好面向?qū)ο蟮能浖夹g在利用可重用的軟件成分構造新的軟件系統(tǒng)時有很大的靈活性。有兩種方法可以重復使用一個對象類:一種方法是創(chuàng)建該類的實例,從而直接使用它;另一種方法是從它派生出一個滿足當前需要的新類。繼承性機制使得子類不僅可以重用其父類的數(shù)據(jù)結構和程序代碼,而且可以在父類代碼的基礎上方便地修改和擴充,這種修改并不影響對原有類的使用。人們可以像使用集成電路(IC)構造計算機硬件那樣,比較方便地重用對象類來構造軟件系統(tǒng)。

可維護性好類是理想的模塊機制,它的獨立性好,修改一個類通常很少會牽扯到其他類。如果僅修改一個類的內(nèi)部實現(xiàn)部分(私有數(shù)據(jù)成員或成員函數(shù)的算法),而不修改該類的對外接口,則可以完全不影響軟件的其他部分。面向?qū)ο筌浖夹g特有的繼承機制,使得對軟件的修改和擴充比較容易實現(xiàn),通常只要從已有類派生出一些新類,無須修改軟件原有成分。面向?qū)ο筌浖夹g的多態(tài)性機制,使得擴充軟件功能時對原有代碼所需作的修改進一步減少,需要增加的新代碼也比較少。所以,面向?qū)ο蠓椒ㄔO計的程序具有很好的可維護性。1.3C++語言的特點

C++語言的主要特點在于它支持面向?qū)ο蟪绦蛟O計。下面說明它和面向?qū)ο笥嘘P的一些特征。

1.類和數(shù)據(jù)封裝

2.構造函數(shù)和析構函數(shù)

3.訪問限制符和信息隱蔽性

4.對象和消息

5.友元

6.運算符重載和函數(shù)重載

7.繼承和派生類

8.虛函數(shù)1.4C++程序開發(fā)過程

C++程序開發(fā)過程與其他高級語言源程序開發(fā)過程的原理是一樣的,一般,都要經(jīng)過編輯、編譯和執(zhí)行三個步驟。

編輯源程序:生成文本文件(file.cpp)

編譯:生成一個目標文件(file.obj)

連接:生成一個可執(zhí)行文件(file.exe)1.5C++程序結構1.5.1簡單的C++程序我們用一個簡單的程序例子來分析C++的程序構成。以下代碼是一個完整的可以執(zhí)行的C++程序:/*-----------------------------------------

文件名:ch1.cpp------------------------------------------*/#include<iostream.h>#include<math.h>voidmain(){ inti,j,k; //說明變量

i=2;j=8; //變量賦值

k=pow(i,j); cout<<i<<"的"<<j<<"次方="<<k<<endl;}1.5.2C++程序的組成一個C++程序由以下基本部分組成:

1.預處理命令

2.輸入和輸出

3.函數(shù)

4.語句語句是組成程序的基本單元。函數(shù)是由若干條語句組成的。但是,空函數(shù)是沒有語句的。語句由單詞組成,單詞間用空格符分隔,C++程序中的語句又是以分號結束。一條語句結束時要用分號,沒有結束時不要用分號。

在C++語句中,表達式語句最多。表達式語句由一個表達式后面加上分號組成。任何一個表達式加上分號都可以組成一條語句。只有分號而沒有表達式的語句為空語句。語句除了有表達式語句和空語句之外,還有復合語句、分支語句、循環(huán)語句和轉向語句等若干類。

5.變量多數(shù)程序都需要說明和使用變量。變量的類型很多,這充分體現(xiàn)了C++數(shù)據(jù)類型豐富的特點。1.5.3C++語言的風格C++語言的風格概括如下:

C++語言嚴格區(qū)分大小寫英文字母。

C++語言用“;”作為語句分隔符。

C++語言中大括號“{”和“}”用于標識一個語句組,即構成一個復合語句,因此必須配對使用。

C++程序書寫格式自由,一行內(nèi)可以寫幾個語句,一個語句可以寫在幾行上??梢允褂?/或/*...*/對C++程序中的任何部分作注釋。一行一般寫一條語句。短語句可以一行寫多個。長語句可以一條寫多行。第2章C++數(shù)據(jù)類型程序用于處理數(shù)據(jù),而數(shù)據(jù)是以變量或常量的形式存儲,每個變量或常量都有數(shù)據(jù)類型。數(shù)據(jù)類型是最基本的元素。確定了數(shù)據(jù)類型,才能確定變量的空間大小和其上的操作。

C++提供了豐富的數(shù)據(jù)類型,歸納起來,分為基本數(shù)據(jù)類型和復合數(shù)據(jù)類型。數(shù)據(jù)類型與操作是不可分割的,而操作是通過運算符實現(xiàn)的,例如:

intb=3,c=4;

a=b+c;//a、b和c是整型變量,進行加法操作2.1基本數(shù)據(jù)類型基本數(shù)據(jù)類型有5種:

?整型(int)

?單精度浮點型(float)

?字符型(char)

?

雙精度浮點型(double)

?無值型(void)

名稱字節(jié)數(shù)int4shortint2longint4unsignedint4unsignedshortint2unsignedlongint4char1unsignedchar1float4double8longdouble10表2.1系統(tǒng)數(shù)據(jù)類型的數(shù)據(jù)占用的字節(jié)數(shù)

2.2常量和變量2.2.1常量常量是在程序中不能改變的量。C++支持4種類型的常量:浮點型、整型、字符型和枚舉型。

1.整型常量整型數(shù)據(jù)表示通常意義上的整數(shù),如34,-4,0,1234。整型量在C++中用int定義。整型常量可以用十進制、八進制或十六進制表示,例如整數(shù)20可以表示為:

20 //十進制

024 //八進制數(shù)以0開頭

0x14 //十六進制數(shù)以0x開頭

整型常量可以后跟字母l或L表示long型(長整數(shù)),也可以跟u或U表示unsigned整數(shù)(無符號整數(shù)),如以下數(shù)是合法的:

135u //無符號整數(shù)

8846UL //無符號長整數(shù)

5L //長整數(shù)

10lu //無符號長整數(shù)2.浮點數(shù)常量

浮點數(shù)也和數(shù)學意義的浮點數(shù)類似。浮點數(shù)分為整數(shù)部分和小數(shù)部分。一個浮點數(shù)常量可以用科學記數(shù)法和通常的十進制數(shù)表示法表示。科學記數(shù)法格式:

[d][.d][[E|e][+|-]d]

其中,d是一位或多位十進制數(shù)字(0~9)。E(也可用e)是指數(shù)符號。小數(shù)點之前的是整數(shù)部分,小數(shù)點之后是尾數(shù)部分,它們是可省略的。小數(shù)點在沒有尾數(shù)時可省略。浮點常量可用字母F或f標志。如以下數(shù)是合法的:

3.14159F0.121.0E-32.f

以下數(shù)是不合法的:

E+2.51.25F-23.字符常量與字符串常量

C++中的字符常量常用單引號括起,如‘3’、‘b’和‘’分別表示字符3、字符b和空白字符。在內(nèi)存中,字符數(shù)據(jù)以ASCII碼存儲,如字符'a'的ASCII碼為97,字符'*'的ASCII碼為42。有些字符是可以顯示的,如字母、數(shù)字和一些符號'!'、'@'、'#'、'+'、'/'等,而有些字符不可顯示,如ASCII碼為8的字符表示退格(backspace),ASCII碼為13的字符表示回車等。

當0個或多個字符由雙引號"…"括起時,就組成字符串常量。以下是字符串常量的例子:

"" //空串

"abcd" //一般字符串

"a\n\rb" //帶特殊符號的字符串

字符串常量實際上是一個字符數(shù)組,組成數(shù)組的字符除顯式給出的外,還包括字符結尾處標識字符串結束的符號‘\0’,所以字符串“abc”實際上包含4個字符:‘a(chǎn)’、‘b’、'c'和'\0'。2.2.2變量變量就是值可變的量。每個變量由一個變量名惟一標識,同時,每個變量又具有一個特定的數(shù)據(jù)類型。類型標志著這個變量將來的用法以及它將保存哪種類型的數(shù)據(jù)值。

1.命名變量名變量名要遵守以下規(guī)則:(1)不能是C++保留字。C++的保留字如表2.3所列。(2)第一個字符必須是字母或下劃線。中間不能有空格。(3)變量名中除了使用26個英文大小寫字母和數(shù)字外,只能使用下劃線。(4)一般不要超過31個字符。(5)變量名不要與C++中的庫函數(shù)名、類名和對象名相同。例如,以下都是有效的變量名:

i1,count,_fnum,str_1

以下不是有效的變量名:

1abc,a-b,abc【例】下列變量名中合法的是

。

A.B.C.Tom B.3a6bC._6a7b D.$ABC

答:選項A中出現(xiàn)“.”字符錯誤;選項B中以數(shù)字開頭錯誤;選項D中出現(xiàn)“$”字符錯誤;本題答案為:C。2.變量定義和說明

C++中,變量使用之前一定要定義或說明,變量定義的格式一般為:

[修飾符]類型變量名;//注釋其中,類型指出變量所存放的數(shù)據(jù)的類型;變量名是任意合法的變量名;注釋指明該變量的含義和用途;修飾符進一步描述了變量的使用方式。修飾符和注釋是任選的,可以沒有?!罢f明”和“定義”之間是有區(qū)別的,兩者的語法格式類似。“說明”是向計算機介紹名字,它說“這個名字是什么意思”。而“定義”則為這個名字分配存儲空間。無論涉及到變量時還是函數(shù)時含義都一樣。無論在哪種情況下,編譯器都在“定義”處分配存儲空間。對于變量,編譯器確定這個變量占多少存儲單元,并在內(nèi)存中產(chǎn)生存放它們的空間。對于函數(shù),編譯器產(chǎn)生代碼,并為之分配存儲空間。3.變量初始化在定義變量時可以給變量賦一個初值,初值可以是一個表達式,但該表達式必須在編譯時就能計算出值來。系統(tǒng)自動計算得到一個值后,賦給該變量。下面是一些變量初始化的例子:

constdoublePI=3.14159;inti=10;floata=1.4;b=a*5;2.3運算符和表達式在程序中,表達式是計算求值的基本單位,它是由運算符和運算數(shù)組成的式子。運算符是表示進行某種運算的符號,C++規(guī)定了很多有特定功能的運算符,如“+”表示加減運算。運算數(shù)包含常量、變量和函數(shù)等。運算符與運算數(shù)有關,如:

5.0/2=2.55/2=2 //整除

2.3.1算術運算符

C++定義了5種簡單的操作,即加(+)、減(-)、乘(*)、除(/)和取模(%),其中乘(*)、除(/)和取模(%)優(yōu)先于加(+)減(-)。括號用來表示一組項的計算,計算時,先計算括號內(nèi)表達式的值,再將計算結果與括號外的數(shù)一起計算,如:

4*(1+2)=4*3=12//先計算1+2的結果取模運算符(%)用于計算兩整數(shù)相除后得到的余數(shù),如:

22%7//結果為1

注意:%只能用于整數(shù)相除,不能對浮點數(shù)操作。2.3.2賦值運算符賦值運算符“=”將其右側的表達式求出結果,賦給其左側的變量。例如:

inti;i=4*(1+2);//i的值變?yōu)?2

賦值表達式本身的運算結果是右側表達式的值,而結果類型是左側變量的數(shù)據(jù)類型。例如:

inti=2.8*4;//結果為11,而不是11.2

賦值運算符的結合性是從右至左的,因此,C++程序中可以出現(xiàn)連續(xù)賦值的情況。另外,還有一類復合運算符:a+=b 等價于 a=a+ba-=b 等價于 a=a-ba*=b 等價于 a=a*ba/=b 等價于 a=a/ba%=b 等價于 a=a%ba<<=b 等價于 a=a<<ba>>=b 等價于 a=a>>ba&=b 等價于 a=a&ba^=b 等價于 a=a^ba|=b 等價于 a=a|b

使用賦值運算符需要注意的是,運算符左邊必須是一個左值(lvalue),即它必須代表一個有效的內(nèi)存地址,必須能給它賦值。常量不能作為左值,一般的表達式如a+b*c也不能作為左值,因為它只代表一個值,不代表一個內(nèi)存地址。例如,以下語句錯誤:

a+b=a;【例】若變量a是int類型,并執(zhí)行了語句:a='A'+1.6;,則正確的敘述是

。

A.a的值是字符C B.a的值是浮點型

C.不允許字符型和浮點型相加

D.a的值是字符'A'的ASCII值加上1。答:a='A'+1.6中1.6轉換為int數(shù)即1。本題答案為:D?!纠恳韵鲁绦虻妮敵鼋Y果是

。

#include<stdio.h>main(){inta=3;printf("%d\n",(a+a-=a*a));}A.–6 B.12C.出錯 D.-12

答:a+a-=a*a計算錯誤,該表達式中,*運算符優(yōu)先級最高,先執(zhí)行a*a返回9,+運算符次之,執(zhí)行a+a得到6,再執(zhí)行6-=9,賦值運算符右邊是常量,出現(xiàn)錯誤。本題答案為:C。2.3.3等值、關系和邏輯運算符等值、關系和邏輯運算符的運算結果為true(真)或false(假),分別用值非0(true)或0(false)表示。C++中的關系和邏輯運算符如下:

!(邏輯反),<(小于),

<=(小于等于),>(大于),

>=(大于等于),==(等于),

!=(不等于),&&(邏輯與),

||(邏輯或)【例】設intx=1,y=2;表達式(!x||y--)的值是

。

A.0 B.1C.2 D.-1

答:先計算!x返回0,再計算y--返回1,兩者進行邏輯或運算,返回1。本題答案為:B。【例】已有定義:intx=3,y=4,z=5,則表達式!(x+y)+z-1&&y+z/2的值是

A.6 B.0C.2 D.1

答:(x+y)返回7,!(x+y)返回0,!(x+y)+z-1=4即為邏輯真(1),y+z/2=6即為邏輯真(1),兩者執(zhí)行邏輯與運算返回1。本題答案為:D。2.3.4自增、自減運算符自增(++)、自減(--)運算符為變量的增1和減1提供了緊湊格式:

a++ 等價于a=a+1a-- 等價于a=a-1

需要說明的是,自增、自減符號既可位于變量的前面,也可位于變量的后面。在單獨作為一個表達式時,++a和a++效果一樣,都是將變量a自增1。若作為一個復雜表達式的一部分,前綴++表示先將其后面的變量值增1,然后將增1后的變量參與表達式運算,而后綴++表示將其前面的變量先參與表達式運算,然后變量本身增1。例如,若a=1,b=2,則(a++)+b的結果為3,而(++a)+b的結果為4。自減運算符含義類似?!纠緾語言中,關于自增和自減運算符使用正確的是

。

A.10++ B.(x+y)--C.d+++d+++d++ D.++(a-b)

答:++不能作用于常量和表達式。本題答案為:C?!纠恳阎篿nti=6,j;則語句j=(++i)+(i++)后的j值是

A.4 B.14C.13 D.15

答:先執(zhí)行++i返回7(i=7),再執(zhí)行i++返回7(i=8),所以j=7+7=14。本題答案為:B。2.3.5條件運算符條件運算符是C++中惟一具有3個操作數(shù)的運算符,其格式如下:表達式1?表達式2:表達式3

它的運算方式為:先計算表達式1的值,如果其值為非零(真),則表達式2的值就是整個表達式的最終結果;否則表達式3的值就是整個表達式的值?!纠咳魒=1,x=2,y=3,z=4,則條件表達式w>x?w:y<z?y:z的結果是

。

A.4 B.3C.2 D.1

答:由于w>x為假,返回表達式y(tǒng)<z?y:z,又由于y<z為真,返回y的值即3。本題答案為:B?!纠咳艚o定條件表達式(M)?(a++):(a--),則其中表達式(M)

。

A.和(M==0)等價 B.和(M==1)等價

C.和(M!=0)等價 D.和(M!=1)等價答:(M)條件表達式的結果是一個邏輯值,表示M是否為真,它與M!=0等價,因為M為真時,M!=0亦為真,M為假時,M!=0亦為假。所以本題答案為C。2.3.6位運算符位(bit)是計算機中表示信息的最小單位,一般用0和1表示。一個字符在計算機中用8個位表示,8個位組成一個字節(jié)。需要將我們通常所習慣的十進制數(shù)表示為二進制、八進制或十六進制數(shù)來理解對位的操作。位運算符的運算對象必須為整數(shù),C++中所有的位運算符如下:

~(按位求反),<<(左移),

>>(右移),&(按位與),

^(按位異或),|(按位或)【例】將短整型變量a的低8位全變?yōu)?,高8位保留原狀,應進行的運算是

。答:將a與[0000000011111111]2即[377]8進行按位或即可。本題答案為:a=a|0377。

a:xxxxxxxxyyyyyyyy|0000000011111111xxxxxxxx11111111【例】使短整型變量a的低4位翻轉(即0變?yōu)?,1變?yōu)?),應進行的運算是

。答:將a與[0000000000001111]2即[17]8進行按位異或即可。本題答案為:a=a^017。

a:xxxxxxxxxxxxyyyy^0000000000001111xxxxxxxxxxxxzzzz2.3.7sizeof運算符

sizeof運算符返回其后的表達式或類型標識符所表示的數(shù)在內(nèi)存中所占字節(jié)的多少,它有兩種形式:

?

sizeof(類型標識符);?

sizeof表達式;sizeof可以接受的類型標識符很多,如sizeof(int),sizeof(float),sizeof(int*),sizeof(int&),sizeof(int[3])等。對表達式施加sizeof運算符時,返回的是表達式運算結果的數(shù)據(jù)類型所占據(jù)的內(nèi)存空間?!纠咳粲衒loatx;則sizeof(x)和sizeof(float)兩種描述

。

A.都正確 B.都錯誤

C.前者正確 D.后者正確答:本題答案為:A。2.3.8運算符優(yōu)先級運算符優(yōu)先級決定了在表達式中各個運算符執(zhí)行的先后順序。高優(yōu)先級運算符先于低優(yōu)先級運算符進行運算。如根據(jù)先乘除后加減的原則,表達式“a+b*c”會先計算b*c,得到的結果再和a相加。在優(yōu)先級相同的情形下,則按從左到右的順序進行運算。當表達式中出現(xiàn)了括號時,會改變優(yōu)先級。先計算括號中的子表達式值,再計算整個表達式的值。教材中列出了C++的所有運算符集,依優(yōu)先級從高到低排列。【例】若有定義intnum=7,sum=7;則計算表達式sum=num++,sum++,++num后sum的值為

。

A.7 B.8C.9 D.10

答:“sum=num++,sum++,++num”是一個逗號表達式,由于逗號運算符的優(yōu)先級最低,從左向右執(zhí)行sum=num++、sum++、++num。本題答案為:B?!纠恳阎猧ntx=6;則執(zhí)行x+=x-=x*x語句后,x的值是

。

A.36 B.-60C.60 D.-24

答:先計算x*x=36(x=6),再計算x-=36,即x=x-36=-30,x-=x*x表達式返回x值即-30,最后計算x+=-30,即x=x+(-30)=-60。本題答案為:B。2.3.9表達式可以將表達式理解為用于計算的公式,它由運算符、運算數(shù)和括號組成。最簡單的表達式只有一個常量或變量,當表達式中有兩個或多個運算符時,表達式稱為復雜表達式,其中運算符執(zhí)行的先后順序由它們的優(yōu)先級和結合性決定。執(zhí)行表達式所規(guī)定的運算,所得到的結果值便是表達式的值。(1)算術表達式由算術運算符和位操作運算符組成的表達式,其表達式的值是一個數(shù)值,表達式的類型由運算符和運算數(shù)確定。

(2)邏輯表達式由邏輯運算符組成的表達式。其表達式值類型為邏輯型,一般地,真用1表示,假用0表示。例如,已知intn=2,!n&&5就是一個邏輯表達式。(3)關系表達式由關系運算符組成的表達式。其表達式的值的類型為邏輯型,一般地,真用1表示,假用0表示。例如,已知intn=2,n>=5就是一個關系表達式。

(4)賦值表達式由賦值運算符組成的表達式。例如,已知intn=2,n+=10就是一個賦值表達式。(5)條件表達式由三目運算符組成的表達式。條件表達式的值取決于?號前面的表達式,該表達式的值為非零時,整個表達式的值為:號前面表達式的值,否則為:號后面表達式的值。條件表達式的類型是:號前和后兩個表達式中類型高的一個表達式的類型。例如,已知intn=2,n>5?n++:n--就是一個條件表達式。(6)逗號表達式用逗號將若干個表達式連起來組成的表達式。該表達式的值是組成逗號表達式的若干個表達式中最后一個表達式的值,類型也是最后一個表達式的類型。逗號表達式計算值的順序是從左至右逐個表達式分別計算。例如,已知intn=2,那么n+=3,n=15,n-=10就是一個逗號表達式,該表達式的值為5?!纠咳糇兞恳颜_定義并賦值,為合法的表達式的是

A.a=a+1; B.a=7+b+c,a++C.int(12.5%2) D.a=a+1=c+b

答:選項A以分號結束,不是表達式;選項B是一個逗號表達式,先將7+b+c賦給a,然后使a增1;選項C中運算符%只能作用于整數(shù),不是表達式;選項D中a+1=c+b不是合法的表達式。本題答案為:B?!纠吭Ox、y、t均為int型變量,則執(zhí)行語句:x=y=3;t=++x||++y后,y的值為

。

A.不定值 B.4C.3 D.1

答:在語句t=++x||++y中,++x返回4不為假,故不會執(zhí)行++y。本題答案為:C。2.3.10數(shù)據(jù)類型轉換

C++中數(shù)據(jù)類型轉換有兩類,即隱式類型轉換和顯式類型轉換。

1.隱式類型轉換隱式類型轉換是由編譯器自動完成的類型轉換。當編譯器遇到不同類型的數(shù)據(jù)參與同一運算時,會自動將它們轉換為相同類型后再進行運算,賦值時會把所賦值的類型轉換為與被賦值變量類型一樣。隱式類型轉換按從低到高的順序進行,如圖2.1所示。圖2.1數(shù)據(jù)類型轉換的順序2.顯式類型轉換顯式類型轉換是由程序員顯式指出的類型轉換,轉換形式有兩種:

?

類型名(表達式)

?(類型名)表達式其中,“類型名”是任何合法的C++數(shù)據(jù)類型,例如float、int等。其功能是通過“類型名”顯式地將“表達式”值轉換成相應數(shù)據(jù)類型的值。【例】若有定義:

inta=2,b=3;floatx=3.5,y=2.5;

則下面表達式的值為____。

(float)(a+b)/2+(int)x%(int)y

答:本題答案為:3.500000。2.4復合數(shù)據(jù)類型復合數(shù)據(jù)類型包括枚舉(enum)、結構體(struct)、共用體(unoin)、位域和用戶自定義類型等,此外還有由基本數(shù)據(jù)類型和復合數(shù)據(jù)類型引申而來的數(shù)據(jù)類型,包括數(shù)組、指針、引用等。2.4.1枚舉類型枚舉類型定義了一些整型符號常量的集合,其格式如下:

enum類型名{標識符1,標識符2,…,標識符n};

其中,“標識符1”至“標識符n”表示一些整型符號常量,它們默認由系統(tǒng)賦予整數(shù)值:“標識符1”的值為0,“標識符2”的值為1,……,“標識符n”的值為n-1,序列中每個標識符的值比前一個標識符大1。例如:

enumBoolean{No,Yes};//No等于0,Yes等于1

程序員也可以自己定義標識符的值,定義方式是直接在定義語句的標識符后賦值。那些沒有顯式賦值的枚舉值還是比前一個標識符值大1,例如:

enumColor{Red=-2,Yellow,Green=2,Blue};

這樣有:Red=-2,Yellow=-1,Green=2,Blue=3。枚舉集合前加上的標識符可以代表這一枚舉類型,用于變量定義。例如:

enumDay{Mon,Tue,Wed,Thu,Fri,Sat,Sun}; enumDaytoday,tomorrow;//定義2個枚舉變量則有:

today=Mon; //合法,today值為0tomorrow=today; //合法,tomorrow值為0intn=today; //合法,n值為0tomorrow=3; //不合法,不能直接賦整數(shù)值【例】設有如下枚舉類型定義:

enumlanguage{Basic=3,Assembly,Ada=100,COBOL,Fortran};枚舉量Fortran的值為

A.4 B.7C.102 D.103

答:在枚舉常量Ada指定值為100,所以COBOL的值應為101,F(xiàn)ortran的值應為102。本題答案為:C。2.4.2結構體在C++中可用結構體將不同類型的數(shù)據(jù)構成一個整體,成為一個新的數(shù)據(jù)類型,稱為結構體類型。結構體類型由各個成員構成,有時也將這些成員稱為數(shù)據(jù)域,簡稱為域。結構體類型和結構體變量的說明格式如下:

struct[結構體名]

//結構體類型說明

{成員類型成員1;...

成員類型成員n;}[結構體變量名] //結構體變量定義其中,“結構體名”和“結構體變量名”都可以省略。省略前者表示說明了一個無名結構體類型和定義了具有該類型的變量,省略后者表示僅僅說明了一個結構體類型。

例如,說明一個具有姓名和年齡的結構體類型person的語句如下:

structperson {charname[10]; intage; };

上面只是說明了一個名稱為person的結構體類型,但沒有定義具有該結構體類型的變量,我們可以像使用系統(tǒng)預定義數(shù)據(jù)類型一樣定義結構體類型變量:

structpersonjohn;//定義一個person型變量john

以上兩個語句可以合在一起:

structperson {charname[10]; intage; }john;【例】有如下定義:

structdate{intyear;intmonth;intday;};structworklist{charname[20];charsex;structdatebirthday;}person;

對結構體變量person的出生年份進行賦值時,下面正確的賦值語句是

。

A.year=1958 B.birthday.year=1958C.person.birthday.year=1958D.person.year=1958

答:結構體變量person的birthday又是一個結構體變量,對其year的引用應是person.birthday.year。本題答案為:C。2.4.3共用體共用體的定義形式和用法類似于結構體,但結構體中的每個成員在內(nèi)存中占有獨立的存儲位置,而共用體的各個成員共享一塊內(nèi)存,所以,在任意時刻只能有一種數(shù)據(jù)類型的變量是活躍的。共用體類型和共用體變量的說明格式如下:

union共用體名 //共用體類型說明

{成員類型成員1;...

成員類型成員n;}[共用體變量名]; //共用體變量定義其中,“共用體名”和“共用體變量名”都可以省略。省略前者表示說明了一個無名共用體類型和定義了具有該類型的共用體變量,省略后者表示僅僅說明了一個共用體類型?!纠恳韵鲁绦虻妮敵鼋Y果是

。

#include<stdio.h>unionmyun{ struct {intx,y,z; }u; intk;}a;main(){ a.u.x=4;a.u.y=5;a.u.z=6; a.k=0; printf("%d\n",a.u.x);}

A.4 B.5C.6 D.0

答:變量a是一個共用體,執(zhí)行a.k=0語句后覆蓋前面的結果。本題答案為:D。2.4.4位域位域是一種緊縮結構體類型,允許我們用更少的空間存放所需要的數(shù)據(jù)。例如,下面的結構體類型在32位機器上將占用16個字節(jié):

structstatus {unsignedintgood; //只取0或1 unsignedintfail; //只取0或1 unsignedintbad; //只取0或1 intval; //取-100~100 };

其中成員good、fail和bad實際上都只有0和1兩個值,完全可以用一個位(bit)來表示。值val取值范圍為-100至100,也可用一個完整的整數(shù)來記錄??梢杂梦挥騺碇匦抡f明這個結構體類型,它只占用4個字節(jié)(至少4個字節(jié)或4的整數(shù)倍)?!纠恳韵鲁绦虻倪\行結果是

#include<stdio.h>main(){structst{unsigneda:10;unsignedb:12;unsignedc:2;}x;printf("%d\n",sizeof(x));}A.2 B.3C.24 D.不能通過編譯答:位段結構體變量a的總長度為24個位,即3個字節(jié)。本題答案為B。2.4.5用typedef定義自己的變量類型在C++中可以利用typedef定義自己的變量類型,其格式如下:

typedef類型說明;

其中,“類型說明”類似于變量說明,只是變量名用類型名代替了,實際上,這等于定義了一個同義詞,這種方式與創(chuàng)建一個新的類型是不同的。例如:

typedefintwidth;//定義了新類型width,它實際上是整型

typedefcharstring[10]; //定義了新類型string,它是一個字符數(shù)組使用自定義類型和使用系統(tǒng)預定義的類型一樣:

widthn; //等價于intn;stringname; //等價于charname[10];使用用戶定義類型,應注意以下幾點:

?

使用typedef只能定義各種用戶定義類型名,而不能用于定義變量。

?

用戶定義類型相當于原類型的別名。例如:

typedefchar*NAME;NAMEp;等價于:

char*p;

?

typedef并不是作簡單的字符串替換,與#define的作用不同。

?

typedef定義類型名可嵌套進行。

?利用typedef定義類型名有利于程序的移植,并增加程序的可讀性。typedef定義類型步驟:按定義變量方法先寫出定義體如inti;將變量名換成新類型名如intINTEGER;最前面加typedef如typedefintINTEGER;用新類型名定義變量如INTEGERi,j;再如:定義數(shù)組類型

inta[100];intARRAY[100];typedefintARRAY[100];ARRAYa,b,c;【例】若要說明一個類型名STP,使得定義語句STPs等價于char *s,以下選項中正確的是

。

A.typedefSTPchar*s; B.typedef*charSTP;C.typedefSTP*char; D.typedefchar*STP;

答:選項A、B和C有語法錯誤。本題答案為:D。作業(yè)練習題22.3、2.4、2.5、2.6

第3章控制語句

算法的基本控制結構有三種:順序結構、選擇結構和循環(huán)結構。為此,C++中提供了這三種控制語句,即順序控制語句、選擇控制語句和循環(huán)控制語句。3.1順序控制語句所謂順序結構,就是按照語句的順序一條一條地執(zhí)行。順序控制語句是一類簡單的語句,包括表達式語句、空語句和輸入輸出語句等。表達式語句是任何一個表達式加上一個分號。在C++程序中,有許多表達式語句。例如,以下都是表達式語句:

a=1+n*2;x=3,y=10,c=1;a>b?a++:b++;

空語句是指只有一個分號的語句(“;”)??梢?,空語句是一種不做任何操作的語句。該語句用在一些需要一條語句,但又不做任何操作的地方。3.1.1輸出

C++定義了運算符“<<”的iostream類,而“<<”就是用于處理內(nèi)部類型的輸出。使用cout輸出流可在屏幕上顯示字符和數(shù)字。C++提供了一些操縱符,可以直接嵌入到輸入/輸出語句中來實現(xiàn)I/O格式控制。注意:在使用setprecision和setw操縱符時要在程序開頭包含iomanip.h。表3.1列出了幾個常用的I/O流類庫操縱符。操縱符名含義dec數(shù)值數(shù)據(jù)采用十進制表示hex數(shù)值數(shù)據(jù)采用十六進制表示oct數(shù)值數(shù)據(jù)采用八進制表示ws提取空白符endl插入換行符,并刷新流ends插入空字符setprecision(int)設置浮點數(shù)的小數(shù)位數(shù)(包括小數(shù)點)setw(int)設置域?qū)挶?.1常用的I/O流類庫操縱符1.顯示常數(shù)使用cout可以顯示字符串和數(shù)字,并可顯示多個值。

【例】分析以下程序的執(zhí)行結果。

#include<iostream.h>voidmain(){cout<<1.2345678<<endl;cout<<1<<2<<3<<4<<"\n";cout<<"VisualC++"<<6.0<<endl;}1.23457//只顯示6個有效數(shù)字1234VisualC++62.八進制和十六進制數(shù)的輸出在某些情況下,程序需要以八進制或十六進制數(shù)的形式輸出。C++提供了簡單的實現(xiàn)方法:只要在輸出流中輸出操縱符dec(十進制)、oct(八進制)或hex(十六進制)即可。

注意:一旦使用了進制操縱符,該操縱符的作用域一直連續(xù)到程序結束,或者遇到另一個進制操縱符?!纠糠治鲆韵鲁绦虻膱?zhí)行結果。#include<iostream.h>voidmain(){intn=100;cout<<"十進制:"<<dec<<n<<endl;cout<<"八進制:"<<oct<<n<<endl;cout<<"十六進制:"<<hex<<n<<endl;}

十進制:100

八進制:144

十六進制:643.控制輸出寬度

C++提供的setw操縱符可以指定每個數(shù)值占用的寬度,即這個字符占用的最小字符長度。當用setw設置的寬度小于實際寬度時,該設置無效。

注意:setw操縱符只對緊跟著它的數(shù)值有效。如果要為多個數(shù)值設定寬度,必須多次使用setw操縱符?!纠糠治鲆韵鲁绦虻膱?zhí)行結果。#include<iostream.h>#include<iomanip.h>voidmain(){doublef=123.45;cout<<setw(10)<<1234567890<<endl;cout<<setw(10)<<f<<endl;cout<<setw(8)<<f<<endl;cout<<setw(6)<<f<<endl;cout<<setw(4)<<f<<endl;}執(zhí)行結果:4.控制輸出精度

C++提供的setprecision操縱符可以設置顯示數(shù)值的精度。

注意:一旦使用了setprecision操縱符,該操縱符的作用域一直連續(xù)到程序結束,或者遇到另一個setprecision操縱符?!纠糠治鲆韵鲁绦虻膱?zhí)行結果。#include<iostream.h>#include<iomanip.h>voidmain(){doubled=123.456789;cout<<d<<endl;cout<<setprecision(7)<<d<<endl;cout<<setprecision(8)<<d<<endl;cout<<setprecision(9)<<d<<endl;}123.457123.4568123.45679123.4567893.1.2輸入

C++提供了輸入流cin,可以利用輸入流cin讀取鍵盤輸入的字符和數(shù)字,并把它賦給指定的變量。從鍵盤上輸入的數(shù)據(jù)通過cin接收,再由提取運算符“>>”送到程序指定的變量中。因此,用戶輸入數(shù)據(jù)時要避免輸入的數(shù)據(jù)超出指定變量的值域?!纠糠治鲆韵鲁绦虻膱?zhí)行結果。#include<iostream.h>voidmain(){inti,j;cout<<"ij=";cin>>i>>j;cout<<i<<"+"<<j<<"="<<i+j<<endl;}ij=1245<Enter>12+45=573.2選擇控制語句

C++中的選擇控制語句有if語句、if...else語句、if...elseif語句和switch語句。3.2.1if語句

if語句用于在程序中有條件地執(zhí)行某一語句序列,它有如下兩種基本語法格式:

if(條件表達式)語句; if(條件表達式) {

語句序列; };【例】以下錯誤的語句為

A.if(x>y);B.if(x=y)&&(x!=0)x+=y;C.if(x!=y)scanf("%d",&x);elsescanf("%d",&y);D.if(x<y){x++;y++;}

答:if語句的條件必須包含在一個括號中。本題答案為:B。3.2.2if...else語句如果希望在“條件表達式”為真和為假時分別執(zhí)行不同的語句,則用else來引入條件表達式為假時執(zhí)行的語句序列,這就是if...else語句,它根據(jù)不同的條件分別執(zhí)行不同的語句序列,其語法形式如下:

if(條件表達式) {

語句序列1; } else {

語句序列2; }【例】為了避免在嵌套的條件語句if-else中產(chǎn)生二義性,C語言規(guī)定:else子句總是與

配對。

A.縮排位置相同的if B.同一行上的ifC.其之后最近的if D.其之前最近的if

答:本題答案為:D。【例】以下程序的輸出結果是

。#include<stdio.h>main(){intx=2,y=-1,z=2;if(x<y)if(y<0)z=0;elsez+=1;printf("%d\n",z);}A.3 B.2C.1 D.0答:x<y為假,直接執(zhí)行printf語句。本題答案為:B?!纠恳韵鲁绦蚺袛噍斎氲哪攴菔欠駷殚c年(凡是能被400整除的,或不能被100整除但能被4整除的年份為閏年)。

#include<iostream.h>voidmain(){ intyear,rem4,rem100,rem400; cout<<"輸入年份:"; cin>>year; rem400=year%400; rem100=year%100; rem4=year%4; if((rem400==0)||((rem4==0)&&(rem100!=0))) cout<<year<<"是閏年"<<endl; else cout<<year<<"不是閏年"<<endl;}程序執(zhí)行:輸入年份:2006↙2006不是閏年3.2.3if...elseif語句

if...elseif語句用于進行多重判斷,其語法形式如下:

if(條件表達式1)語句1; elseif(條件表達式2)語句2; … elseif(條件表達式n)語句n; else語句n+1;【例】以下程序?qū)⒂脩糨斎氲姆謹?shù)轉換成等級:A(≥90),B(80~89),C(70~79),D(60~69),E(<60)。

#include<iostream.h> voidmain() { floatx; cout<<"分數(shù):";cin>>x; if(x>=90)cout<<"A"<<endl; elseif(x>=80)cout<<"B"<<endl; elseif(x>=70)cout<<"C"<<endl; elseif(x>=60)cout<<"D"<<endl; elsecout<<"E"<<endl; }3.2.4switch語句

switch語句也稱為開關語句,用于有多重選擇的場合,測試某一個變量具有多個值時所執(zhí)行的動作。switch語句的語法形式為:

switch(整型表達式) { case整型常量表達式1:語句序列1; case整型常量表達式2:語句序列2; … case整型常量表達式n:語句序列n; default:語句n+1; }switch語句的執(zhí)行順序是:首先計算switch語句中“整型表達式”的值,然后在case語句中尋找值相等的整型常量表達式,并以此為入口標號,由此開始順序執(zhí)行。如果沒有找到相等的整型常量表達式,則從“default:”開始執(zhí)行。使用switch語句應注意下列問題:(1)整型表達式包括字符型或枚舉型表達式。(2)各常量表達式的值不能相同,但次序不影響執(zhí)行結果。(3)每個case分支可以有多條語句,但不必用{}。

(4)每個case語句只是一個入口標號,并不能確定執(zhí)行的終止點,因此每個case分支的最后應該加break語句,用來結束整個switch結構,否則會從入口點開始一直執(zhí)行到switch結構的結束點。(5)當若干分支需要執(zhí)行相同操作時,可以使多個case分支共用一組語句。如:

case1: case2:printf(“case1和2\n”);

注意:可以使用break退出switch語句的執(zhí)行。如:

case1:printf(“case1\n”);break; case2:printf(“case2\n”);【例】有以下程序:

#include<stdio.h>main(){inta=15,b=21,m=0;switch(a%3){case0:m++;break;case1:m++;switch(b%2){default:m++;case0:m++;break;}}printf("%d\n",m);}

程序運行后的輸出結果是

。A.1 B.2C.3 D.4

答:a%3=0,執(zhí)行m++和printf語句。本題答案為:A。3.3循環(huán)控制語句循環(huán)控制語句提供重復處理的能力,當某一特定條件為真時,循環(huán)語句就重復執(zhí)行,并且每循環(huán)一次,就會測試一下循環(huán)條件,如果為假,則循環(huán)結束,否則繼續(xù)循環(huán)。

C++支持三種格式的循環(huán)控制語句:while、do和for語句。三者可以完成類似的功能,不同的是它們控制循環(huán)的方式。3.3.1while語句

while語句的一般形式為:

while(條件表達式)語句;

當“條件表達式”的運算結果為真時,則重復執(zhí)行“語句”。每執(zhí)行一次“語句”后,就會重新計算一次“條件表達式”,當該表達式的值為假時,循環(huán)結束。【例】設有以下程序段:

intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);

則______。

A.運行程序段后輸出0 B.運行程序段后輸出1C.程序段中的控制表達式是非法的 D.程序段執(zhí)行無限次答:x=0,!x=1,!x!=0為真,執(zhí)行s+=++x,++x返回1,x=1,s=s+1=1;x=1,!x=0,!x!=0為假,不再執(zhí)行循環(huán)語句。本題答案為:B。3.3.2do語句

do語句的一般形式為:

do

語句;

while(條件表達式);do語句每一次循環(huán)執(zhí)行一次“語句”,然后計算“條件表達式”是否為真,如果是,則繼續(xù)執(zhí)行循環(huán),否則結束循環(huán)。與while語句不同的是,do循環(huán)中的“語句”至少會執(zhí)行一次,而while語句當條件第一次就不滿足時,語句一次也不會被執(zhí)行?!纠坑幸韵鲁绦蚨危?/p>

intn=0,p;do{scanf("%d",&p);n++;}while(p!=12345&&n<3);

此處do-while循環(huán)的結束條件是

。

A.p的值不等于12345并且n的值小于3B.p的值等于12345并且n的值大于等于3C.p的值不等于12345或者n的值小于3D.p的值等于12345或者n的值大于等于3

答:do-while循環(huán)的結束條件為!(p!=12345&&n<3),即p==12345||n>=3。本題答案為:D。3.3.3for語句

for語句通常用于預先知道循環(huán)次數(shù)的情況,其一般形式為:

for(初始化語句;表達式1;表達式2)語句;

其中,“初始化語句”可以是一個定義語句或表達式語句,一般用于對一組變量進行初始化或賦值?!氨磉_式1”用于控制循環(huán),當它的值為真時,循環(huán)會繼續(xù)下去,而它一旦為假,則終止循環(huán)?!氨磉_式2”在每次循環(huán)執(zhí)行完成后執(zhí)行,一般用于改變控制循環(huán)的變量?!罢Z句”在“表達式1”為真時執(zhí)行。具體來說,for循環(huán)的執(zhí)行過程為:①執(zhí)行“初始化語句”;②計算“表達式1”的值;③如果“表達式1”的值為真,先執(zhí)行后面的“語句”,再執(zhí)行“表達式2”,然后轉向步驟②;如果“表達式1”的值為假,則結束循環(huán)。【例】以下程序的輸出結果是

。#include<stdio.h>main(){inta=0,i;for(i=1;i<5;i++){switch(i) { case0: case3:a+=2; case1: case2:a+=3; default:a+=5; }}pri

溫馨提示

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

評論

0/150

提交評論