版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
C++的特點:1.支持抽象數(shù)據(jù)類型
2.多態(tài)性,一個接口,多重算法,支持早期聯(lián)編和滯后聯(lián)編
3.繼承性,保證了代碼復(fù)用,支持分類的概念
一^個C++程序由一個或多個函數(shù)構(gòu)成,并且在這些函數(shù)中只有一^個主函數(shù)
main,它是程序執(zhí)行的入口。
C++程序嚴(yán)格區(qū)分字母的大小寫。
第2章基本數(shù)據(jù)類型、運算符及表達式
【內(nèi)容提要】
數(shù)據(jù)類型
變量及常量
運算符及表達式
簡潔輸入及輸出
【重點及難點】
2.1數(shù)據(jù)類型
在C++程序里,每個名字都有一個及之相關(guān)聯(lián)的類型,這個類型確定了可以對這個名字
所指代的實體應(yīng)用什么操作,并確定這些操作將如何做出說明。
'布爾型bool
整型int
《
基本數(shù)據(jù)類型字符型char
r單精度型float
I浮點型3
L雙精度型double
空類型void
數(shù)據(jù)類型《
指針類型Type*
,【工?八非控數(shù)據(jù)類型。
P=U
2.1.1基本數(shù)據(jù)類型數(shù)組類型Type口
小邏輯型:又稱布爾型,用關(guān)鍵字hoc'士KA或false。true可以轉(zhuǎn)換成
整數(shù)1,falseEi'1fct的1民場■特q。枚舉類型enum意式的轉(zhuǎn)換成bool值:非0
的整數(shù)轉(zhuǎn)換限復(fù)合數(shù)據(jù)類型ie
▲字符型:用關(guān)鍵字char表示。取I拄聯(lián)合類型union集里的一個字符。字符型數(shù)
據(jù)通常占用1個字節(jié)的存儲空間,
4整型:用關(guān)鍵字int表示。取值:芝t結(jié)構(gòu)類型struct[數(shù)。
上浮點型:包括單精度型(float)和雙糠府則ac,,hic)的輻府型通常占用4個字節(jié)的存儲
空間,雙精度型通常占用8個字括£類類型class
.I空類型:用關(guān)鍵字主井用羊TClM種r、g后的Ini估必■右'VOid類型的對象。
圖2/C++的數(shù)據(jù)類型
在基本的數(shù)據(jù)類型前可以添加修飾符,以變更基本類型的意義。
signed:有符號。
unsigned:無符號。
unsigned和signed只用于修飾char和int,且signed修飾詞可以省略。當(dāng)用unsigned
修飾詞時,后面的類型說明符可以省略。對于有符號和無符號的整型數(shù)據(jù),它們所占的存儲
空間的大小相同,但它們的表數(shù)范圍卻不相同(對字符型意義相同)。
short:短型。只用于修飾int,且用short修飾時,int可以省略。
long:長型。只用于修飾int和double。當(dāng)用long修飾int時,int可以省略。
數(shù)據(jù)類型的描述確定了其內(nèi)存所占空間的大小,也確定了其表示范圍。用sizeof(數(shù)據(jù)
類型)可以確定某數(shù)據(jù)類型的字節(jié)長度。請讀者查看在你所用的機器上,下面類型的最大值
和最小值是什么:char、short,int、long、float、double、longdouble、unsigned?
2.1.2復(fù)合數(shù)據(jù)類型
▲數(shù)組:由具有相同數(shù)據(jù)類型的元素組成的集合。
-結(jié)構(gòu)體:由不同的數(shù)據(jù)類型構(gòu)成的一種混合的數(shù)據(jù)結(jié)構(gòu),構(gòu)成結(jié)構(gòu)體的成員的數(shù)據(jù)類型
一般不同,并且在內(nèi)存中分別占據(jù)不同的存儲單元。
▲共用體:是類似于結(jié)構(gòu)體的一種構(gòu)造類型,及結(jié)構(gòu)體不同的是構(gòu)成共同體的數(shù)據(jù)成員共
用同一段內(nèi)存單元。
▲枚舉:將變量的值一一列舉出來,每個枚舉成員(枚舉符)都及一個整數(shù)相對應(yīng)。按默
認(rèn)方式,枚舉符所貝武的值從0起先遞增。枚舉的值也可以用整型的表達式賦值進行初始
化。假如某個枚舉中全部枚舉符的值均非負,該枚舉的表示范圍是[0:2K-1],其中2K
是能使全部枚舉符位于此范圍內(nèi)的最小的2的幕;假如存在負的枚舉符值,該枚舉的取
值范圍就是[-2%2K-1]?
上指針類型:指針類型變量用于存儲另一變量的地址,而不能用來存放基本類型的數(shù)據(jù)。
它在內(nèi)存中占據(jù)一個存儲單元。
4類類型:類是體現(xiàn)面對對象程序設(shè)計的最基本特征,也是體現(xiàn)C++及C最大的不同之處。
類是一個數(shù)據(jù)類型,它定義的是一種對象類型,由數(shù)據(jù)和方法組成,描述了屬于該類型
的全部對象的性質(zhì)。
2.2變量及常量
2.1.1變量:指在運行期間其值可以變更的量。
變量有三個特征:變量類型、變量名、變量值。
▲命名:遵循標(biāo)識符命名規(guī)則。
標(biāo)識符是對實體定義的一種定義符,用來標(biāo)識用戶定義的常量名、變量名、函數(shù)名、文
件名、數(shù)組名、和數(shù)據(jù)類型名和程序名等。只能由字母、數(shù)字和下劃線組成,且以字母或下
劃線開頭。命名時留意以下幾點:
1.C++的關(guān)鍵字不能用作用戶自定義的實體名;
2.以下劃線開頭的名字是保留給實現(xiàn)或者運行環(huán)境,用于特殊目的,在應(yīng)用程序里不
要接受這樣的名字;
3.大寫及小寫字母是區(qū)分的;
4.見名知義。
5.維持統(tǒng)一的命名風(fēng)格。
上定義:
格式:〈類型名X變量名>[[=(表達式>],…]
J.typedef:為某種類型聲明一個新名字,而不是定義一種新類型。
格式:typedef(已有類型名>(新類型名)
2.1.2常量:程序執(zhí)行期間其值不變的量。主要有下列幾類常量。
J布爾常量
4.字符常量
用單引號括起的一個字符。在內(nèi)存中,字符數(shù)據(jù)以ASCII碼存儲,如字符'a'的ASCII
碼為97。以轉(zhuǎn)義字符'\'起先的字符常量后跟不同的字符表示不同的特殊字符。
小字符串常量
由一對雙引號括起來的零個或多個字符序列。
字符串可以寫在多行上,不過在這種狀況下必需用反斜線'V表示下一行字符是這一
行字符的持續(xù)。
字符串常量事實上是一個字符數(shù)組,組成數(shù)組的字符除顯示給出的外,還包括字符結(jié)尾
處標(biāo)識字符串結(jié)束的符號'\0',所以字符串“abc”事實上包含4個字符:‘a(chǎn)'、'b'、'c'
和'\0'。
留意字符常量及字符串常量在表示、存儲、運算方面的區(qū)分。
小整型常量
可以用十進制、八進制或十六進制表示。
十進制常量:一般占一個機器字長,是一個帶正負號的常數(shù)(默認(rèn)狀況下為正數(shù))。
八進制常量:由數(shù)字0開頭,其后由若干0-7的數(shù)字組成,如0378,0123等。
十六進制常量:以O(shè)x或0X開頭,其后由若干0-9的數(shù)字及A-F(或小寫a-f)的字母
組成,如0x123,0x3ab?
4浮點型常量
只能以十進制形式表示。共有兩種表示形式:小數(shù)表示法和指數(shù)表示法。
如:11.3-..2、2.3el0s~2.3E—1等。
▲枚舉常量
枚舉聲明形式:enum〈枚舉名>{〈枚舉符表>};
枚舉符可以有兩種形式:
〈枚舉符名〉/〈枚舉符名>=<整形常量〉
尊符號常量
定義形式:const〈類型名〉〈符號常量名>=<表達式",…];
口表示可選項,以下都接受這種標(biāo)記。
定義的符號常量必需初始化。一個符號常量可看作是一個只讀變量,由const定義的常
量的值不行以變更。const的最常見的用途是作為數(shù)組的界和作為分狀況標(biāo)號。
2.3運算符及表達式
在程序中,表達式是計算求值的基本單位,它是由運算符和運算數(shù)組成的式子。運算符
是表示進行某種運算的符號。運算數(shù)包含常量、變量和函數(shù)等。C++語言的運算符按其在表
達式中及運算對象的關(guān)系(連接運算對象的個數(shù))可分為:單目運算、雙目運算、三目運算。
C++運算符一覽表
名稱運算符舉例優(yōu)先級結(jié)合性
作用域區(qū)分符::x1左結(jié)合性
重量運算符.->p.next,p->next2
函數(shù)調(diào)用運算符()fac()
下標(biāo)運算符[]p[io]
后增量、后減量++——p++2右結(jié)合性
前增量、前減量++——-p3
求字節(jié)運算符sizeofsizeof(int)3
正號、負號+--l,+3
指針運算符*和&*p,&x
支配、回收空間運算符Newdeletep=newint;
deletep;
強制類型轉(zhuǎn)換運算符(type)(int)x
算術(shù)運算符*/%3%5(取模)4左結(jié)合性
+-5
左移、右移??8?3,8?36
關(guān)系運算符?=>>=3<57
==|=3!=58
位運算符&(按位“及”)1&29
X按位“異或”)1"210
1(按位“或”)1|211
邏輯運算符&&x&&y12
IIx||y13
J!x3
條件運算符?:a>b?x:y14右結(jié)合性
賦值運算符=及其擴展(+=a=215
一二*二/-%-等)a+=2
逗號運算符a=l,b=2,c=316左結(jié)合性
表2.1C++運算符一覽表
2.4簡潔輸入及輸出
在C++中,I/O運用了流的概念-字符(或字節(jié))流。每一個I/O設(shè)備傳送和接收一系列的字
節(jié),稱之為流。輸入操作可以看成是字節(jié)從一個設(shè)備流入內(nèi)存,而輸出操作可以看成是字節(jié)
從內(nèi)存流出到一個設(shè)備。要運用C++標(biāo)準(zhǔn)的I/O流庫的功能,須要包括兩個頭文件:iostream.h
用于供應(yīng)基本的輸入輸出功能,iomanip.h用于供應(yīng)格式化的功能。
2.4.11/。的書寫格式(基本數(shù)據(jù)類型的輸入輸出)
頭文件iostream.h包含有cin和cout對象,對應(yīng)于標(biāo)準(zhǔn)輸入流和標(biāo)準(zhǔn)輸出流。流讀取運算符
“>>”表示流的輸入,可以從cin輸入流中讀取字符;流插入運算符“<<”表示流的輸出,
可以向cout輸出流插入字符。
如:cout?whelloworld.z,?endl;〃輸出helloworld,然后換行
inti,j;
cin?i?j;〃輸入i.j的值
2.4.2運用限制符(基本數(shù)據(jù)類型輸入輸出的格式限制)
C++中供應(yīng)了大量的用于執(zhí)行格式化輸入輸出的格式限制符,詳細名稱及作用請參看表2.2。
限制符描述所在頭文
件
dec置基數(shù)為10iostream.h
hex置基數(shù)為16
oct置基數(shù)為8
setfill(c)設(shè)填充字符為c
setprecision(n)設(shè)顯示小數(shù)精度為n位
setw(n)設(shè)域?qū)挒閚個字符
setiosflags(ios::fixed)固定的浮點顯示iomanip.h
setiosflags(ios::scientific)指數(shù)表示
setiosflags(ios::left)左對齊
setiosflags(ios::right)右對齊
setiosflags(ios::skipws)忽視前導(dǎo)空白
setiosflags(ios:uppercase)16進制數(shù)大寫輸出
setiosflags(ios::lowercase)16進制數(shù)小寫輸出
setiosflags(ios::showpoin)顯示小數(shù)點
setiosflags(ios::showpos)顯示符號(正負號)
setiosflags(ios::showbase)指定在數(shù)值前輸出進制(0表示八進制,Ox或
0X表示十六進制)
表2.2I/O流的常用限制符
【典型例題】
例題1:對以下各種數(shù)據(jù)類型比較所占用存儲空間的大?。?/p>
(1)char、int、shortint、longint、double>longdouble.
(2)signedint、unsignedint.
解答:
(1)本題主要考查的學(xué)問點是各種類型所占用的存儲空間的大小以及相應(yīng)的表數(shù)范圍。在
32位計算機中,char占1個字節(jié),shortint占2個字節(jié),int占4個字節(jié),longint占
4個字節(jié),double占8個字節(jié)。sizeof運算符用于求解某種數(shù)據(jù)類型的大小。short和long
在修飾整型時可以省略int?答案為:
1=sizeof(char)<sizeof(short)<sizeof(int)<sizeof(Iona)<sizeof(double)
(2)對于一種確定的數(shù)據(jù)類型有符號數(shù)及無符號數(shù)所占的存儲空間相同,表數(shù)范圍不同。修
飾符signed和unsigned只能用于修飾字符型和整型。答案為:
例題2:下列哪一項能用作用戶自定義的標(biāo)識符:
(a)const(b)2var(c)myname(d)var2
解答:
本題主要考查標(biāo)識符命名規(guī)則。C++關(guān)鍵字不能用于用戶自定義標(biāo)識符,(a)中const是關(guān)鍵
字;第一個字符必需是字母或下劃線,(b)中2var是以數(shù)字開頭;不能含有空格,(c)中my
name含有空格。答案為:d。
例題3:指出下列程序中的錯誤:。
intmainO
(
constintx;
x=100;
return0;
)
解答:
本題主要考查對符號常量的理解。const定義的符號常量必需初始化,由const定義的常量
的值不行以變更。所以本題有兩處錯誤:第一、沒有對符號常量x進行初始化;其次、給符
號常量賦值是錯誤的。
例題4:給下列表達式加上全部的括號(假設(shè)所用變量均已定義):
(1)a+b-c-%b
X
21
7a>b?b:c>d?a:c<a?c:d
z3
\la+=a+b|e
zX
(41
x7a&b+c++
/\
f51
xi7-a&&b~c
/
l6
xk=b=c=a
解答:
本題主要考查表達式中運算符的優(yōu)先級及結(jié)合性。請參閱表2.1。為了避開出錯,建議讀者
在書寫表達式時完整書寫括號。
(1)答案為:(a+b)-((c—)燦)
(2)答案為:a>b?b:(c>d?a:(c<a?c:d))
(3)答案為:a+=((a+b)||e)
(4)答案為:a&(b+(c++))
(5)答案為:(-a)&&(b-c)
(6)答案為:k=(b=(c=a))
例題5:請依據(jù)下列題意寫出相應(yīng)的表達式。
(1)有a、b、c、max四個變量a、b、c中的最大值,并將結(jié)果放入max中。
(2)年齡在1到100之間(包含1和100,年齡用變量age表示)。
(3)公式:(a+b)h。
(4)推斷一年是否為閏年,年用year表示。滿足下列兩個條件之一即為閏年:①
能被4整除但不能被100整除②能被400整除。
解答:
(1)主要考查對條件表達式的理解和書寫。答案為:max=a>b?(a>c?a:c):(b>c?b:c)?
(2)主要考查對邏輯表達式的理解和書寫?答案為:"=age&&age<=100。
(3)主要考查如何在計算機中表示一個數(shù)學(xué)公式。答案為:(a+b)*h/2。
(4)主要考查對邏輯表達式的理解和書寫。答案為:
(year%4=0&&year%100!=0)||(year%400==0)o
例題6:下列選項中兩個表達式的運算結(jié)果相同的是()。
(a)3/2和3.0/2.0(b)3/2和3.0/2(c)3/2.0和3.0/2.0(d)3/2.0和3/2
解答:
本題考查數(shù)據(jù)類型及表達式中數(shù)據(jù)類型的隱式轉(zhuǎn)換。3/2中兩個操作數(shù)都為整型,運算結(jié)果
仍為整型即1;3.0/2和3/2.0中一個操作數(shù)為整型另一個為浮點型,運算時整型隱式轉(zhuǎn)換
為浮點型,運算結(jié)果也為浮點型即1.5;3.0/2.0兩個操作數(shù)均為浮點型,結(jié)果也為浮點型
即1.5,答案為:(c)o
例題7:
下列程序的運行結(jié)果為:。
#include<iostream.h>
voidmain()
(
inta=2,b=4,i=0,x;
x=a>b&&++i;
cout<<,zx:/,?x?endl;
cout?*i:z/?i?endl;
}
解答:
本題主要考查“短路”表達式的運算。對于表達式中的“及”運算而言,只要有一個操作數(shù)
為假,結(jié)果為假。所以當(dāng)?shù)谝粋€操作數(shù)為假時,不在求解其它操作數(shù)。對于表達式中的“或”
運算而言,只要有一個操作數(shù)為真,則結(jié)果為真。所以當(dāng)?shù)谝粋€操作數(shù)為真時,不在求解其
它操作數(shù)。本題中a>b為假,所以表達式a>b&&++i為假,而++i沒有執(zhí)行。故i為0。答案
為:x:0
i:0
例題8:求解下列各表達式的值(其中x的值為100)?
(1)(a=l,b=2,c=3)
(2)113?5
(3)'a'+3&&!0%l
(4)x%2?"odd"even"
解答:
(ir逗號表達式的值是其最終一個表達式的值。答案為:3。
(2)<<運算符的優(yōu)先級高于|運算符,所以先算3<<5結(jié)果為96(二進制1100000),然后及1
做按位及運算則結(jié)果為97(二進制1100001)。答案為:97o
(3)參及本題的運算符,按優(yōu)先級由高到低依次是:!運算符、算術(shù)運算符、邏輯運算符。
'a+3時字符型首先隱式轉(zhuǎn)換成整型然后相加結(jié)果為100,!0%1即1%1結(jié)果為0,100&&0
結(jié)果為0。答案為:0o
(4)算術(shù)表達式的優(yōu)先級高于條件表達式,所以先算x%2結(jié)果為0,0?”odd":”even"結(jié)
果為“even”。本題完成推斷一個數(shù)是奇數(shù)還是偶數(shù),若該數(shù)為奇數(shù),則表達式的值為"
odd",為偶數(shù),則表達式的值為“even"。答案為:“odd”。
例題9:下列程序運行結(jié)果為:。
#include<iostream.h>
#include<iomanip.h>
voidmain()
(
inta=23;
doubleb=23.123456789;
cout<<a?,\t"<<b<<endl;
cout<<setprecision(0)<<b<<endl;
cout<<setiosflags(ios::fixed)<<setprecision(7)?b<<endl;
cout<<setiosflags(ios::scientific)<<b<<endl;
cout?setprecision(6);
cout<<setiosflags(ios::showbase);
cout<<hex<<a<<,\t><<a<<endl;
cout<<dec;
cout?setw(10)?setfi11(**')<<setiosflags(ios::left)?a<<endl;
cout?setfillC');
)
解答:
本題主要考查對格式化輸入輸出的駕馭。
①本題主函數(shù)中第三行輸出a,b/為轉(zhuǎn)義字符,其含義是跳過一個制表位。不設(shè)置輸
出寬度時,默認(rèn)輸出6位有效數(shù)字,超出部分四舍五入。所以該行輸出為:2323.1235。
②setprecision(n)設(shè)置顯示精度,最少顯示一位有效數(shù)字。假如不重新設(shè)置,則其保持效
力,所以運用完后要還原為6位默認(rèn)值。第四行中設(shè)置setprecision(0)及setprecision(l)
作用相同,結(jié)果顯示一位有效數(shù)字即為:2e+001o
③setiosflags(ios::fixed)為固定的浮點顯示,其后跟setprecision(n)表示小數(shù)點后顯
示精度為n。所以第五行輸出結(jié)果為:23.1234568。
④setiosflags(ios::scientific)為指數(shù)顯示,當(dāng)其整數(shù)部分寬度大于設(shè)置的顯示精度(默
認(rèn)為6位)時,以指數(shù)形式顯示結(jié)果。否則依據(jù)設(shè)置的(或默認(rèn)的)顯示精度顯示n位有效
數(shù)字。所以第六行輸出結(jié)果為:23.12346o
⑤setiosflags(ios::showbase)為指定在數(shù)值前輸出進制。hex置基數(shù)為16,且該操作保
持效力,所以運用完后應(yīng)當(dāng)復(fù)原為默認(rèn)值10進制。第九行輸出結(jié)果為:0x170xl7o
⑥setw(n)設(shè)域?qū)挒閚個字符,setfill(c)設(shè)填充字符為C,setiosflags(ios::left)為左
對齊。第H一行輸出結(jié)果為:23********。
答案為:
2323.1235
2e+001
23.1234568
23.12346
0x170x17
23********
【習(xí)題】
一、選擇題
1.下列數(shù)據(jù)類型不是C++語言基本數(shù)據(jù)類型的是()。
(a)字符型(b)整型(c)浮點型(d)數(shù)組
一、下列字符列中,可作為C++語言程序自定義標(biāo)識符是選擇題
2.
(a)x(b)-var(c)new(d)3i
3.下列數(shù)中哪一個是8進制數(shù)()。
(a)Oxlg(b)010(c)080(d)Olb
4.已知a=l,b=2,c=3,則表達是++a||-b&&++c的值為()。
(a)0(b)l(c)2(d)3
5.下列表達式選項中,()是正確的。
(a)++(a++)(b)a++b(c)a+++b(d)a++++b
6.已知枚舉類型定義語句為:()。
enumcolor(RED,BLUE,PINK=6,YELLOW,GREEN,PURPLE=15};
則下列敘述中錯誤的是()。
(a)枚舉常量RED的值為1(b)枚舉常量BLUE的值為1
(c)枚舉常量YELLOW的值為7(d)枚舉常量PURPLE的值為15
7.下列程序的運行結(jié)果正確的是()。
#include<iostream.h>
#include<iomanip.h>
voidmainO
(
constdoublepi=3.1415926;
cout?setprecision(3)?pi?endl
?setiosflags(ios::fixed)?pi?endl
?setprecision(8)?setfillCX<setw(12)?pi?endl;
return;
)
(a)3.142
3.142
**3.14159260
(b)3.14
3.142
**3.14159260
(c)3.14
3.14
3.14159260**
(d)3.14
3.142
***3.1415926
8.若intx=3,y=5;則表達式x&y++%3的值為()。
(a)0(b)l(c)2(d)3
9.下列常量正確的是()o
(a)whello(b)1FL(c)3.14UL(d)1.8E-3
WorldM
10.若charx=97;,則變量x包含幾個字符()。
(a)l個(b)2個(c)4個(d)8個
—、填空題
1.C++語言標(biāo)示符是以字母或__________開頭的,由字母、數(shù)字、下劃線組成。
2.在C++語言中,char型數(shù)據(jù)在內(nèi)存中的存儲形式是。
3.在內(nèi)存中,存儲字符'x'占用1個字節(jié),存儲字符串“x”要占用個字節(jié)。
4.符號常量可以用宏定義define和表示。
5.轉(zhuǎn)義字符序列中的首字符是o
6.空字符串的長度是
7.表達式cout<<'\n';還可以表示為。
8.若要為unsignedint定義一個新的名字UINT應(yīng)接受的語句是。
9.以下程序不借助第3個變量實現(xiàn)a,b值得交換,請?zhí)羁铡?/p>
#include<iostream.h>
Voidmain()
(
inta,b;
cout<<“輸入a,b:”;
cin?a?b;
a=___a+b;
b=_____a-b
a=(a-b)/2;
cout<<a<<,\t'?b<<endl;
)
10.大多數(shù)C++程序都要包含頭文件。該文件中包含了全部輸入/輸出流操作
所需的基本信息。當(dāng)運用帶參數(shù)的操作時,程序中必需包含頭文件。
三、編程題
1.編寫一個程序,輸入一個三位數(shù),分別輸出該數(shù)的百位、十位和個位。
2.編寫一個程序打印出各種基本數(shù)據(jù)類型、幾個你自己定義的復(fù)合數(shù)據(jù)類型的大小。
運用sizeof運算符。
【參考答案】
一、選擇題
1.d
2.a
3.b
4.b
5.c
6.a
7.b
8.c
9.d
10.a
二、填空題
1.下劃線
2.ASCII
3.2
4.const
5.\
6.0
7.cout?endl;
8.typedefunsignedintUINT;
9.a+ba-ba-b
10.iomanip.hiostream.h
三、編程題
#include<iostream.h>
voidmain()
intnum,varl,var2,var3;
coutvv"請輸入一個三位數(shù):"?endl;
cin?num;
if(num>999||num<100)〃用于檢查輸入數(shù)據(jù)的合法性
cout<<"您的輸入有誤!”《endl;
else
(
varl=num/100;
var2=(num-varl*100)/10;
var3=num%10;
cout?”百位數(shù)為:"?varl?endl
十位數(shù)為:"<<var2vvendl
v<”個位數(shù)為:H?var3?endl;
2.
#include<iostream.h>
#include<iomanip.h>
voidmain()
(
intarray[10];
enummonth{Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec);
char*p;
cout?nThesizeofcharis:H?sizeof(char)?endl
?uThesizeofintis:"?sizeof(int)?endl
?uThesizeofshortintis:u?sizeof(shortint)?endl
?"Thesizeoflongintis:"?sizeof(longint)?endl
?uThesizeoffloatis:M?sizeof(float)?endl
?uThesizeofdoubleis:n?sizeof(double)?endl
?uThesizeoflongdoubleis:"?sizeof(longdouble)?endl
?uThesizeofsignedintis:H?sizeof(int)?endl
?°Thesizeofunsignedintis:M?sizeof(unsigned)?endl
?"Thesizeofarrayis:n?sizeof(array)?endl
?"Thesizeofmonthis:H?sizeof(month)?endl
?uThesizeofpis:"?sizeof(p)?endl;
)
第3章C++程序的流程限制
【內(nèi)容提要】
依次限制語句
選擇限制語句
循環(huán)限制語句
跳轉(zhuǎn)語句
【重點及難點】
3.1依次限制語句
指依據(jù)語句在程序中出現(xiàn)的先后次序一條一條的順次執(zhí)行。包含聲明語句,表達式語句,
輸入輸出語句等。
3.1.1表達式語句
任何一個表達式(上一章中給出了詳細介紹)后面加上一個分號就構(gòu)成了表達式語
句(沒有分號的不是語句)。常見的表達式語句有以下兒種:空語句、賦值語句、函數(shù)調(diào)用
語句等。
1空語句:指只有一個分號而沒有表達式的語句,它不作任何操作和運算。
格式為:;
空語句被用在程序的語法上要求一條語句而邏輯上卻不須要的時候。
小函數(shù)調(diào)用語句:是由函數(shù)調(diào)用表達式加一個語句結(jié)束標(biāo)記(分號“;”)構(gòu)成的語句。
函數(shù)的定義和運用請參見第五章中的詳細介紹。
3.1.2輸入/輸出語句
C++程序沒有輸入/輸出語句,它的輸入/輸出功能由函數(shù)(scanf、printf)或流限
制來實現(xiàn)。printf和scanf是標(biāo)準(zhǔn)的輸入輸出函數(shù),主要在C程序設(shè)計中運用,其聲明包
含在頭文件stdio.h中。在C++中,I/O流完全取代了它們,運用I/O流輸入輸出時,必需
包含頭文件iostream,h。
從鍵盤輸入語句格式為:cin>>表達式1[>>表達式2?-];
向屏幕輸出語句格式為:cout〈〈表達式1[<〈表達式2〈O-];
留意:連續(xù)輸入多項數(shù)據(jù)時應(yīng)鍵入空白字符(包括空格鍵、回車鍵和Tab鍵)將相
鄰的兩項數(shù)據(jù)分開。而連續(xù)輸出時;cout不會在相鄰數(shù)據(jù)項間加分隔符,為了增加顯示效
果,用戶可通過限制符自定義顯示寬度,換行等(部分限制符在iomanip.h頭文件中聲明)。
3.1.3復(fù)合語句
C++語言允許把一組語句用一對花括號括起來,構(gòu)成一個復(fù)合語句。復(fù)合語句被視為
一個獨立的單元它可以出現(xiàn)在程序中任何單個語句可以出現(xiàn)的地方復(fù)合語句不須要用分號
作為結(jié)束。留意空語句;和空復(fù)合語句{}是等價的。
3.2選擇限制語句
針對于不同狀況接受不同的處理方式的問題,用選擇結(jié)構(gòu)來實現(xiàn)。選擇語句包含:
if語句和switch語句。
3.2.1if語句
Qif語句:
格式:if(〈條件表達式〉)〈語句〉
作用:當(dāng)〈條件表達式>為真時,執(zhí)行〈語句〉,否則干脆執(zhí)行if語句后邊的語句。
這里的〈語句》可以是一條語句,也可以是幾條語句,但對于多條語句的狀況必需用{}
將幾條語句括起來構(gòu)成復(fù)合語句,在if語句中當(dāng)做一個整體處理。
1if…else語句:
格式:if(〈條件表達式》)
〈語句1>
else
(語句2>
作用:當(dāng)〈條件表達式>為真時,執(zhí)行〈語句1>;當(dāng)〈條件表達式>為假時,執(zhí)行〈語句2>。
這里〈語句1》和〈語句2>可以是一條語句也可以是復(fù)合語句。
說明:
①if語句有時可以用條件表達式替代。
②if語句支持多種形式的嵌套運用,但一般嵌套層次不超過三層。另外約定else總是
及它上邊最近的一個if配對。為了防止語法或邏輯錯誤的發(fā)生,建議在較困難的情形中運
用花括號區(qū)分。
3.2.2switch語句
格式:switch(〈表達式>){
case〈常量表達式1>:<語句序列1>
case〈常量表達式2>:(語句序列2>
case〈常量表達式n>:<語句序列n>
[default:〈語句序列n+l>]
)
作用:計算〈表達式》推斷它及哪個〈常量表達式>匹配,執(zhí)行第一個相匹配的〈常量表
達式》后的語句,直到遇到break轉(zhuǎn)去執(zhí)行switch語句以外的語句;假如均不匹配則執(zhí)行
default后定義的語句(在default省略的情形中,干脆執(zhí)行switch語句以外的語句)。
說明:
①switch語句中的〈表達式》的值只能是整型、字符型或枚舉型表達式。
②switch語句中,case和其后的〈常量表達式>間必需有空格否則會產(chǎn)生邏輯錯誤。case
后的〈常量表達式》的值是互不相同的,且它的類型及switch后的〈表達式》的類型一樣。
③通常狀況下,每個case分支語句結(jié)束后都要加一個break語句來結(jié)束switch語句。
但在要表示一個范圍,或描述一類對象時(如A,B,C都屬于合格,D屬于不合格)有可能幾
條case分支語句后才有一個break語句。
?switch語句及嵌套的if語句都可以用于處理多分支選擇的問題。
3.3循環(huán)限制語句
對于同一個語句或同一組語句序列須要重復(fù)多次,則接受循環(huán)結(jié)構(gòu)。C++供應(yīng)了三種循
環(huán)限制語句:while語句,do…while語句,for語句。
3.3.1while語句
格式:while(〈條件表達式〉)
〈語句〉
作用:推斷〈條件表達式》是否為真,若為真則執(zhí)行〈語句〉,然后重復(fù)推斷,直到〈條件
表達式》為假時跳出while循環(huán)執(zhí)行其后的語句。
說明:
①這里的(語句>可以是單條語句也可以是復(fù)合語句。
②當(dāng)〈條件表達式>在循環(huán)起先就不滿足,則不執(zhí)行while循環(huán)也就是說while循環(huán)有可
能一次都不執(zhí)行。
3.3.2do…while語句
格式:do{
〈語句〉
}while(〈條件表達式〉);
作用:當(dāng)流程到達do后,立刻執(zhí)行循環(huán)體語句,然后再對條件表達式進行推斷。若
(條件表達式》的值為真,則重復(fù)執(zhí)行循環(huán)體語句,直到〈條件表達式>為假時退出循環(huán),執(zhí)行
do…while循環(huán)后的語句。
說明:這種循環(huán)中(語句>至少執(zhí)行一次,當(dāng)條件在循環(huán)起先時就不滿足時這種做法
是緊急的,所以應(yīng)盡量運用while語句而避開運用do…while語句。
3.3.3for語句
格式:for(〈表達式1>;〈表達式2>;〈表達式3>)
〈語句〉
作用:〈表達式i>可以稱W初始化表達式,一般用于對循環(huán)變量進行初始化或賦初值;
〈表達式2>可以稱為條件表達式,當(dāng)它的推斷條件為真時,就執(zhí)行循環(huán)體〈語句),否則終止
循環(huán),退出for循環(huán);〈表達式3>可以稱為修正表達式,一般用于在每次循環(huán)體執(zhí)行之后,
對循環(huán)變量進行修改操作。
說明:
①這里的《語句》可以是一條語句也可以是復(fù)合語句。
②for循環(huán)中三個表達式可能省略一個、兩個或三個都省略,但它們之間分號在三種狀
況下都不行以省略。
3.4跳轉(zhuǎn)語句
3.4.1break語句
格式:break;
作用:結(jié)束當(dāng)前正在執(zhí)行的循環(huán)(for、while、do…while)或多路分支(switch)
程序結(jié)構(gòu),轉(zhuǎn)而執(zhí)行這些結(jié)構(gòu)后面的語句。
說明:在循環(huán)結(jié)構(gòu)中運用時,假如有多層循環(huán),只跳出其所在的最近的循環(huán)層。
3.4.2continue語句
格式:continue;
作用:結(jié)束當(dāng)前正在執(zhí)行的這一次循環(huán)(for、while、do…while),接著執(zhí)行下一
次循環(huán)。即跳過循環(huán)體中尚未執(zhí)行的語句,接著進行下一次是否執(zhí)行循環(huán)語句的判定。
【典型例題】
例題1:下列程序的運行結(jié)果為o
#include<iostream.h>
voidmain()
(
charc='@';
if(c>='A'&&c<='Z')cout<<“是大寫字母
elseif(c>='a'&&c<='z')cout<<”是小寫字母”;
elsecout<<”是其它字符“;
}
解答:
本題主要考查if語句的嵌套運用方法。首先推斷字符變量c是否滿足c>='A'&&c<='Z',假
如滿足則輸出“是大寫字母否則推斷c是否滿足c>=N&&c<=2,假如滿足則輸出“是小
寫字母“否則輸出"是其它字符二else總是及離它最近的前一個if配對。
答案為:是其它字符。
例題2:己定義:chargrade;,若成果為A、B、C時輸出合格,成果為D時輸出不合格,
其他狀況提示重新輸入。要完成以上功能,則下列switch語句正確的是()。
(a)switch(grade){
case'A':
case'B':
caseC:coutvv”合格”;break;
case'D':cout<<"不合格";break;
default:cout<<”請重新輸入:”;
)
(b)switch(grade){
case'A':
case'B':
caseC:coutvv”合格";
case儀cout<<"不合格";
default:cout<<”請重新輸入:”;
)
(c)switch(grade){
case'A'JB','C':cout<〈”合格〃;break;
case'D':cout<<“不合格";break;
default:cout<<〃請重新輸入:”;
(d)switch(grade){
caseA:
caseB:
caseC:cout<<"合格”;break;
caseD:cout<<"不合格";break;
default:coutcc”請重新輸入:
)
解答:
本題主要考查switch語句的運用。在switch語句執(zhí)行過程中,找到第一個相匹配的表達式
后,轉(zhuǎn)去執(zhí)行該case后的語句,直到遇到break語句后跳出switch語句執(zhí)行其后的語句。
對于選項b,若grade的值為A則執(zhí)行結(jié)果為“合格不合格請重新輸入”,不滿足本題的要
求;switch語句多個case分支不能簡寫為多個表達式之間用逗號隔開的一個case分支,選
項c錯誤;case后的表達式只能是整型、字符型或枚舉型常量表達式,選項d中case后的
A、B、C、D是變量。答案為:a。
例題3:找出并改正下列程序段中的錯誤:
(1)if(x>0);-------------------①
y=x+l;--------------------②
else;------------------------③
y=x-l;--------------------④
(2)While(i)------------------------------①
{cout?i?endl;---------------②
i-;}-------------------------------③
(3)inti=l,sum;-----------①
while(i<=100)---------②
{sum+=i;----------------(3)
i++;}--------------------④
(4)inti=l,sum=0;--------------------①
do{------------------------------------②
sum+=i;--------------------------③
i++;}while(i<=100)---------④
解答:
本題中包含了初學(xué)者在編程中簡潔犯的一些錯誤,提示讀者留意。
(1)本題考查對if語句的語法結(jié)構(gòu)的駕馭。本題的錯誤在于在if和else后不應(yīng)加分號。答
案為:將①、③句末的分號去掉。
(2)C++是大小寫敏感的語言。答案為:將①中While改為while。
(3)本題目的是完成1到100求和,結(jié)果放在sum中,但是sum在參及運算前應(yīng)當(dāng)首先對其
賦值。答案為:將①改為inti=l,sum=0;
(4)本題主要考查對do…while的語法結(jié)構(gòu)的駕馭以及及while結(jié)構(gòu)進行對比區(qū)分兩者在作
用和語法上的不同。答案為:將第④行while后加分號即while(i<=100);
例題4:循環(huán)語句for(inti=0;i<=5&&!i;i++)cout?i<<endl;執(zhí)行循環(huán)次數(shù)為()。
(a)1次(b)3次(c)5次(d)6次
解答:
本題考查對for循環(huán)的理解以及表達式運算。執(zhí)行for循環(huán)i的初值為0,第一次循環(huán)時表達
式0<=5&&!0結(jié)果為1所以執(zhí)行循環(huán)體輸出0;然后i自加為1,計算表達式1<=5&&!1結(jié)果
為0,所以退出循環(huán)。答案為:a。
例題5:程序段:
inti,sum=0;
for(i=l;i<=100;sum+=i,i++);
及上邊程序段不等價的是()。
(a)intsum=O,i=l;
do{
sum+=i++;
}while(i<=100);
(b)inti=l,sum=O;
while(i<=100)
(
sum+=i++;
)
(c)inti=l,sum=O;
while(1)
(
if(i>100)
break;
sum+=i++;
)
(d)inti,sum=O;
for(i=l;i<=100;i++,sum+=i);
解答:
本著主要考查對各種循環(huán)結(jié)構(gòu)的以及它們之間轉(zhuǎn)換關(guān)系的理解。本
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工個人總結(jié)怎么寫2021
- 指導(dǎo)培養(yǎng)教師工作計劃
- 2022年高中工作計劃
- 2025年柔性自動化裝備項目合作計劃書
- 自行車車形容2篇
- 2025年耐高溫濾料合作協(xié)議書
- 入職競業(yè)協(xié)議書(2篇)
- 2025年高純石英纖維正交三向織物項目發(fā)展計劃
- 2025年青霉素類抗菌藥物合作協(xié)議書
- 地下車庫租賃協(xié)議
- 國家開放大學(xué)《個人理財》形考任務(wù)1-4
- 【瑞幸咖啡財務(wù)分析報告(附財務(wù)報表)5300字(論文)】
- 過敏性鼻炎-疾病研究白皮書
- 三軸水泥攪拌樁施工質(zhì)量措施
- 幼兒園學(xué)前教育五以內(nèi)的數(shù)字比大小練習(xí)題
- 垃圾自動分揀機構(gòu)plc控制畢業(yè)論文
- 中國省市行政代碼表
- JTG D70-2-2014 公路隧道設(shè)計規(guī)范 第二冊 交通工程與附屬設(shè)施正式版
- 溝槽式連接管道工程技術(shù)規(guī)程
- 廈門市2023-2024學(xué)年度初中語文初一上學(xué)期語文期末質(zhì)量檢測
- 廣東省文物保護單位“四有”工作規(guī)范
評論
0/150
提交評論