版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2.1C語(yǔ)言程序的基本元素
程序設(shè)計(jì)是指把待解決的問(wèn)題抽象成與其相對(duì)應(yīng)的模型,
然后確定算法并編寫程序求解問(wèn)題,最后由機(jī)器自動(dòng)執(zhí)行的計(jì)算思維過(guò)程。
本章通過(guò)一個(gè)簡(jiǎn)單示例的計(jì)算思維過(guò)程來(lái)介紹構(gòu)成C語(yǔ)言程序的基本元素:變量、常量、數(shù)據(jù)類型、表達(dá)式等。C語(yǔ)言程序的結(jié)構(gòu)有3種:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。順序結(jié)構(gòu)是最基本、最簡(jiǎn)單的程序結(jié)構(gòu)。在順序結(jié)構(gòu)內(nèi),各語(yǔ)句按照其出現(xiàn)的先后次序依次執(zhí)行。結(jié)構(gòu)化程序的邏輯順序是先定義(或聲明)變量,再輸入數(shù)據(jù)、處理數(shù)據(jù),最后輸出數(shù)據(jù)。本節(jié)以一個(gè)簡(jiǎn)單示例為基點(diǎn),介紹構(gòu)成結(jié)構(gòu)化程序的基本元素。下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
【例2-1】用C語(yǔ)言求解圓的面積。【分析】由數(shù)學(xué)知識(shí)可知,求解圓的面積可用以下面積公式建模:S=ΠR2 (2-1)其中,S、Π、R分別表示面積、圓周率、半徑。算法的偽代碼如下:(1)輸入半徑R;(輸入數(shù)據(jù))(2)使用式(2-1)計(jì)算圓的面積S;(處理數(shù)據(jù))(3)輸出面積S。(輸出數(shù)據(jù))上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
2.1.1
變量和常量及數(shù)據(jù)類型在式(2-1)中,
有3個(gè)數(shù)據(jù)需要用C語(yǔ)言表達(dá):面積S、
圓周率Π、
半徑R。
在這些數(shù)據(jù)中,有些會(huì)出現(xiàn)變化,有些則保持不變,在C語(yǔ)言中將其分別稱為變量與常量。為了方便地實(shí)現(xiàn)對(duì)內(nèi)存中數(shù)據(jù)的存取,計(jì)算機(jī)以字節(jié)為單位對(duì)每個(gè)存儲(chǔ)單元進(jìn)行統(tǒng)一編號(hào)。這些編號(hào)被形象地稱為“內(nèi)存地址”。計(jì)算機(jī)只要知道數(shù)據(jù)所在存儲(chǔ)單元的地址,就可以很快地定位到數(shù)據(jù)存放的位置。內(nèi)存的邏輯結(jié)構(gòu)如圖2-1所示。內(nèi)存以字節(jié)作為基本的存儲(chǔ)單元,圖中的每個(gè)方格表示1字節(jié)。由于1字節(jié)能存放的數(shù)據(jù)有限,有的數(shù)據(jù)可能需要多字節(jié),因此只記住數(shù)據(jù)的起始地址是不夠的,還需要記住存放數(shù)據(jù)占用了多少字節(jié)。C語(yǔ)言通過(guò)將數(shù)據(jù)進(jìn)行分類來(lái)實(shí)現(xiàn)不同類型的數(shù)據(jù)占用不同大小的存儲(chǔ)空間。同一種類型的數(shù)據(jù)在內(nèi)存中存放時(shí)所占的字節(jié)數(shù)相同。因此,只要知道數(shù)據(jù)存放的起始地址和數(shù)據(jù)的類型,就可以非常方便地對(duì)數(shù)據(jù)進(jìn)行存取。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
1數(shù)據(jù)類型數(shù)據(jù)類型指的是用于聲明不同類型的變量(或函數(shù))的一個(gè)廣泛的系統(tǒng)。在C語(yǔ)言中,每個(gè)變量都有特定的類型,
變量的類型決定了存儲(chǔ)變量需要占用的空間,
以及如何解釋存儲(chǔ)的位模式。表2-1列出了C語(yǔ)言中常用的幾種基本數(shù)據(jù)類型。說(shuō)明:關(guān)于標(biāo)準(zhǔn)整數(shù)類型的存儲(chǔ)大小和值范圍,詳見(jiàn)附錄1。關(guān)于標(biāo)準(zhǔn)浮點(diǎn)類型的存儲(chǔ)大小、值范圍和精度,詳見(jiàn)附錄2。在例2-1中,面積S、半徑R在數(shù)學(xué)中為實(shí)數(shù),因此在程序中將S、R設(shè)置為float型變量,系統(tǒng)將為兩個(gè)變量各分配4字節(jié)的存儲(chǔ)空間,取值范圍為12×10-38~34×1038。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
2常量常量是固定值,在程序執(zhí)行期間不會(huì)改變。常量可以是任何基本數(shù)據(jù)類型,如整數(shù)常量、浮點(diǎn)常量、字符常量等。如果程序需要頻繁使用某個(gè)固定不變的數(shù)據(jù),還可以使用定義常量,將其定義為某個(gè)符號(hào)。1)整數(shù)常量整數(shù)常量可以是十進(jìn)制、八進(jìn)制或十六進(jìn)制的常量,由前綴指定基數(shù)(如0x或0X表示十六進(jìn)制,0表示八進(jìn)制)。若不帶前綴,則默認(rèn)表示十進(jìn)制。2)浮點(diǎn)常量浮點(diǎn)常量由整數(shù)部分、
小數(shù)點(diǎn)、
小數(shù)部分和指數(shù)部分組成,
可以使用小數(shù)形式或指數(shù)形式來(lái)表示浮點(diǎn)常量。當(dāng)使用小數(shù)形式表示時(shí),必須包含整數(shù)部分、小數(shù)部分,
或同時(shí)包含兩者。當(dāng)使用指數(shù)形式表示時(shí),必須包含小數(shù)點(diǎn)、指數(shù),或同時(shí)包含兩者。帶符號(hào)的指數(shù)是由e或E引入的。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
3)字符常量字符常量被括在單引號(hào)中。例如,'x'可以存儲(chǔ)在char類型的簡(jiǎn)單變量中。字符常量可以是一個(gè)普通的字符(如'x')、一個(gè)轉(zhuǎn)義序列(如'\t'),或一個(gè)通用的字符(如'\
u02C0')。在C語(yǔ)言中,有一些前面有反斜杠的特定字符,它們具有特殊的含義,用于表示換行符(\n)、制表符(\t)等。附錄3列出了常用的轉(zhuǎn)義字符。
通用字符集是由ISO(InternationalOrganizationforStandardization,
國(guó)際標(biāo)準(zhǔn)化組織)制定的ISO
10646(或稱ISO/IEC10646)標(biāo)準(zhǔn)所定義的字符編碼方式,采用4字節(jié)編碼。4)字符串常量字符串常量是用一對(duì)雙引號(hào)括起來(lái)的零個(gè)或多個(gè)字符組成的字符序列,如""和"Iama
string"。雙引號(hào)不是字符串的一部分,它只用于限定字符串。字符轉(zhuǎn)義序列同樣可以用在字符串中,如"Helloworld!\n"。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
5)常量的定義如果程序頻繁使用某個(gè)常量,那么可以將其定義為一個(gè)符號(hào)。在例2-1中,圓周率是固定不變的量,需要多次使用,可以將其定義為符號(hào)PI。在C語(yǔ)言中,常量定義稱為宏替換,
即用一個(gè)指定的標(biāo)識(shí)符來(lái)代表一個(gè)替換序列。
定義常量的方式是使用#define預(yù)處理器。
例如,
圓周率的定義如下:#definePI31415926定義后,在程序中就可以使用PI來(lái)代替31415926。如果需要更高精度的圓周率,
則只需修改常量定義。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
3變量變量是指在程序運(yùn)行時(shí)其值可以改變的量。變量的名稱(即變量名)由字母、數(shù)字和下劃線字符組成。它必須以字母或下劃線開(kāi)頭,且區(qū)分大寫字母和小寫字母。變量的功能就是存儲(chǔ)數(shù)據(jù)。操作系統(tǒng)為變量分配存儲(chǔ)空間,其空間存儲(chǔ)的數(shù)據(jù)是可變的。對(duì)變量的操作均是對(duì)變量所表示的存儲(chǔ)空間的操作。1)變量的定義(或聲明)變量的定義是指,指定一個(gè)數(shù)據(jù)類型,并包含該類型的一個(gè)(或多個(gè))變量的列表。定義變量的格式如下:類型標(biāo)識(shí)符變量名;在例2-1中,對(duì)變量S和R的定義如下:floatS,R;該語(yǔ)句說(shuō)明,系統(tǒng)為兩個(gè)變量各分配了4字節(jié)的存儲(chǔ)空間,其空間存放單精度浮點(diǎn)值的數(shù)據(jù),其名稱分別為S和R。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
2)變量的初始化變量被定義后,其存儲(chǔ)空間的數(shù)值是不確定的。要想保證程序能夠正確運(yùn)行,則在使用變量前應(yīng)對(duì)其進(jìn)行賦值。賦值的方式有以下兩種:(1)在變量定義的同時(shí)給它指定初始值。(2)在變量使用前進(jìn)行賦值。第一種賦值方式又稱為變量的初始化,其一般形式如下:類型標(biāo)識(shí)符變量名1=初值1,變量名2=初值2,;在例2-1中,對(duì)變量S和R定義如下:floatS=0,R=50;如果初值的類型和變量的類型不一致,編譯器就會(huì)采用賦值運(yùn)算的規(guī)則自動(dòng)進(jìn)行類型轉(zhuǎn)換。例如,在語(yǔ)句“floatS=0”中,系統(tǒng)將整數(shù)0轉(zhuǎn)換為浮點(diǎn)型。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
2.1.2
表達(dá)式C語(yǔ)言的一個(gè)主要特征就是它更多地強(qiáng)調(diào)表達(dá)式而不是語(yǔ)句。表達(dá)式是一個(gè)表示如何計(jì)算的公式。表達(dá)式由變量、常量與運(yùn)算符組成。1運(yùn)算符C語(yǔ)言運(yùn)算符有賦值運(yùn)算符、算術(shù)運(yùn)算符、逗號(hào)運(yùn)算符、關(guān)系運(yùn)算符、
邏輯運(yùn)算符、
位運(yùn)算符等。接下來(lái),以賦值運(yùn)算符、算術(shù)運(yùn)算符和逗號(hào)運(yùn)算符為例,
說(shuō)明運(yùn)算符的運(yùn)算規(guī)則。1)賦值運(yùn)算符賦值運(yùn)算符可分為簡(jiǎn)單賦值運(yùn)算符和復(fù)合賦值運(yùn)算符。簡(jiǎn)單賦值運(yùn)算符用“=”表示,它是一個(gè)二元運(yùn)算符。例如,表達(dá)式“a=1+2”(假定這里的a為int型變量)的作用是計(jì)算表達(dá)式“1+2”的值,然后將該值賦值給變量a,即將該值存入變量a的存儲(chǔ)空間。此時(shí),變量a的值為3。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
賦值運(yùn)算符的左操作數(shù)稱為左值,右操作數(shù)是一個(gè)表達(dá)式。左值是引用內(nèi)存中一個(gè)命名的存儲(chǔ)單元的表達(dá)式。變量就是目前所知的左值。復(fù)合賦值運(yùn)算符有:+=、
-+、
?=、/=、
%=、<<=、>>=、
&=、
^=、
|=。
它們可以在變量原有值的基礎(chǔ)上改變變量的值。例如:a+=1等價(jià)于a=a+1b-=c+1等價(jià)于b=b-(c+1)i?=j/k等價(jià)于i=i?(j/k)上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
2)算術(shù)運(yùn)算符表2-2列出了C語(yǔ)言常用的算術(shù)運(yùn)算符及其功能描述。只有一個(gè)操作數(shù)的運(yùn)算符稱為一元運(yùn)算符或單目運(yùn)算符,
有兩個(gè)操作數(shù)的運(yùn)算符稱為二元運(yùn)算符或雙目運(yùn)算符,
有三個(gè)操作數(shù)的運(yùn)算符稱為三元運(yùn)算符或三目運(yùn)算符,依次類推。例如,正號(hào)運(yùn)算符(+)、
負(fù)號(hào)運(yùn)算符(-)、自增運(yùn)算符(++)、自減運(yùn)算符(--)為一元運(yùn)算符,而運(yùn)算符+、-、?、/、%為二元運(yùn)算符。自增、自減運(yùn)算符是一元運(yùn)算符,既可以作為前綴運(yùn)算符,也可以作為后綴運(yùn)算符。
例如,++a、--a使用前綴運(yùn)算符,a++、a--使用后綴運(yùn)算符。這兩種形式都可以使變量的值加1或減1。它們的區(qū)別是:前綴自增、自減運(yùn)算先使變量的值加1或減1,然后在表達(dá)式中引用變量的值;后綴自增、自減運(yùn)算先在表達(dá)式中引用變量的值,然后使變量的值加1或減1。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
例如:(1)假設(shè)a=1,
執(zhí)行b=
++a后,
a的值為2,
而且表達(dá)式++a的值也為2,
變量b被賦值為2。(2)假設(shè)a=1,
執(zhí)行b=a++后,
a的值為2,
而表達(dá)式a++的值為1,
變量b被賦值為1。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
3)逗號(hào)運(yùn)算符C語(yǔ)言提供的逗號(hào)運(yùn)算符用于連接兩個(gè)表達(dá)式。
逗號(hào)運(yùn)算符用符號(hào)“,”
表示。
形如“左表達(dá)式,右表達(dá)式”的式子稱為“逗號(hào)表達(dá)式”。由逗號(hào)運(yùn)算符連接的兩個(gè)表達(dá)式從左向右依次計(jì)算。先計(jì)算左表達(dá)式的值,并且丟棄該值,再計(jì)算右表達(dá)式的值。逗號(hào)表達(dá)式的值和類型均取于右表達(dá)式的值和類型。例如,表達(dá)式“1+2,3+4”的值為7。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
2運(yùn)算符的優(yōu)先級(jí)和結(jié)合性在數(shù)學(xué)中,算術(shù)運(yùn)算執(zhí)行“先進(jìn)行乘除運(yùn)算,后進(jìn)行加減運(yùn)算”的基本準(zhǔn)則。而在C語(yǔ)言中,運(yùn)算符的計(jì)算規(guī)則細(xì)化為運(yùn)算符的優(yōu)先級(jí)與結(jié)合性。C語(yǔ)言中的運(yùn)算符優(yōu)先級(jí)共分15級(jí),1級(jí)最高,15級(jí)最低。前述運(yùn)算符的優(yōu)先級(jí)和結(jié)合方向如表2-3所示,C語(yǔ)言所有運(yùn)算符的優(yōu)先級(jí)和結(jié)合性可參考附錄4。當(dāng)表達(dá)式中含有多個(gè)優(yōu)先級(jí)相同的運(yùn)算符時(shí),運(yùn)算符的結(jié)合性開(kāi)始起作用。如果運(yùn)算符是從左向右結(jié)合的,則稱這種運(yùn)算符是左結(jié)合的。如果運(yùn)算符是從右向左結(jié)合的,則稱這種運(yùn)算符是右結(jié)合的。二元算術(shù)運(yùn)算符都是左結(jié)合的,一元算術(shù)運(yùn)算符都是右結(jié)合的。后綴自增、自減運(yùn)算符的結(jié)合方向是自左向右;前綴自增、自減運(yùn)算符的結(jié)合方向是自右向左。逗號(hào)運(yùn)算符是左結(jié)合的。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
3表達(dá)式語(yǔ)句表達(dá)式是運(yùn)算的組合,是一種運(yùn)算組合式。在例2-1中,面積的C語(yǔ)言表達(dá)式為“S=PI?R?R”。
該表達(dá)式為賦值表達(dá)式,
實(shí)現(xiàn)將右邊算法表達(dá)式的值存入變量S的存儲(chǔ)單元。在C語(yǔ)言中,任何表達(dá)式都可以通過(guò)增加分號(hào)而成為一條語(yǔ)句。例如:i++;執(zhí)行該語(yǔ)句,將使變量i的值加1。又如:j=++i;執(zhí)行該語(yǔ)句,將使變量i的值加1,然后取出變量i加1后的值,賦值給變量j。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
2.1.3
數(shù)據(jù)的輸入與輸出數(shù)據(jù)的輸入/輸出是一個(gè)程序必須要考慮的問(wèn)題。在C語(yǔ)言中,數(shù)據(jù)的輸入/輸出工作由相應(yīng)的庫(kù)函數(shù)來(lái)實(shí)現(xiàn)。C語(yǔ)言要求在調(diào)用函數(shù)前對(duì)被調(diào)用的函數(shù)進(jìn)行聲明,調(diào)用庫(kù)函數(shù)也應(yīng)如此,
這可以通過(guò)包含相應(yīng)的頭文件(headfile)來(lái)完成。
C語(yǔ)言的標(biāo)準(zhǔn)函數(shù)庫(kù)被分為15部分,每一部分由一個(gè)頭文件來(lái)描述,
頭文件中包含了數(shù)據(jù)類型的定義、宏定義和相關(guān)函數(shù)的聲明。本章介紹的四個(gè)函數(shù)都在stdioh頭文件中進(jìn)行描述。因此,在程序開(kāi)頭包含stdioh文件即可。方法如下:#include<stdioh>或#include"stdioh"上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
1
字符輸出———putchar函數(shù)putchar函數(shù)可以向標(biāo)準(zhǔn)輸出設(shè)備(通常指顯示器)輸出一個(gè)字符。調(diào)用方法:putchar(ch); /?參數(shù)ch表示要輸出的字符?/例如:putchar('A');putchar(65);putchar('\n');charch='a'; putchar(ch);上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
2
字符輸入———getchar函數(shù)getchar函數(shù)從標(biāo)準(zhǔn)輸入設(shè)備(通常指鍵盤)讀取一個(gè)字符。調(diào)用方法:charch;ch=getchar();調(diào)用該函數(shù)時(shí),不需要實(shí)際參數(shù),該函數(shù)的返回值為讀取的字符,如果讀取出錯(cuò),則返回值為EOF(-1)。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
3
格式化輸出———printf函數(shù)printf函數(shù)輸出格式字符串的內(nèi)容,并在格式字符串的指定位置插入所要輸出的數(shù)據(jù)。調(diào)用方法:printf(格式字符串,表達(dá)式1,表達(dá)式2,)例如,在例2-1中,可將面積簡(jiǎn)單地格式化輸出:printf("theareais%f\n",S)printf函數(shù)是一個(gè)多參數(shù)函數(shù)。第1個(gè)參數(shù)是格式字符串,它說(shuō)明數(shù)據(jù)的輸出格式和最后的輸出效果,是必須有的參數(shù),
“theareais%f\n”
為格式字符串;從第2個(gè)參數(shù)開(kāi)始的其他參數(shù)給出要輸出的數(shù)據(jù),每個(gè)輸出數(shù)據(jù)可由一個(gè)表達(dá)式給出。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
格式字符串包含兩種內(nèi)容。一種是普通字符(包括字符轉(zhuǎn)義序列),如“theareais%f\n”中的“theareais”和轉(zhuǎn)義字符“\n”(表示換行)是普通字符,這些內(nèi)容直接輸出。另一種內(nèi)容是格式說(shuō)明符,如“theareais%f\n”中的“%f”,每個(gè)格式說(shuō)明符指定一種輸出數(shù)據(jù)的格式。格式說(shuō)明符起到占位符的作用,不被輸出,而是由相應(yīng)的輸出數(shù)據(jù)來(lái)替換它。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
格式說(shuō)明符的格式:%[標(biāo)志字符][最小寬度][精度][長(zhǎng)度修飾符]轉(zhuǎn)換說(shuō)明符(1)格式說(shuō)明符必須以字符“%”
開(kāi)始,
以一個(gè)轉(zhuǎn)換說(shuō)明符結(jié)束。
常用的轉(zhuǎn)換說(shuō)明符包括d、i、o、x、u、c、s、f、e、g。設(shè)已知int_A=1,
int_B=-1,
char_C='s',string_D="Hello",
float_F=40f,
double_E=31415926,printf函數(shù)的格式輸出如表2-4所示。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
(2)標(biāo)志字符可以是一個(gè)或多個(gè)以下字符的組合:-、
+、
#、
0。
這部分內(nèi)容是可選的。標(biāo)志-:指示轉(zhuǎn)換后的結(jié)果在輸出域中左對(duì)齊(默認(rèn)右對(duì)齊)。標(biāo)志+:指示有符號(hào)數(shù)轉(zhuǎn)換后的結(jié)果帶正號(hào)或負(fù)號(hào)。標(biāo)志#:指示對(duì)于轉(zhuǎn)換說(shuō)明符o,
轉(zhuǎn)換結(jié)果將增加前綴0;
對(duì)于轉(zhuǎn)換說(shuō)明符x或X,轉(zhuǎn)換結(jié)果將增加前綴0x或0X。標(biāo)志0:指示對(duì)于轉(zhuǎn)換說(shuō)明符d、
i、
o、
u、
x(X)、
e(E)、
f、
g(G),
前導(dǎo)零將用于填充域?qū)挾惶畛淇崭褡址H魳?biāo)志0和標(biāo)志-同時(shí)出現(xiàn),則標(biāo)志0不起作用。(3)最小寬度的形式為m,
m代表一個(gè)十進(jìn)制整數(shù)。
這部分內(nèi)容是可選的。(4)精度的形式為n,
其中n代表一個(gè)十進(jìn)制整數(shù)。
這部分內(nèi)容是可選的。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
(5)長(zhǎng)度修飾符是以下字符中的一個(gè):l、
L。
這部分內(nèi)容是可選的。修飾符l:用于輸出longint或unsignedlongint類型的數(shù)據(jù),
它可用在轉(zhuǎn)換說(shuō)明符的d、i、o、u、x或X前面。修飾符L:用于輸出long
double類型的數(shù)據(jù),
它可用在轉(zhuǎn)換說(shuō)明符f、
e(E)、g(G)的前面。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
4
格式化輸入———scanf函數(shù)scanf函數(shù)按照格式字符串所描述的輸入模式,從用戶輸入的內(nèi)容當(dāng)中獲得需要的數(shù)據(jù),然后將這些數(shù)據(jù)存入相應(yīng)的變量。調(diào)用方法:scanf(格式字符串,地址1,地址2,)其中,第1個(gè)參數(shù)是一個(gè)字符串,它指定scanf函數(shù)可以接收的輸入數(shù)據(jù)的格式。從第2個(gè)參數(shù)開(kāi)始的后續(xù)參數(shù)給出了用于存放輸入數(shù)據(jù)的存儲(chǔ)空間的地址。為了得到變量的地址,需要使用地址運(yùn)算符“&”,該運(yùn)算符是一元運(yùn)算符。&a、&b的含義是得到變量a、b的存儲(chǔ)空間的地址,這樣才符合scanf函數(shù)對(duì)參數(shù)的要求。上一頁(yè)下一頁(yè)返回2.1C語(yǔ)言程序的基本元素
設(shè)int_A=1,
int_B=
-1,
char_C='s',
string_D="Hello",
float_F=40f,
double_E=31415926,scanf函數(shù)的格式輸出如表2-5所示。在例2-1中,
半徑R,
面積S為實(shí)數(shù),
語(yǔ)句“scanf("R=%f",&R)”
實(shí)現(xiàn)接收輸入的半徑,
語(yǔ)句“printf("S=%f",S)”
實(shí)現(xiàn)向屏幕輸出圓的面積。上一頁(yè)返回2.2順序結(jié)構(gòu)程序設(shè)計(jì)
在順序結(jié)構(gòu)程序中,沒(méi)有選擇語(yǔ)句和循環(huán)語(yǔ)句,程序的語(yǔ)句依次執(zhí)行。順序結(jié)構(gòu)程序的結(jié)構(gòu)簡(jiǎn)單、層次分明,邏輯順序清楚、明晰。由第1章的程序helloc可知,一個(gè)C程序由注釋、預(yù)處理命令和主程序組成。主程序由數(shù)據(jù)輸入、數(shù)據(jù)處理和數(shù)據(jù)輸出三個(gè)步驟構(gòu)成,由一組函數(shù)完成。每個(gè)程序至少包含一個(gè)函數(shù),即主函數(shù)main,而每個(gè)函數(shù)由一系列語(yǔ)句組成。下一頁(yè)返回2.2順序結(jié)構(gòu)程序設(shè)計(jì)
2.2.1
語(yǔ)句C語(yǔ)言中的語(yǔ)句是程序在執(zhí)行時(shí)向計(jì)算機(jī)發(fā)出的指令,語(yǔ)句給出了計(jì)算機(jī)要執(zhí)行的操作。預(yù)處理命令、變量定義等內(nèi)容不算作語(yǔ)句。語(yǔ)句出現(xiàn)在函數(shù)體內(nèi),
一個(gè)函數(shù)的執(zhí)行過(guò)程就是依次執(zhí)行函數(shù)體內(nèi)語(yǔ)句的過(guò)程,這些語(yǔ)句用于實(shí)現(xiàn)函數(shù)的功能。在C程序中,分號(hào)是語(yǔ)句結(jié)束符,也就是說(shuō),每條語(yǔ)句必須以分號(hào)結(jié)束。它表明一個(gè)邏輯實(shí)體的結(jié)束。C語(yǔ)言的基本語(yǔ)句包括聲明語(yǔ)句、空語(yǔ)句、復(fù)合語(yǔ)句、
控制語(yǔ)句、
表達(dá)式語(yǔ)句、函數(shù)調(diào)用語(yǔ)句等基本語(yǔ)句??照Z(yǔ)句是只有一個(gè)分號(hào)的語(yǔ)句。復(fù)合語(yǔ)句是用一對(duì){}包含的若干條語(yǔ)句??刂普Z(yǔ)句是能完成一定程序流程控制功能的語(yǔ)句。在表達(dá)式后面增加分號(hào)構(gòu)成表達(dá)式語(yǔ)句。函數(shù)調(diào)用語(yǔ)句既可以調(diào)用自定義函數(shù)(簡(jiǎn)稱“函數(shù)”),也可以調(diào)用標(biāo)準(zhǔn)函數(shù)(庫(kù)函數(shù))。本章不涉及控制語(yǔ)句。上一頁(yè)下一頁(yè)返回2.2順序結(jié)構(gòu)程序設(shè)計(jì)
在例2-1中,聲明語(yǔ)句如下:floatS=0,R=0;表達(dá)式語(yǔ)句如下:S=PI?R?R;函數(shù)調(diào)用語(yǔ)句如下:scanf("%f",&R);printf("S=%f",S);上一頁(yè)下一頁(yè)返回2.2順序結(jié)構(gòu)程序設(shè)計(jì)
2.2.2
構(gòu)造程序C程序主要包括預(yù)處理器指令、函數(shù)、變量、語(yǔ)句、注釋等等。本節(jié)構(gòu)造的程序不包含自定義函數(shù)部分。例2-1的程序如下:上一頁(yè)下一頁(yè)返回2.2順序結(jié)構(gòu)程序設(shè)計(jì)
例2-1可以應(yīng)用帶參數(shù)的宏替換來(lái)完成,其一般形式如下:#define標(biāo)識(shí)符(形式參數(shù)列表)替換序列其中,形式參數(shù)列表可以包含若干個(gè)參數(shù)(參數(shù)之間用逗號(hào)分隔),每個(gè)參數(shù)均為一個(gè)標(biāo)識(shí)符。這些參數(shù)可以在替換序列中出現(xiàn)多次。上一頁(yè)下一頁(yè)返回2.2順序結(jié)構(gòu)程序設(shè)計(jì)
例2-1應(yīng)用帶參數(shù)的宏替換的程序如下:【練習(xí)】編程實(shí)現(xiàn)求圓的周長(zhǎng)與球的體積。上一頁(yè)下一頁(yè)返回2.2順序結(jié)構(gòu)程序設(shè)計(jì)
2.2.3
編程風(fēng)格每個(gè)開(kāi)發(fā)者都有自己的編程風(fēng)格,有的代碼寫得漂亮,結(jié)構(gòu)清晰,易讀易理解;
有的代碼寫得散亂,易讀性不強(qiáng),讓人如讀天書;有的代碼寫得錯(cuò)誤頻出,調(diào)試排錯(cuò)耗時(shí)太久。初學(xué)者應(yīng)該遵循以下四條規(guī)則,形成好的編程風(fēng)格。(1)變量名、
函數(shù)名等要做到見(jiàn)名知意。(2)在定義變量后要對(duì)其初始化,
也就是要賦初值。(3)代碼段格式整齊,
有縮進(jìn)。(4)單行語(yǔ)句不要過(guò)長(zhǎng)。上一頁(yè)返回2.3實(shí)訓(xùn)與實(shí)訓(xùn)指導(dǎo)
實(shí)訓(xùn)1
字母大小寫的轉(zhuǎn)換編寫程序,將一個(gè)大寫字母轉(zhuǎn)換成對(duì)應(yīng)的小寫字母。1實(shí)訓(xùn)分析首先,了解字符編碼與數(shù)據(jù)類型轉(zhuǎn)換的相關(guān)知識(shí)。然后,書寫偽代碼。最后,使用C語(yǔ)言編寫程序。1)字符編碼字母、數(shù)字、標(biāo)點(diǎn)符號(hào)等各種字符必須按特定的規(guī)則轉(zhuǎn)換為二進(jìn)制編碼才能存入計(jì)算機(jī)。在計(jì)算機(jī)系統(tǒng)中,大部分采用ASCII(AmericanStandardCodeforInformationInterchange,美國(guó)標(biāo)準(zhǔn)信息交換代碼)字符編碼標(biāo)準(zhǔn)。
每個(gè)字符的編碼存儲(chǔ)在一個(gè)字節(jié)(8位二進(jìn)制位)中,規(guī)定字節(jié)的最高位為0,余下的7位給出字符的編碼,這樣就可以給出128(即27)個(gè)編碼,用于表示128?jìng)€(gè)不同的字符。在表2-6中列出了部分ASCII編碼值及其對(duì)應(yīng)的字符。下一頁(yè)返回2.3實(shí)訓(xùn)與實(shí)訓(xùn)指導(dǎo)
2)字符型與整型的轉(zhuǎn)換字符變量中存放的是字符的ASCII碼值。例如,若某字符變量當(dāng)前存放的數(shù)據(jù)為字符'a',
那么在內(nèi)存中存放的是97('a'的ASCII碼值)。字符型值向整型值轉(zhuǎn)換時(shí),unsignedchar類型值將被作為無(wú)符號(hào)整數(shù)進(jìn)行處理。char類型值既可以作為有符號(hào)整數(shù)也可以作為無(wú)符號(hào)整數(shù)進(jìn)行處理,多數(shù)計(jì)算機(jī)系統(tǒng)將其作為有符號(hào)整數(shù)進(jìn)行處理的。整型值向字符型值轉(zhuǎn)換時(shí),若要轉(zhuǎn)換的值在字符型的可表示范圍內(nèi),則其值不變;否則,將得到一個(gè)無(wú)意義的值。運(yùn)用字符的語(yǔ)法知識(shí),算法的偽代碼如下:(1)輸入字符C;(2)將字符C的ASCII碼值變?yōu)閷?duì)應(yīng)的小寫字母ASCII碼值;(3)輸出字符c。上一頁(yè)下一頁(yè)返回2.3實(shí)訓(xùn)與實(shí)訓(xùn)指導(dǎo)
程序的代碼如下:上一頁(yè)下一頁(yè)返回2.3實(shí)訓(xùn)與實(shí)訓(xùn)指導(dǎo)
2實(shí)訓(xùn)練習(xí)(1)將一個(gè)小寫字母轉(zhuǎn)換成對(duì)應(yīng)的大寫字母。(2)輸入一個(gè)字符,
輸出對(duì)應(yīng)的ASCII碼值。(3)下列程序的執(zhí)行結(jié)果是什么?為什么?上一頁(yè)下一頁(yè)返回2.3實(shí)訓(xùn)與實(shí)訓(xùn)指導(dǎo)
實(shí)訓(xùn)2
兩數(shù)相除編寫程序?qū)崿F(xiàn)兩個(gè)整數(shù)相除,如果有余數(shù),則輸出余數(shù)。1實(shí)訓(xùn)分析首先,了解使用算術(shù)運(yùn)算符的注意事項(xiàng)及數(shù)據(jù)類型之間的轉(zhuǎn)換。然后,書寫偽代碼。
最后,使用C語(yǔ)言編寫程序。1)使用算術(shù)運(yùn)算符的注意事項(xiàng)(1)運(yùn)算符“%”
表示模運(yùn)算(mod)或取余運(yùn)算(rem)。
表達(dá)式“a%b”
的值是a除以b所得的余數(shù)。例如,10%2的值為0,10%3的值為1。(2)運(yùn)算符“%”
要求兩個(gè)操作數(shù)必須是整數(shù),
其他運(yùn)算符允許操作數(shù)可以是整數(shù)或?qū)崝?shù)。上一頁(yè)下一頁(yè)返回2.3實(shí)訓(xùn)與實(shí)訓(xùn)指導(dǎo)
(3)當(dāng)操作數(shù)均為整型時(shí),
運(yùn)算符“/”
的計(jì)算結(jié)果也是整型(在C語(yǔ)言中,
算術(shù)運(yùn)算結(jié)果的類型和操作數(shù)的類型相同),結(jié)果是通過(guò)舍去小數(shù)部分來(lái)得到。所以,1/2的結(jié)果是0而不是05,要想結(jié)果為05,可以使用10/2或1/20或10/20。(4)避免運(yùn)算符“/”
和運(yùn)算符“%”
的第2個(gè)操作數(shù)為0。(5)對(duì)于運(yùn)算符“/”
和運(yùn)算符“%”,
若兩個(gè)操作數(shù)均為正數(shù),
則計(jì)算結(jié)果比較容易確定;若操作數(shù)中含有負(fù)數(shù),則計(jì)算結(jié)果由程序的運(yùn)行環(huán)境決定。上一頁(yè)下一頁(yè)返回2.3實(shí)訓(xùn)與實(shí)訓(xùn)指導(dǎo)
2)數(shù)據(jù)類型的隱式轉(zhuǎn)換C語(yǔ)言允許在表達(dá)式中混合多種類型的數(shù)據(jù)進(jìn)行運(yùn)算,此時(shí)需要進(jìn)行一般算術(shù)轉(zhuǎn)換。轉(zhuǎn)換的基本策略是將較小的數(shù)據(jù)類型轉(zhuǎn)換成相同或較大的數(shù)據(jù)類型。通常,算術(shù)轉(zhuǎn)換需要先進(jìn)行整型提升,表達(dá)式中的char、short、int、unsignedint類型的數(shù)據(jù)如果在int型的取值范圍內(nèi),就轉(zhuǎn)換成int型,否則轉(zhuǎn)換成unsignedint型。整型提升后的結(jié)果和原值相等。然后,按以下規(guī)則進(jìn)行轉(zhuǎn)換:(1)若一個(gè)操作數(shù)是longdouble類型,
則另一個(gè)操作數(shù)將轉(zhuǎn)換為longdouble類型。(2)若一個(gè)操作數(shù)是double類型,
則另一個(gè)操作數(shù)將轉(zhuǎn)換為double類型。上一頁(yè)下一頁(yè)返回2.3實(shí)訓(xùn)與實(shí)訓(xùn)指導(dǎo)
(3)若一個(gè)操作數(shù)是float類型,
則另一個(gè)操作數(shù)將轉(zhuǎn)換為float類型。(4)若一個(gè)操作數(shù)是unsignedlongint類型,
則另一個(gè)操作數(shù)將轉(zhuǎn)換為unsignedlongint類型。(5)若一個(gè)操作數(shù)是longint類型,
則另一個(gè)操作數(shù)將轉(zhuǎn)換為longint類型。(6)若一個(gè)操作數(shù)是unsignedint類型,
則另一個(gè)操作數(shù)將轉(zhuǎn)換為unsignedint類型。賦值運(yùn)算類型轉(zhuǎn)換的基本原則:將賦值運(yùn)算符右邊表達(dá)式的值轉(zhuǎn)換成賦值運(yùn)算符左邊變量的類型。上一頁(yè)下一頁(yè)返回2.3實(shí)訓(xùn)與實(shí)訓(xùn)指導(dǎo)
3)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符為了便于程序設(shè)計(jì)人員更靈活地控制類型轉(zhuǎn)換,C語(yǔ)言提供了強(qiáng)制類型轉(zhuǎn)換運(yùn)算符。強(qiáng)制轉(zhuǎn)換表達(dá)式類型的格式:(類型名)表達(dá)式強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的作用是將表達(dá)式的值轉(zhuǎn)換成指定類型的值。
例如,(int)123的結(jié)果是整數(shù)12,此結(jié)果通過(guò)將123轉(zhuǎn)換成整型值而得到。強(qiáng)制類型轉(zhuǎn)換運(yùn)算符是一元運(yùn)算符,
其優(yōu)先級(jí)為2級(jí)。
例如,
表達(dá)式“(float)1/2”
等價(jià)于“((float)1)/2”,
先將整數(shù)1轉(zhuǎn)換成浮點(diǎn)數(shù),
然后將進(jìn)行浮點(diǎn)數(shù)的除法運(yùn)算,
結(jié)果是05。上一頁(yè)下一頁(yè)返回2.3實(shí)訓(xùn)與實(shí)訓(xùn)指導(dǎo)
運(yùn)用上述語(yǔ)法知識(shí),算法的偽代碼如下:(1)輸入被除數(shù)dividend,
除數(shù)divisor;(2)運(yùn)用運(yùn)算符“/”
求商quotient,
運(yùn)用運(yùn)算符“%”
求余數(shù)remainder;(3)輸出結(jié)果。上一頁(yè)下一頁(yè)返回2.3實(shí)訓(xùn)與實(shí)訓(xùn)指導(dǎo)
程序的代碼如下:上一頁(yè)下一頁(yè)返回2.3實(shí)訓(xùn)與實(shí)訓(xùn)指導(dǎo)
2實(shí)訓(xùn)練習(xí)(1)如果要輸出兩個(gè)整數(shù)相除的實(shí)數(shù)結(jié)果,
應(yīng)該如何改寫?(2)使用C語(yǔ)言編寫實(shí)現(xiàn)如下功能的程序:輸入3位數(shù)的整數(shù)m,按逆序輸出m的3位數(shù)。例如,輸入“456”,輸出“654”。上一頁(yè)下一頁(yè)返回2.3實(shí)訓(xùn)與實(shí)訓(xùn)指導(dǎo)
實(shí)訓(xùn)3
交換兩個(gè)數(shù)的值編寫程序讀取兩個(gè)實(shí)數(shù),然后交換變量的值并輸出。1實(shí)訓(xùn)分析交換兩個(gè)變量的數(shù)值相當(dāng)于交換兩個(gè)水杯中的飲料,需要第三個(gè)杯子作為臨時(shí)容器。首先,將第1個(gè)杯子的飲料倒入第3個(gè)杯子。然后,將第2個(gè)杯子的飲料倒入第1個(gè)杯子。最后,將第3個(gè)杯子的飲料倒入第2個(gè)杯子。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年宣威市發(fā)展和改革局招聘編制外工作人員備考題庫(kù)(5人)及參考答案詳解
- 安全生產(chǎn)管理與培訓(xùn)計(jì)劃
- 商業(yè)合作對(duì)接與資源共享活動(dòng)方案
- 彭水隔墻施工方案(3篇)
- 護(hù)坡大修施工方案(3篇)
- 改車位施工方案(3篇)
- 施工方案審批格式(3篇)
- 旗桿廠家施工方案(3篇)
- 木板樁施工方案(3篇)
- 水泥透水施工方案(3篇)
- 2026四川巴中市通江產(chǎn)業(yè)投資集團(tuán)有限公司及下屬企業(yè)招聘11人備考題庫(kù)(含答案詳解)
- 數(shù)據(jù)資產(chǎn)價(jià)值評(píng)估模型構(gòu)建與分析
- 市政污水管道有限空間作業(yè)方案
- 2026中國(guó)電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會(huì)成熟人才招聘?jìng)淇碱}庫(kù)及1套參考答案詳解
- 2026年秦皇島煙草機(jī)械有限責(zé)任公司招聘(21人)考試參考試題及答案解析
- 職場(chǎng)關(guān)鍵能力課件 4 時(shí)間管理
- 2026年甘肅平?jīng)龀缧趴h機(jī)關(guān)事業(yè)單位選調(diào)30人筆試備考題庫(kù)及答案解析
- 2026及未來(lái)5年中國(guó)電腦顯卡行業(yè)市場(chǎng)運(yùn)行態(tài)勢(shì)及發(fā)展前景研判報(bào)告
- 智能體開(kāi)發(fā)技術(shù)(Python+FastAPI版) 課件 第一章 大模型與智能體開(kāi)發(fā)
- 2025年河北省高考?xì)v史真題卷(含答案與解析)
- 少數(shù)民族語(yǔ)言怒語(yǔ)數(shù)字化傳播與年輕一代傳承意愿激發(fā)研究畢業(yè)論文答辯
評(píng)論
0/150
提交評(píng)論