版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第3章
順序結(jié)構(gòu)實現(xiàn)語句——順序結(jié)構(gòu)
程序設(shè)計3.1簡單的順序結(jié)構(gòu)語句3.2數(shù)據(jù)的輸入/輸出3.3順序結(jié)構(gòu)程序設(shè)計實訓(xùn)任務(wù)五
熟悉格式的輸出和輸入實訓(xùn)任務(wù)六
學(xué)習(xí)順序結(jié)構(gòu)程序設(shè)計的方法何謂順序結(jié)構(gòu)?計算機怎樣執(zhí)行順序結(jié)構(gòu)程序?
順序處理是人們處理問題最基本的思維方式,也是程序的基本結(jié)構(gòu)。所謂順序處理,就是按照一定的邏輯或時間順序一步一步地執(zhí)行,程序的順序結(jié)構(gòu)由順序執(zhí)行語句組成,如圖3.1所示。
順序結(jié)構(gòu)是一種最簡單的程序結(jié)構(gòu)。順序結(jié)構(gòu)語句是無條件被執(zhí)行的語句,每一個程序必包含順序結(jié)構(gòu)語句。從程序的功能上看,順序結(jié)構(gòu)語句一般包括提供基本數(shù)據(jù)的語句、簡單數(shù)據(jù)處理語句和數(shù)據(jù)輸出語句。本章從最簡單程序設(shè)計出發(fā),介紹一些順序結(jié)構(gòu)實現(xiàn)語句與程序設(shè)計方法。
圖3.1順序結(jié)構(gòu) 3.1簡單的順序結(jié)構(gòu)語句
1.變量定義語句
在第2章已經(jīng)介紹了變量的作用、意義以及變量的定義語句。變量定義語句的一般格式為
類型符
變量名;
從程序結(jié)構(gòu)上看,變量定義語句基本上是一個程序必有的語句。因為程序中的基本數(shù)據(jù)都是通過變量來存儲的,所以成為基本的數(shù)據(jù)對象。變量定義語句一般出現(xiàn)在程序的
開始。
2.表達式語句
一個表達式末尾加上“;”就構(gòu)成表達式語句。從C語法規(guī)定來講,任何一個表達式加上“;”都可以構(gòu)成C語句。從功能作用上講,有些表達式能構(gòu)成有意義的語句,而有些表達式構(gòu)成語句是沒有意義的。
例如:
++i;
i--;
是兩個有意義的表達式語句。而
x+y;
是合法的C語句,作用是完成兩個變量值的求和,但求和的結(jié)果無法保存,這樣求和就沒有意義了。由表達式構(gòu)成有意義的表達式語句,最典型的是由一個賦值表達式構(gòu)成賦值語句。賦值表達式只能出現(xiàn)在語句中,表示語句中的一個操作。變成賦值語句就是程序中一個具有獨立功能的語句了。賦值語句是程序中最常出現(xiàn)的語句,一般用于給變量提供值,或?qū)⑻幚斫Y(jié)果存放在變量中。例如:
a=3;
u=x+y;
第1個賦值語句是給變量提供值。第2個賦值語句是將兩變量值相加的和存放在一個變量中。
3.函數(shù)調(diào)用語句與返回函數(shù)值語句
C語言中的函數(shù)是實現(xiàn)相對獨立功能模塊的基本結(jié)構(gòu),相當于其他高級語言中的子程序或過程。函數(shù)調(diào)用語句用來引用函數(shù)的功能。函數(shù)調(diào)用語句的一般格式為
函數(shù)名(實參列表);
函數(shù)調(diào)用的功能是將程序執(zhí)行轉(zhuǎn)到被調(diào)用函數(shù)處執(zhí)行。通過實參列表向被調(diào)用函數(shù)傳送所需要的初始數(shù)據(jù)。例如:
printf("TheisaCstatement.");
這是一個輸出庫函數(shù)的調(diào)用語句,傳遞的參數(shù)是一個字符串常量,實現(xiàn)的功能是輸出所傳遞的字符串。
C語言中的函數(shù)有兩類。一類是將一些常用功能編寫成函數(shù),由系統(tǒng)提供,用戶只要通過規(guī)定的格式及參數(shù),通過函數(shù)調(diào)用語句即可使用其功能。這類函數(shù)稱為庫函數(shù)。常用的庫函數(shù)及其調(diào)用方法見附錄D。另一類是用戶自定義函數(shù),有關(guān)自定義函數(shù)的內(nèi)容將在第7章介紹。
如果調(diào)用一個函數(shù)要求有一個返回值,要通過返回語句來實現(xiàn)。返回語句的一般格式為
return(返回數(shù)據(jù));
返回語句的功能是將括號中的數(shù)據(jù)從被調(diào)函數(shù)帶回主調(diào)函數(shù)。括號中的“返回數(shù)據(jù)”一般是一個變量或表達式。返回語句一般用在函數(shù)體的末尾。
main()函數(shù)無返回值,但C99提倡在函數(shù)末尾加“return0;”語句,表示函數(shù)正常返回。如果不加,則編譯系統(tǒng)自動添加,程序也能編譯運行。
4.空語句
空語句是指程序語句行只有“;”?!?;”是C語句的唯一標識,只要出現(xiàn)一個“;”就認為是一條語句。因分號前無內(nèi)容,所以稱為空語句。從形式上看,空語句好像沒有什么意義,但還是有其用途的。如用程序?qū)崿F(xiàn)一段延時,延時中不要求做什么,只耗費一段時間,就可以采用空語句的循環(huán)來實現(xiàn)。
5.復(fù)合語句
C語言中,把用{}界定的一個語句集合稱為復(fù)合語句。例如:
{
z=x+y;
t=z/100;
printf("%f",t);
}
這是一個復(fù)合語句。復(fù)合語句中包含若干個C語句,也可能包含非順序語句,但作為一個語句看,它仍屬于順序語句。
6.無條件轉(zhuǎn)向語句
無條件轉(zhuǎn)向語句的一般形式為
goto目標語句標號;
執(zhí)行該語句,則程序執(zhí)行流轉(zhuǎn)向目標語句標號處執(zhí)行。
注意:結(jié)構(gòu)化程序設(shè)計不提倡使用無條件轉(zhuǎn)向語句。
3.2數(shù)據(jù)的輸入/輸出
3.2.1數(shù)據(jù)格式輸出函數(shù)(printf)
1.調(diào)用格式
printf函數(shù)調(diào)用的一般格式為
printf("格式控制字符串",輸出數(shù)據(jù)列表);
其中,printf是庫函數(shù)名,作為系統(tǒng)使用的關(guān)鍵字,調(diào)用語句必須嚴格使用此函數(shù)名,否則不能實現(xiàn)調(diào)用。
格式控制字符串是用雙撇號界定的一個字符序列,用于控制輸出數(shù)據(jù)的形式和數(shù)據(jù)的格式。格式控制字符串一般包含格式字符、非格式字符和轉(zhuǎn)義字符三部分。
(1)格式字符用于控制所對應(yīng)輸出對象的數(shù)據(jù)形式。C語言中常用的格式字符見表3.1。格式字符必須以“%”開始,如%d、%i、%u、%o、%x、%X、%c、%s、%f、%e、%E、%g、%G。
表3.1常用的格式字符
(2)非格式字符指需要照原樣輸出的字符,如“printf("helloworld!");”,則輸出“helloworld!”字符串。
(3)轉(zhuǎn)義字符用于控制輸出數(shù)據(jù)的格式。例如:“\n”表示回車換行;“\t”表示輸出跳到下一個制表位。其他轉(zhuǎn)義字符見表2.1。
輸出數(shù)據(jù)列表是用逗號分隔的變量、常量、表達式、函數(shù)等,每個輸出項依次與格式控制符匹配。分析:
(1)格式控制字符串于開始使用\t,使數(shù)據(jù)從行首的第2個制表位置輸出,即行首空8個字符位。第1個printf函數(shù)的控制符使用\n\n,使兩行數(shù)據(jù)之間有一個空行。其他非格式字符按出現(xiàn)順序原樣輸出。
(2)定義a為無符號整型變量,分別以%d、%o、%X、%u格式輸出,按照數(shù)據(jù)實際值分別以十進制、八進制、十六進制、無符號數(shù)的形式輸出。
(3)定義b為帶符號整型變量,在計算機內(nèi)部以二進制補碼形式存儲,存儲結(jié)構(gòu)如圖3.2所示。以%d控制b以十進制整數(shù)值形式輸出,即把內(nèi)部的二進制補碼轉(zhuǎn)換成二進制原碼,再轉(zhuǎn)換成十進制數(shù)值輸出;以%o、%X、%u分別控制b以八進制、十六進制和十進制無符號數(shù)形式輸出,也就是把機內(nèi)存儲補碼的符號位作數(shù)值位,分別轉(zhuǎn)換為八進制、十六進制和十進制數(shù)輸出。
圖3.2變量b值的原碼與補碼分析:從運行結(jié)果可以看出,%f控制符號使實型數(shù)據(jù)的整數(shù)部分按實際數(shù)位輸出,小數(shù)部分采用系統(tǒng)默認的6位有效數(shù)字,第6位小數(shù)位是系統(tǒng)對小數(shù)第7位按四舍五入處理后的數(shù)值。%e、%E控制符輸出的實數(shù)形式是一樣的,僅是底數(shù)的表示字母不同而已,小數(shù)部分采用規(guī)范化形式,默認6位有效數(shù)字,指數(shù)部分符號占一位,指數(shù)占3位。%g、%G控制符輸出的實數(shù)形式也是一樣的,以最小寬度輸出實型數(shù)據(jù)。
分析:
%s控制輸出對象以字符串的形式輸出,要求輸出對象是一個字符串,按字符串的實際長度輸出。
%c控制輸出對象以字符的形式輸出,輸出對象可以是字符型數(shù)據(jù),也可以是整型數(shù)據(jù)。輸出對象是整型數(shù)據(jù),則看作字符的ASCII碼,取值范圍是0~255。
從本例又可以看出,字符型數(shù)據(jù)與整型數(shù)據(jù)可以通用。字符型數(shù)據(jù)可以用%d格式輸出,則輸出的是字符的ASCII碼值。整型數(shù)據(jù)(0~255)可以用%c格式輸出,則輸出的是十進制整數(shù)ASCII碼值所表示的字符。
2.附加說明符的使用
格式字符前可以插入附加說明符或加上一個數(shù)字,控制寬度以及小數(shù)位數(shù),以說明輸出數(shù)據(jù)的類型、形式、長度、小數(shù)位數(shù)等。常用的附加說明符見表3.2。
表3.2常用的附加說明符在格式字符前插入附加說明符,能進一步控制輸出數(shù)據(jù)的格式,可更好地滿足用戶的需求。
下面對表3.1中所列的格式字符作進一步說明。
(1)?%d表示按十進制整型數(shù)據(jù)的實際長度輸出,對long型數(shù)據(jù),應(yīng)當用%ld或%Ld格式。還可以在%與格式字符之間插入一個數(shù)字,來控制數(shù)據(jù)的輸出長度,如%md、%mld、%mLd、%-md、%-mld、%-mLd等。
分析:從程序的執(zhí)行結(jié)果可以看出,在格式控制符中插入數(shù)字“10”,使輸出數(shù)據(jù)占10列寬度。不加對齊格式符(或加“+”),數(shù)據(jù)在輸出域內(nèi)右對齊。加對齊格式符“-”,數(shù)據(jù)在輸出域內(nèi)左對齊。
(2)?%f格式使實數(shù)的整數(shù)部分全部輸出,小數(shù)部分輸出6位有效數(shù)字。還可以在%與f之間插入“m.n”,來控制數(shù)據(jù)的輸出長度及小數(shù)點位數(shù)。其中,m表示數(shù)據(jù)所占列數(shù)(包括符號和小數(shù)點),n表示小數(shù)部分所占位數(shù)(不包括小數(shù)點),如果數(shù)據(jù)長度小于m,則左補空格。還可以加對齊方式字符。也可以只規(guī)定數(shù)據(jù)寬度m,或只規(guī)定小數(shù)位數(shù).n。例如%m.nf、%-m.nf、%mf、%-mf、%.nf、%-.nf等。
分析:
%f控制整數(shù)部分按實際位數(shù)輸出,系統(tǒng)默認輸出6位小數(shù),與實際小數(shù)不一樣,是由系統(tǒng)在內(nèi)存中的存儲誤差引起的。
%10.2f控制輸出數(shù)據(jù)占10個字符位、兩位小數(shù),并按默認方式右對齊,規(guī)定的兩位小數(shù)系統(tǒng)按第3位小數(shù)四舍五入處理后輸出,因?qū)嶋H的數(shù)據(jù)位數(shù)小于設(shè)定的數(shù)據(jù)寬度,所以左補空格。
%-10.2f控制的輸出數(shù)據(jù),其寬度、小數(shù)點位數(shù)同%10.2f,但要求左對齊,因?qū)嶋H的數(shù)據(jù)位數(shù)小于設(shè)定的數(shù)據(jù)寬度,所以右補空格。
%10f只設(shè)定輸出數(shù)據(jù)的寬度,因整數(shù)和小數(shù)點占4個字符位,剩下6位則作小數(shù)的輸出位數(shù)。
%.2f只設(shè)定輸出小數(shù)部分的寬度,整數(shù)部分則按實際數(shù)位輸出。
(3)?%e或%E格式下,系統(tǒng)默認6位小數(shù),指數(shù)部分占5位(如e+003),“e”占一位,指數(shù)符號占一位,指數(shù)占3位,數(shù)值按標準化指數(shù)輸出??梢栽?與e(E)之間插入“m.n”,來控制數(shù)據(jù)的輸出長度及小數(shù)點位數(shù)。其作用及使用方式同%f。也可以加對齊方式字符。
分析:
%e按系統(tǒng)默認的指數(shù)形式輸出。
%10.2e控制輸出數(shù)據(jù)占10個字符位,小數(shù)部分采用規(guī)范化形式,占2位,指數(shù)部分采用系統(tǒng)默認形式;按設(shè)定格式,數(shù)據(jù)有9個字符位,所以左補一個空格。
%-10.2e同%10.2e,只要求左對齊。
%10e只設(shè)定輸出數(shù)據(jù)的寬度,其他格式采用系統(tǒng)默認形式。
%.2e只設(shè)定輸出數(shù)據(jù)的小數(shù)點位數(shù),其他格式采用系統(tǒng)默認形式。
(4)?%s格式下,輸出字符串的實際字符??梢栽?與s之間插入“m.n”,其作用是:輸出的字符串占m列,但只截取字符串中左端n個字符輸出。如字符串本身長度大于m,即突破m的限制,將字符串全部輸出。若串長小于m,則左補空格。也可以插入對齊方式字符。例如,%m.ns、%-m.ns、%ms、%-ms。
分析:
%s控制字符串按實際長度輸出。
%15s控制字符串占15個字符位,默認右對齊;因字符串的實際長度小于15,所以左補空格。
%15.3s控制字符串占15個字符位,只截取前3個字符輸出,默認右對齊,左補12個空格。
%-15.3s同%15.3s,要求左對齊,右補12個空格。3.2.2數(shù)據(jù)格式輸入函數(shù)(scanf)
1.調(diào)用格式
scanf函數(shù)調(diào)用的一般格式為
scanf("格式控制符",地址列表);
scanf是庫函數(shù)名,作為系統(tǒng)使用的關(guān)鍵字,調(diào)用語句必須嚴格使用此函數(shù)名,否則不能實現(xiàn)調(diào)用。
格式控制字符串是用雙撇號界定的一個字符序列,用于控制輸入數(shù)據(jù)的形式和格式。格式控制字符串一般包含格式字符、非格式字符兩部分。
(1)格式字符用于指定輸入數(shù)據(jù)的形式。常用的格式字符見表3.3。格式字符以“%”開始,在%和格式字符之間也可以插入附加說明符。常用的附加說明符見表3.4。表3.3常用的格式符表3.4常用的附加說明符
(2)在格式控制字符串中出現(xiàn)非格式字符時,在輸入數(shù)據(jù)時要照樣輸入。
地址列表是取輸入數(shù)據(jù)存放變量的地址。
例如:
scanf("%d%d%d",&a,&b,&c);
2.調(diào)用執(zhí)行與數(shù)據(jù)輸入
調(diào)用執(zhí)行scanf函數(shù)時,光標停留在一個位置閃爍,等待輸入數(shù)據(jù)。用戶應(yīng)按格式控制字符串中設(shè)定的格式和地址列表中變量的順序依次輸入數(shù)據(jù)。如果格式控制字符串中沒有插入非格式字符,每輸入一個數(shù)據(jù),應(yīng)按結(jié)束鍵,計算機每取得一個數(shù)據(jù)就賦給對應(yīng)變量,直到地址列表中所有變量都取得數(shù)據(jù),則scanf函數(shù)調(diào)用結(jié)束。結(jié)束一個數(shù)據(jù)的按鍵有:“回車鍵”或“空格間”或“tab鍵”。如果格式控制字符串中插入非格式字符,作為數(shù)據(jù)的間隔符號,則每輸入一個數(shù)據(jù)應(yīng)輸入設(shè)定的間隔符號,輸入完畢則按“回車鍵”。如執(zhí)行“scanf("%d,%d,%d",&a,&b,&c);”時,則應(yīng)按如下形式輸入:
12,34,56↙
即格式控制字符串中插入的非格式字符必須照原樣輸入。
分析:3個scanf函數(shù)調(diào)用語句前都用了一個printf,輸出一個字符串信息,提示輸入數(shù)據(jù),這是為了提高界面的“友好”性;輸入數(shù)據(jù)的類型要與格式控制符對應(yīng);非格式字符要照原樣輸入;系統(tǒng)按輸入數(shù)據(jù)的順序依次賦給scanf中的變量。
3.關(guān)于scanf函數(shù)調(diào)用的幾點說明
(1)可以指定輸入數(shù)據(jù)的長度,系統(tǒng)按指定長度截取數(shù)據(jù),賦給對應(yīng)變量。例如:
scanf("%3d%3d",&a,&b);
輸入:
123456789↙
系統(tǒng)將123賦給a,456賦給b。
(2)插入“*”附加說明符,表示系統(tǒng)給變量賦值要跳過一個數(shù)據(jù)。例如:
scanf("%d%*3d%2d",&a,&b);
輸入:
12└┘345└┘67↙
系統(tǒng)將12賦給a,跳過345,將67賦給b。
(3)格式控制字符串中若包含非格式字符,這些字符要按出現(xiàn)順序照原樣輸入。例如:
scanf("%d:%d:%d",&h,&m,&s);
應(yīng)輸入:
12:23:38↙3.2.3字符輸出函數(shù)(putchar)
C語言庫函數(shù)中提供了一個用于字符輸出的函數(shù)。其調(diào)用的一般形式為
putchar(ch);
其中,ch是輸出的字符型數(shù)據(jù)對象,可以是字符常量、字符變量、整型常量和整型變量。
分析:putchar調(diào)用一次只輸出一個字符,連續(xù)調(diào)用4次則輸出4個字符,且在同一行,最后一次putchar調(diào)用輸出?'\n',實際是控制換行。
3.2.4字符輸入函數(shù)(getchar)
C語言庫函數(shù)中提供了一個用于字符輸入的函數(shù)。其調(diào)用的一般形式為
getchar();
調(diào)用執(zhí)行該函數(shù)時,光標停留在一個位置閃爍,等待輸入字符,從鍵盤上輸入一字符后按回車鍵,則將得到的字符作為返回值。
3.3順序結(jié)構(gòu)程序設(shè)計
簡單順序結(jié)構(gòu)程序設(shè)計應(yīng)考慮哪些問題?
順序結(jié)構(gòu)程序是最簡單的程序,設(shè)計時,只要把解決問題的步驟按順序列出,再寫出實現(xiàn)每一步的C語句。一般來說,一個程序要包含存放數(shù)據(jù)的變量定義、數(shù)據(jù)處理和輸出結(jié)果三個部分。
解決問題的步驟稱為算法。編程之前,算法應(yīng)用流程圖描述出來。流程圖是按約定的圖形符號繪制的。
例3.11輸入三角形的三邊長,求三角形面積。
編程思路:已知三邊,求解三角形面積的數(shù)學(xué)公式為
算法可用流程圖表示,如圖3.3所示。C語言庫函數(shù)中提供了一個求平方根的函數(shù)sqrt(floatx)。程序中要調(diào)用輸入/輸出函數(shù)和數(shù)學(xué)公式計算庫函數(shù),所以在程序開頭應(yīng)使用預(yù)處理命令將stdio.h和math.h頭文件包含進來。
圖3.3例3.11流程圖分析:根據(jù)程序中處理的數(shù)據(jù),定義實型變量a、b、c,用于存放三角形三邊數(shù)據(jù),定義實型變量s、area,用于存放中間計算結(jié)果和三角形面積。程序按順序先輸入三角形三邊數(shù)據(jù),計算三邊之和的二分之一,按公式計算面積,最后將結(jié)果輸出。
例3.12從鍵盤
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 利用信息化手段提高小學(xué)語文教育中的德育效果研究
- 2024年度金融資產(chǎn)抵押權(quán)人信用擔(dān)保合同3篇
- 2024年物聯(lián)網(wǎng)設(shè)備研發(fā)與集成服務(wù)合同
- 2025中國科學(xué)院沈陽應(yīng)用生態(tài)研究所崗位公開招聘1人(遼寧)高頻重點提升(共500題)附帶答案詳解
- 2025中國石化石油工程地球物理限公司畢業(yè)生招聘35人高頻重點提升(共500題)附帶答案詳解
- 2025中國民用航空西南地區(qū)空中交通管理局貴州分局應(yīng)屆畢業(yè)生招聘11人高頻重點提升(共500題)附帶答案詳解
- 2025中國大唐集團江西分公司所屬企業(yè)招聘12人高頻重點提升(共500題)附帶答案詳解
- 2025中國農(nóng)業(yè)科學(xué)院作物科學(xué)研究所大豆基因資源創(chuàng)新研究組科研助理公開招聘2人高頻重點提升(共500題)附帶答案詳解
- 2025下學(xué)期廣東廣州工商學(xué)院輔導(dǎo)員招聘4人高頻重點提升(共500題)附帶答案詳解
- 2025下半年廣東省東莞市事業(yè)單位歷年高頻重點提升(共500題)附帶答案詳解
- 項目四任務(wù)1:認識毫米波雷達(課件)
- 跳繩體育教案
- 四川省住宅設(shè)計標準
- 食材配送服務(wù)方案投標方案(技術(shù)方案)
- 年產(chǎn)15000噸硫酸鋁項目環(huán)評報告表
- 2024年一級注冊建筑師理論考試題庫ab卷
- 試驗檢測方案
- 小學(xué)數(shù)學(xué)班級學(xué)情分析報告
- IMCA船舶隱患排查表
- 2024年軟件開發(fā)調(diào)試合同樣本(二篇)
- 地理月考分析及改進措施初中生
評論
0/150
提交評論