成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

程序員之程序設計知識點三

企業(yè)動態(tài)
順序結(jié)構(gòu)用來描述一個計算或操作序列,表示從序列的第一個計算開始,順序執(zhí)行序列中的每個計算,直至序列的最后一個計算。

3.1 順序結(jié)構(gòu)

順序結(jié)構(gòu)用來描述一個計算或操作序列,表示從序列的第一個計算開始,順序執(zhí)行序列中的每個計算,直至序列的最后一個計算。通常,一個復雜的計算過程不能用一個簡單的計算來表達,而需把復雜的計算描述成簡單計算的序列。

1.復合語句

在C語言中,將順序執(zhí)行的語句序列,用花括號括起來,構(gòu)成C語言的復合語句。在邏輯上視復合語句為單個語句,它也能用作其它結(jié)構(gòu)語句的成分語句。在很多場合,復合語句內(nèi)還會包含其它結(jié)構(gòu)語句。

2.表達式語句

在順序結(jié)構(gòu)中,最頻繁使用的是表達式之后接上一個分號。例如,在賦值表達式之后接上分號,完成用表達式的值更新某變量,習慣稱這種表達式語句為賦值語句;在函數(shù)調(diào)用之后接上分號,完成指定的計算功能,習慣稱這種表達式語句為函數(shù)調(diào)用語句。

3.2 常用輸入輸出庫函數(shù)

最基本的輸入輸出庫函數(shù)有字符輸入函數(shù)、字符輸出函數(shù)、格式輸入函數(shù)和格式輸出函數(shù)。

1.字符輸入函數(shù)

字符輸入函數(shù)getchar()的功能是從標準輸入設備上(通常是鍵盤終端)讀取一個字符。該函數(shù)沒有參數(shù),對它的每次調(diào)用,就返回下一個輸入字符的ASCII代碼值。例如,執(zhí)行語句

ch=getchar();

使變量ch得到輸入字符的ASCII代碼值。一般情況下,這里的變量ch為char型或int型。當程序在輸入字符后,用ch判定輸入文件是否結(jié)束時,變量ch必須是int型的。這是因為文件結(jié)束標記值是-1,是int型的。程序中常用EOF表示當前讀人字符是文件結(jié)束標記,常量名EOF在文件Stdio.h中被定義為-1。

2.字符輸出函數(shù)

字符輸出函數(shù)ptuchar()有一個字符的ASCII代碼值參數(shù),函數(shù)調(diào)用putchar (ch)的功能是將以出值為其ASCII代碼的字符輸出到標準輸出設備(通常是終端顯示屏)上。這里ch可以是char型或int型數(shù)據(jù)。

3.格式輸入函數(shù)

格式輸入函數(shù)scanf()的作用是從標準設備讀人字符序列,按格式控制字符率所包含的格式解釋輸入字符序列,并將解釋結(jié)果存儲到對應的變量中。調(diào)用格式輸入函數(shù)scanf()的一般形式為

scanf(格式控制字符串,變量地址,變量地址,……)

格式控制字符串是字符串表達式,通常是由一對雙引號括起來的字符串常量,直接用于解釋輸入字符序列。格式控制字符率可以包含:

·空白類字符(空格符或制表符),它們使輸入跳過空白類字符,直到遇到下一個非空白類字符。

·普通字符(不包括%),它們要求輸入字符流中下一個字符與它相同。

·格式轉(zhuǎn)換說明,以字符’%’開頭至輸入格式符結(jié)束的字符序列組成。格式轉(zhuǎn)換說明引導對下一輸入字符段進行轉(zhuǎn)換。

格式轉(zhuǎn)換說明的一般形式為

%[*][w][h/l/L]輸入格式符

輸入格式符共有14個,有12種不同輸入格式,其中大綱要求掌握的7種輸入格式符的意義見表3.1。用方括號括住的內(nèi)容是輸入格式修飾說明,可以缺省,它們的意義是:

(1)*--星號(賦值抑制符),對應的輸入數(shù)據(jù)項按格式要求被輸入,但結(jié)果不存儲。帶星號的格式轉(zhuǎn)換說明不對應變量地址。用它來跳過一個輸入數(shù)據(jù)項。

(2)--整型常數(shù)(域?qū)捳f明),表示輸入數(shù)據(jù)項的字符段的有效字符數(shù)。若實際輸入字符段的字符數(shù)小于W,以實際有效字符為準。

對于數(shù)值數(shù)據(jù)輸入格式來說,輸入域定義為從下一個非空白類字符起(因此可能跳過若干個空格符、制表符、換行符),到一個與數(shù)值數(shù)據(jù)相矛盾的字符,或直到輸入了指定個數(shù)的字符數(shù);對于字符率輸入格式來說,輸入域定義為從下一個非空白類字符起,輸入非空白類字符,直至遇到空白類字符,或直到輸入了指定個數(shù)的非空白字符。

(3) h/l/L長度修飾符,指明輸入數(shù)據(jù)項的存儲類型。

h 修飾格式符d,o,X時,表示輸入的整數(shù)按短整型存儲。

l 修飾格式符d,O,X時,表示輸入的整數(shù)按長整型存儲。

l 修飾格式符e,f時,表示輸入的實數(shù)按double型存儲。

缺省時,對于格式符d,o,x,表示輸入的整數(shù)按int整型存儲;對于格式符e,f,表示輸入的實數(shù)是按float型存儲。

3.3 常用輸入格式符表中格式符的意義

d 輸入十進制形式的整型數(shù)據(jù)

O 以人進制形式輸入整型數(shù)據(jù)

X 以十六進制形式輸入整型數(shù)據(jù)

C 輸入字符數(shù)據(jù)

S 輸入字符串

e,f 輸入實型數(shù)據(jù)

說明:

(1)格式控制字符率之后給出的是變量地址,而不是變量名(除非是指針)。如要為整型變量n輸入數(shù)據(jù),寫成

scanf(”%d", n)是不正確的,應寫成 scanf(”% d”,&n)

(2)如果在格式控制字符串中除格式轉(zhuǎn)換說明和空白符之外,還有其它字符,則在輸入數(shù)據(jù)時應輸入與這些字符相同的字符。例如,

scanf(”%d, %d’’,&i, &j)

則在為i,j輸入數(shù)據(jù)時,緊接在第一個整型數(shù)據(jù)之后,需要有一個逗號字符,如輸入

1,2

是正確的;而輸入

1 2

等其它形式都是不正確的。

(3)在用”%c ”格式轉(zhuǎn)換說明輸入字符時,空白類字符和用轉(zhuǎn)義字符表示的字符都能作為有效字符輸入。要輸入一串空白類字符之后的第一個非空白類字符,可采用格式”% C”。格式字符率中的空格符使輸入跳過空白類字符到第一個非空白類字符,然后被C格式輸入。

(4)為整型變量輸入整數(shù)時,若變量類型為短整型,則必須在格式符之前加長度修飾說明h;若變量類型為長整型,則必須在格式符之前加長度修飾說明1。

(5)輸入數(shù)值數(shù)據(jù)時,輸入字符流中的前導空白類字符會被自動跳過,從空白類字符后的數(shù)值數(shù)據(jù)字符開始輸入。構(gòu)成數(shù)值數(shù)據(jù)的字符被輸入轉(zhuǎn)換成計算機的內(nèi)部表示,并存儲結(jié)果。

若第一個非空白類字符不能構(gòu)成數(shù)值字符,則立即結(jié)束輸入。

(6)S格式用來輸入字符串,對應的變量地址為字符列表(數(shù)組)的首地址,該數(shù)組必須大到足以容納可能輸入的最長字符串。在輸入字符流中,跳過前導的空白類字符,以非空白類字符開始,以后隨的第一個空白類字符結(jié)束的非空白類字符的字符序列作為一個字符串。scanf()函數(shù)在輸入的字符序列之后自動添加字符率結(jié)束標記符'\0'(因此,存儲輸入字符序列的字符數(shù)組的長度必須比實際最長字符串的字符數(shù)多1)。

(7)e,f格式用未輸入實數(shù),對應的數(shù)據(jù)存儲地址為實型數(shù)據(jù)存儲地址。如格式轉(zhuǎn)換說明中含有長度修飾說明1,則為double型變量地址;若無長度修飾說明,則為float型變量地址。輸入數(shù)據(jù)的字符序列是由正負號(可有可無)、十進制數(shù)字串、帶小數(shù)點的小數(shù)部分(可有可無)。以e或E開頭的指數(shù)部分(可有可無)組成。

(8)在跳過前導空白符后,正在輸入數(shù)值數(shù)據(jù)和字符串時,遇以下情況,就認為該數(shù)據(jù)結(jié)束:

·遇空白類字符:空白符、制表符、換行符。

·已讀人由有效字符數(shù)所指定的字符數(shù)。如”%4d多至4個數(shù)字符。

·對于輸入數(shù)值數(shù)據(jù),下一個字符不能構(gòu)成正確的數(shù)據(jù)格式。如

scanf(”%d%C%f,&i,&c,&x)

假定變量i,c,x分別為int型、char型和float型。若輸入字符列為:

123a123x. 26

則變量i為123,變量c為字符a,變量x為123.0。

(9)輸入數(shù)據(jù)時,將字符流轉(zhuǎn)換成內(nèi)部表示后,存儲到對應變量中。例如,

scanf(”%3d%*4d%d”,&i, &j)

如輸入字符行為

123456 78

將使變量i=123,j=78。其中數(shù)據(jù)456因賦值抑制符*的作用被跳過。一般從鍵盤讀入數(shù)據(jù),不指定輸入數(shù)據(jù)項的有效字符數(shù),數(shù)據(jù)項與數(shù)據(jù)項之間用空白符,或制表符,或回車符分隔。

4.格式輸出函數(shù)

格式輸出函數(shù)printf()的作用是將輸出項接指定的格式排版輸出到標準設備上(通常是終端顯示屏)。調(diào)用printf()函數(shù)的一般形式為

printf(格式控制字符串,表達式,表達式,……)

其中格式控制字符率是字符串表達式,通常是由用一對雙引號括起來的字符串常量。它包含三類字符:普通字符、轉(zhuǎn)義字符和格式轉(zhuǎn)換說明,它們的作用分別如下:

(l)普通字符,要求按原樣輸出。

(2)轉(zhuǎn)義字符,要求技轉(zhuǎn)義字符的意義輸出,如’\n’,表示輸出時回車換行,’\b’表示退格等。

(3)格式轉(zhuǎn)換說明,以字符%開頭至格式符結(jié)束的字符列組成,其一般形式為

%[-」「+」「」[#」「W][.p][h/l/L]輸出格式符

其中用方括號括住的內(nèi)容是格式修飾說明,可以缺省(不出現(xiàn)),如"%d"、"% 7.5f"等。每個格式轉(zhuǎn)換說明對應一個輸出項,輸出項可以是常量、變量或表達式。格式轉(zhuǎn)換說明的作用是將對應輸出項的內(nèi)容按格式符要求產(chǎn)生出字符列,并按格式修飾說明排版輸出。

輸出格式符共有16個,有12種不同的格式,考試大綱只要求掌握表3.2所列的九種。

3.4 常用輸出格式符表中格式符的意義

d或i 整型數(shù)據(jù)以十進制形式輸出

o 無符號整型數(shù)據(jù)以八進制形式輸出

X 無符號整型數(shù)據(jù)以十六進制形式輸出

U 元符號整型數(shù)據(jù)以十進制形式輸出

C 字符的ASCll碼數(shù)據(jù),輸出對應的字符

S 輸出字符串

f 以“整數(shù)部分.小數(shù)部分”形式輸出實型數(shù)據(jù)

e 以[-]n.nnnnne±xx輸出實型數(shù)據(jù)

g 以f或e格式輸出

說明:

(1)x格式符同。格式符一樣,把符號位作為數(shù)的一部分輸出。對于x格式,用字符a、b、c、d、e、f(或A、B、C、D、E、F)表示9之后的六個十六進制數(shù)字符。

(2)一個整數(shù),只要它的位在0-255范圍內(nèi),也可以用字符形式輸出,輸出以該整數(shù)為ASCII代碼的字符。反之,一個字符數(shù)據(jù)也可以用整數(shù)形式輸出,輸出該字符的ASCII代碼值。

(3)f、e和g格式符用于輸出實型數(shù)據(jù),格式轉(zhuǎn)換時有四舍五人處理。對于f格式,小數(shù)點后的數(shù)字個數(shù)可由格式修飾說明p指定,若p為0,不顯示小數(shù)點。用e格式輸出時,對于非0實數(shù),小數(shù)點前有一位非零數(shù)字,輸出格式中的有效位數(shù)可由格式修飾說明p指定;字符e(或E)之后是指數(shù),指數(shù)部分至少包含兩個數(shù)字。若輸出值的絕對值不小于 1E+100,則指數(shù)部分多于兩位數(shù)字。

g格式能根據(jù)表示數(shù)據(jù)所需字符的多少自動選擇f格式或e(或E) 格式輸出實數(shù),選擇是以輸出時所需字符數(shù)多少為標準。

格式修飾說明有七種,教材只介紹其中四種,它們的意義分別說明如下:

(1)W域?qū)捳f明,W是一個十進制整數(shù),表示輸出字段的字符數(shù)。若轉(zhuǎn)換后需要的字符個數(shù)比給出的W多,則以實際需要為準;若轉(zhuǎn)換后需要的字符數(shù)比W少,就在左邊用填充字符補足(若給出左邊對齊標志(-),則在右邊補填充字符人通常用空白符作填充字符,若十進制整數(shù)W之前有前導0(此0不表示以八進制數(shù)給出字段寬度),則以字符0作填充字符。

(2)- 左對齊標志,當轉(zhuǎn)換后字符個數(shù)少于W時,在W所限定的字段寬度內(nèi),轉(zhuǎn)換所得字符列左對齊,右邊補填充符。缺省時,右對齊,左邊補填充符。

(3).p,其中p也是十進制整數(shù)。

對于g或e格式輸出,p指明輸出精度(有效數(shù)字位數(shù)),可以缺省,缺省值依賴于系統(tǒng)的規(guī)定(下面的例子設p的缺省值為6)。

對于f格式輸出,p指明輸出字符列的小數(shù)點之后的數(shù)字個數(shù),可以缺省。

對于S格式輸出,p指明最多輸出字符率的前p個字符,多余截斷。缺省時,字符串的內(nèi)容全部輸出。

對于d.i、O、u、x和X,表示至少出現(xiàn)的數(shù)字個數(shù)。

同域?qū)捳f明一樣,p也可以是字符*,而實際值由后面一個輸出項的整數(shù)值給出,若該值為負值,相當于沒有給出p。

(4) l指明輸出項的類型。

長度修飾符l用于格式符d、i、o、u、X,表示對應的輸出項是長整型或無符號長整型。

以下是格式輸出的一些例子。例如,

int i=1234; long j=1234567L;

printf(”%d,%+6d,%06d,%-6d, %5ld”,i,i,i,i,j)

將輸出:

1234,+1234,00l234,1234,1234567

注意:對于long型數(shù)據(jù)輸出,必須在格式符之前有長度修飾符l,表明輸出long型數(shù)據(jù)。

若 int k=045;long p=-1L;printf(”%#o,%4o,%6lo”,k,k,p)

將輸出:

045, 45, 37777777777

而printf("%#x,%4x,%6lx”,k,k,p)將輸出:

0x25, 25, FFFFFFFF

若 unsigned int u= 65535u;prinif(”%d,%4u,%ln’,u,u,p)

將輸出:

-l, 65535, 4294967295

若 char ch1= 045, ch2=’a’;printf(”%c,%-3c,%2c”,ch1,ch2,ch2)

將輸出:

%,a, a

若 char s[]==”ABCDEF’;printf(”%3s,%4.2s,%-7.4s,%.5s”,s,s,s,s)

將輸出:

ABCDEF, AB, ABCD, ABCDE

若 float f=123.4567f; double d=123.456789;

printf(”%.4f,%8.3f,%-7.2f,%.7f",f,f,f,d)

將輸出:

123.4567, 123.457, 123.46, 123.4567890

而 printf(”%.6e,%10.2e,%-10.2e,%.2e,%.9e”,f,f, f,f,d)

將輸出:

1.23457e+02, 1.2e+02,1.2e+02,l.2e+02, 1.23456789e+02

注意:實型數(shù)據(jù)的有效位數(shù),不要以為凡是打印(顯示)的數(shù)字都是準確的。一般地,float型只有7位有效數(shù)字,double型有15位有效數(shù)字。實際上,因計算過程中的誤差積累,通常不能達到所說的有效位數(shù)。

另外,要注意%g格式的特殊性,當它選擇“整數(shù)部分.小數(shù)部分”形式時,因格式修飾說明.p在e格式中的意義是指明精度,所以p的值是整數(shù)部分位數(shù)與小數(shù)部分位數(shù)之和(不是f

格式中的小數(shù)位數(shù))。如有

float g1=12.34f,g2=0.0f;

double d=123.456789, g=123456.789;

printf("%g,%G",g1,g2);

printf("%f,%g,%g,%g,%.8g"’,g1,g1,d,g,g)

將輸出:

12.34,0

12.340000,12.34,123.457,123457,123456.79

3.5 選擇結(jié)構(gòu)

選擇結(jié)構(gòu)有單分支選擇結(jié)構(gòu)、雙分支選擇結(jié)構(gòu)和多分支選擇結(jié)構(gòu)。C語言提供相應的if語句和switCh語句分別用來描述這些選擇結(jié)構(gòu)。

1.單分支選擇語句

單分支選擇語句有以下形式:

if(表達式)

語句

這種形式的語句執(zhí)行過程是:

(1)計算表達式的值;

(2)測試表達式的值。若表達式的值非0,則執(zhí)行它的成分語句,并結(jié)束單分支選擇的執(zhí)行;若表達式的值為0,則立即結(jié)束單分支選擇的執(zhí)行。

2.雙分支選擇語句

漢分支選擇語句有以下形式:

if(表達式)

語句1

else

語句2

雙分支選擇語句根據(jù)給定的選擇條件表達式值為非0或為0兩種情況,從兩個供選擇的成分語句中自動選取一個成分語句執(zhí)行。雙分支選擇語句的執(zhí)行過程是:

(1)計算表達式的值;

(2)測試表達式的值并選擇執(zhí)行語句。若表達式的值非0,則執(zhí)行語句1,并結(jié)束雙分支選擇語句;否則執(zhí)行語句2,并結(jié)束雙分支選擇語句。

注意;無論條件表達式的值為何值,只能執(zhí)行語句1或語句2中的一個。當雙分文選擇語句中的else之后的語句2為空語句時,就變成單分支選擇語句。

單分文選擇語句和雙分支選擇語句統(tǒng)稱且語句。在if語句中的語句、語句1和語句2可以是任何語句。當它們中的某一個需用語句序列描述時,必須將這語句序列寫成復合語句。當它們中的某一個又是if語句時,就呈現(xiàn)嵌套的if語句形式。這時應注意else與if的對應關(guān)系。C語言約定else總是與它前面最接近的if對應。

為正確書寫if語句,特別說明以下幾點:

(1)若if語句中的語句、語句1、語句2是一個簡單語句,則這些簡單語句之后會有一個分號,這是C語言對這些簡單語句的要求。

(2)若if語句中的語句、語句l、語句2要用語句序列(即為順序結(jié)構(gòu))來實現(xiàn),則必須將它們改寫成復合語句,即邏輯上把它們變成一個語句。

(3) 在if語句中,每個else總要與它前面的if對應,不可能出現(xiàn)沒有對應if的else。

多分支選擇語句

多分支選擇結(jié)構(gòu)通常有 n(>2)個不同情況和 n+1個供選擇的分支。多分支選擇結(jié)構(gòu)也可用前敘述的嵌套if語句來描述,但因if語句嵌套深度太多不便于程序編寫,也不便于理解,為此C語言專門提供了一種實現(xiàn)多分支選擇結(jié)構(gòu)的語句,這就是switCh語句。它的一般形式是:

switeh(表達式){

case常量表達式 1:語句序列 1

case常量表達式 1:語句序列 2

case常量表達式 n:語句序列 n

defalt:語句序列 n+1

}

對switeh語句需說明以下幾點:

(1)switch后面括號內(nèi)的表達式只限于是整型表達式或字符型表達式或枚舉型表達式。

(2)case后的常量表達式稱為情況前綴,要求所有常量表達式的值互不相同,并與switch后面括號內(nèi)的表達式值的類型相一致。

(3)語句序列由任意條合法的C語句構(gòu)成,也可以沒有語句。

(4)情況前綴default可以缺省,但至多出現(xiàn)一次,習慣總是將它寫在全部情況前綴之后,如有必要也可寫在某case之前。

switch語句的執(zhí)行過程解釋如下:

先計算表達式的值,以該值依次與各case之后的常量表達式的值比較,按下列規(guī)則,選擇執(zhí)行的入口:

如果表達式的值等于某個常量表達式的值,switch語句就從該常量表達式之后的語句序列的第一個語句開始執(zhí)行,然后一直向下執(zhí)行,或自動依次進入后繼常量表達式之后的語句序列繼續(xù)執(zhí)行(如沒有 break語句),或執(zhí)行完語句序列 n+1,結(jié)束 switch語句的執(zhí)行;或在執(zhí)行某個語句序列過程中遇到轉(zhuǎn)出該switch語句的語句(如break語句),就停止向下執(zhí)行,結(jié)束switch語句的執(zhí)行。

如果沒有相匹配的常量表達式,就從以default為情況前綴的語句序列開始執(zhí)行。

如果沒有相匹配的常量表達式,也沒有defaul情況前綴,則該switch語句的這次執(zhí)行立即結(jié)束。

由上述解釋可知,“case常量表達式”只是起語句序列入口的作用。在執(zhí)行switch語句時,根據(jù)switch之后的表達式的值找到與該值匹配的入口,就從此人口處開始執(zhí)行,只要未遇到轉(zhuǎn)出該switch語句的break語句或goto語句,就一直向下執(zhí)行,也不再理會經(jīng)過的case后的常量表達式。

如果要使各種情況互相排斥,僅執(zhí)行各case所對應的語句序列,最常用的辦法是使用break語句,各語句序列都以break語句結(jié)束。在switch語句中,執(zhí)行break語句將使控制轉(zhuǎn)向switch語句的后繼語句。

由于switch語句的表達式不允許是實型的,當應用于實型值選擇情況時,通常需作以下處理:將實表達式乘上一個適當?shù)谋壤蜃樱馆^大的實表達式值映照到一個較小的范圍上,然后再將它轉(zhuǎn)換到整型。

循環(huán)結(jié)構(gòu)

循環(huán)計算用循環(huán)結(jié)構(gòu)來描述。C語言提供三種描述不同循環(huán)結(jié)構(gòu)的語句,它們是while語句、do-while語句和for語句。

1.while語句

while語句用來描述while型循環(huán)結(jié)構(gòu),它的一般形式為

while(表達式)

語句

while語句的執(zhí)行過程是:

(1)計算while之后的表達式的值;

(2)測試表達式的值,當值為非 0時,轉(zhuǎn)步驟 3;如值為 0,則結(jié)束while語句;

(3)執(zhí)行while語句的循環(huán)體,并轉(zhuǎn)步驟1(從而構(gòu)成循環(huán))。

一般來說,為使while語句的執(zhí)行能正常結(jié)束,如控制循環(huán)的條件表達式包含有變量,循環(huán)體的執(zhí)行應能更新這些變量的值,使表達式的值會變?yōu)?。有時,很難直接寫出while后的條件,這時可以簡單地寫上 1,而在循環(huán)體中含有當某條件滿足時,執(zhí)行如 break語句那樣的控制轉(zhuǎn)移語句,使控制跳出while循環(huán),即呈以下結(jié)構(gòu)形式:

while(1){

...

if(表達式)break;

...

}:

2.do-while語句

do-while語句用來描述do-while型循環(huán)結(jié)構(gòu),它的一般形式為;

do

語句

while(表達式);

其中的語句是do-while語句的循環(huán)體。do-while語句的執(zhí)行過程是:

(1)執(zhí)行do-while語句的循環(huán)體;

(2)求 while之后的表達式的值;

(3)測試表達式的值,當值為非0,轉(zhuǎn)步驟1(從而構(gòu)成循環(huán));如值為0,則結(jié)束do-while語句。

與while語句一樣,當循環(huán)體由多個語句組成時,必須把它們書寫成復合語句。有些用while語句描述的循環(huán)計算,也能用do-while語句描述。然而,并非總是如此。兩者的重要區(qū)別在于:執(zhí)行循環(huán)體時,對作為循環(huán)條件的表達式的求值和測試的時間不同。while語句對作為循環(huán)條件的表達式求值和測試在執(zhí)行循環(huán)體之前,而do-While語句對作為循環(huán)條件的表達式求值和測試在執(zhí)行循環(huán)體之后。對于do-while語句,它的循環(huán)體至少被執(zhí)行一次,而while語句的循環(huán)體在作為循環(huán)條件的表達式值一開始就為0的情況下,就一次也未被執(zhí)行。如能保證while語句中的作為循環(huán)條件的表達式在第一次被求值后,總是非0,則把該循環(huán)條件移至循環(huán)體執(zhí)行之后求值和測試,能起同樣的控制作用。在這種情況下,while語句就能改寫成如while語句。如 while語句中的作為循環(huán)條件的表達式值可能初次求值就為 0時,則它不能簡單地改寫成do-while語句。另外要特別指出,分號是do-while語句的結(jié)束符,不能省略。

for語句

for語句是C語言中最靈活、使用最廣泛的循環(huán)結(jié)構(gòu)語句。如以最一般意義下考慮循環(huán),一個完整的循環(huán)應包含對有關(guān)變量賦初值部分、控制循環(huán)的條件、一個要循環(huán)計算的操作、每次循環(huán)后對有關(guān)變量的修正等四部分組成。拉語句就是從這一般意義下表達循環(huán)結(jié)構(gòu)的語

句。for語句的一般形式為

for(表達式1;表達式2;表達式3)

語句

其中的語句是for語句的循環(huán)體。輸語句的執(zhí)行過程是:

(1)計算表達式1;

(2)計算表達式 2的值,并測試其值為 0或非 0。若值為非 0,轉(zhuǎn)步驟 3;否則結(jié)束 for語句;

(3)執(zhí)行循環(huán)體;

(4)計算表達式3;

(5)轉(zhuǎn)向步驟2。

for語句的一般形式也可等價地用以下形式的while語句來表達:

表達式1;

while(表達式2) {

語句

表達式3;

}

由for語句的執(zhí)行過程可知,for語句的表達式1的作用是對控制循環(huán)的有關(guān)變量賦初值;表達式2是控制循環(huán)的條件;表達式3用于修正有關(guān)變量;語句是循環(huán)體。所以for語句按各部分的功能,可以形象地寫成以下形式:

for(賦初值的表達式;控制循環(huán)條件的表達式;修正變量的表達式)

完成循環(huán)計算的語句

正確使用for語句,需注意以下幾種情況:

(1) for語句的一般形式中,表達式1、表達式2和表達式3都可以省略。如表達式1省略,表示該for語句沒有賦初值部分,或前面的程序段已為有關(guān)變量賦了初值,或確實沒有特別的初值;如表達式2省略,表示循環(huán)條件永遠為真,可能循環(huán)體內(nèi)有控制轉(zhuǎn)移語句轉(zhuǎn)出缺語句;表達式3省略,表示沒有修正部分,對變量的修正已在循環(huán)體內(nèi)一起完成。不管表達式1、表達式2和表達式3省略情況如何,其中兩個分號都不能省略。對于三個表達式都省略情況,for語句呈以下形式:

for(;;)

語句

(2)表達式l、表達式2和表達式3都可包含逗號運算符由多個表達式組成。

4. break語句

break語句除能用于switch語句外,還常用于循環(huán)語句中。執(zhí)行循環(huán)結(jié)構(gòu)中的break語句,控制就從包含它的循環(huán)結(jié)構(gòu)中退出。break語句通常與if語句結(jié)合,構(gòu)成一個結(jié)束循環(huán)的條件。

5.continue語句

continue語句只用于循環(huán)語句中。通常復雜的循環(huán)計算中,循環(huán)語句的循環(huán)體是一個語句序列,中間會有一個包含continue語句的且語句。當指定的條件成立時,continue語句就被執(zhí)行,這時continue語句之后的語句就不再執(zhí)行,控制立即進入下一輪循環(huán)。

6. 語句標號和goto語句

C程序的語句之前都可插入標識符和冒號,該標識符即為其后語句的標號。如

strat:X= 0;

標識符Start就是語句“x=0;”的標號。

goto語句(goto標號;)是一種無條件轉(zhuǎn)移語句,其意義是將程序的控制轉(zhuǎn)到以所指定的標號命名的語句處。goto語句通常出現(xiàn)在if語句內(nèi),實現(xiàn)當某種條件出現(xiàn)時,需要改變正常的順序執(zhí)行控制流程。由于goto語句過份的隨意使用會給程序的理解帶來很大的困難,所以一般強調(diào)不使用goto語句來編程。只有當一個多重循環(huán)的最內(nèi)層,當發(fā)現(xiàn)某種特別的情況需要結(jié)束整個多重循環(huán),這時可用goto語句讓程序執(zhí)行從最內(nèi)層直接轉(zhuǎn)到外層循環(huán)之外。注意,break語句只能跳出包含它的一層循環(huán)。

7.用goto語句構(gòu)成循環(huán)

在早先非結(jié)構(gòu)化程序設計中,由于語言提供的控制結(jié)構(gòu)的結(jié)構(gòu)性差,常用goto語句構(gòu)成循環(huán)。但在結(jié)構(gòu)化程序中,不再用goto語句構(gòu)成循環(huán)。考生掌握這個知識是要求考生能將goto語句構(gòu)成的循環(huán)改寫成結(jié)構(gòu)化控制結(jié)構(gòu)描述的循環(huán)。

【編輯推薦】

  1. 程序員之程序設計知識點二(1)
  2. 程序員之程序設計知識點一
  3. 如何成為一個優(yōu)秀的JSP程序員
  4. 更多軟考資料請點擊51CTO軟考專題
責任編輯:張攀 來源: 考試大
相關(guān)推薦

2011-01-07 10:54:39

程序員

2011-01-11 11:37:03

程序員

2010-12-24 10:23:50

程序員

2010-12-30 10:18:54

程序員

2011-01-05 14:53:53

程序員

2011-01-28 10:53:18

程序員

2010-12-23 11:18:16

程序員

2011-01-14 11:03:32

程序員

2011-01-18 11:41:26

程序員

2019-10-17 15:10:33

PHP程序員Linux

2021-05-05 11:32:36

MySQL數(shù)據(jù)庫索引

2014-10-30 10:09:44

程序員程序設計師

2019-07-15 12:40:02

Linux基礎知識程序員

2018-04-23 09:16:47

程序員知識體系

2012-03-06 09:22:46

程序員

2013-08-20 09:33:59

程序員

2014-04-16 11:39:52

2015-03-10 14:28:46

程序員編程知識經(jīng)驗總結(jié)

2009-07-15 09:29:24

Java程序員

2011-05-13 14:34:02

程序員
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 狠狠的干狠狠的操 | 午夜精品三区 | 久久99精品视频 | 爱爱无遮挡 | 成人国内精品久久久久一区 | 成人在线观看免费 | 最新中文字幕在线 | 国产精品99久久久久久动医院 | 在线观看国产h | 亚洲视频在线看 | 可以免费观看的av片 | 国产精品国产三级国产aⅴ中文 | 欧美日韩一二区 | 免费在线看黄视频 | 久久精品亚洲一区 | 欧美一区永久视频免费观看 | 欧美性一区二区三区 | 国产中文区二幕区2012 | 亚洲日本一区二区三区四区 | 激情一区二区三区 | 少妇特黄a一区二区三区88av | 找个黄色片 | 色男人天堂av | 91精品国产91久久久久久吃药 | 九九九国产| 亚洲三区视频 | 超碰97在线免费 | 亚洲一级淫片 | 亚洲一区二区久久 | 大久 | 麻豆精品一区二区三区在线观看 | 免费看淫片 | 日韩午夜在线播放 | 欧美成人激情 | 国产精品中文字幕一区二区三区 | 一区二区三 | 中文字幕亚洲视频 | 中文字幕第7页 | 精品国产一区二区三区性色av | 国产久| 午夜精品久久久久久久久久久久久 |