版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
程序設(shè)計(jì)的數(shù)據(jù)基礎(chǔ)2.1程序設(shè)計(jì)中數(shù)據(jù)的表示2.2表達(dá)式運(yùn)算基礎(chǔ)2.3數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)程序設(shè)計(jì)的數(shù)據(jù)基礎(chǔ)2.1程序設(shè)計(jì)中數(shù)據(jù)的表示
程序包含兩個(gè)方面的內(nèi)容:
數(shù)據(jù)描述和算法描述2.1數(shù)據(jù)類型程序設(shè)計(jì)中數(shù)據(jù)的表示2.1.1程序設(shè)計(jì)中數(shù)據(jù)對(duì)象的命名方法 數(shù)據(jù)用來描述程序所處理的對(duì)象。為了能夠在程序中處理數(shù)據(jù)對(duì)象,數(shù)據(jù)對(duì)象需要用名字來表示。C語言中使用標(biāo)識(shí)符來為數(shù)據(jù)對(duì)象命名,標(biāo)識(shí)符的命名規(guī)則:構(gòu)成標(biāo)識(shí)符的字符只能是字母、數(shù)字和下劃線;標(biāo)識(shí)符中第一個(gè)字符必須是字母或下劃線;構(gòu)成標(biāo)識(shí)符時(shí)都要區(qū)分字母的大小寫;構(gòu)成標(biāo)識(shí)符的字符個(gè)數(shù)(標(biāo)識(shí)符長(zhǎng)度)與所使用的環(huán)境相關(guān),C89標(biāo)準(zhǔn)中規(guī)定可以區(qū)分的最大長(zhǎng)度是31個(gè)字符,C99標(biāo)準(zhǔn)中規(guī)定可以區(qū)分的最大長(zhǎng)度是63個(gè)字符。程序設(shè)計(jì)中數(shù)據(jù)的表示C語言中的標(biāo)識(shí)符分為兩大類:
1.系統(tǒng)保留字
共37個(gè),保留字(關(guān)鍵字)是一類特殊的標(biāo)識(shí)符,是C語言中具有特定嚴(yán)格意義的詞匯,任何情況下都不能用作用戶標(biāo)識(shí)符(附錄B)。
2.用戶標(biāo)識(shí)符即程序員為程序中數(shù)據(jù)對(duì)象的命名。
A要符合標(biāo)識(shí)符的命名規(guī)則;B既要有意義又要便于閱讀;C同時(shí)要注意避免在含義上或書寫時(shí)引起混淆。程序設(shè)計(jì)中數(shù)據(jù)的表示2.1.1程序設(shè)計(jì)中數(shù)據(jù)對(duì)象的命名方法
合法自定義標(biāo)識(shí)符的例子:
a b1 file_name_buf 不合法自定義標(biāo)識(shí)符例子及錯(cuò)誤原因:
123abc /*不是以英文字母開頭*/float /*與系統(tǒng)保留字同名*/up.to /*標(biāo)識(shí)符中出現(xiàn)了非法字符“.”*/zhangsan/*標(biāo)識(shí)符中間出現(xiàn)了非法字符空格*/程序設(shè)計(jì)中數(shù)據(jù)的表示2.1.2整型類數(shù)據(jù)的表示整型常量的分類和表示方法 整型數(shù)據(jù)是計(jì)算機(jī)程序設(shè)計(jì)中最常用的數(shù)據(jù)類型之一,它表示數(shù)據(jù)的范圍與計(jì)算機(jī)系統(tǒng)的軟硬件環(huán)境有關(guān)。16位的系統(tǒng)(例如TurboC)中采用2個(gè)字節(jié)來存儲(chǔ)一個(gè)整型數(shù)據(jù),整型數(shù)據(jù)表示的范圍為-32768~32767(-215~215-1)
32位的系統(tǒng)(例如VisualC++6.0)中采用4個(gè)字節(jié)來存儲(chǔ)一個(gè)整型數(shù)據(jù),整型數(shù)據(jù)表示的數(shù)據(jù)范圍為-231~231-1
程序設(shè)計(jì)中數(shù)據(jù)的表示2.1.2整型類數(shù)據(jù)的表示整型常量的表示形式一般有十進(jìn)制形式、八進(jìn)制形式和十六進(jìn)制形式在數(shù)據(jù)后使用后綴字母“L”或者“l(fā)”表示長(zhǎng)整型數(shù)據(jù)常量;在數(shù)據(jù)后使用后綴字母“U”或者“u”表示無符號(hào)整型常量;進(jìn)制表達(dá)方式例子十進(jìn)制整型常量以數(shù)字1、2、3…、9之中的一個(gè)數(shù)開頭的數(shù)據(jù)形式1235八進(jìn)制整型常量以數(shù)字0開頭的數(shù)據(jù)形式012035十六進(jìn)制整型常量以0x開頭的數(shù)據(jù)形式0x120x35程序設(shè)計(jì)中數(shù)據(jù)的表示2.1.2整型類數(shù)據(jù)的表示整型變量的表示方法
能夠存放整型數(shù)據(jù)的變量稱為整型變量。與整型常量對(duì)應(yīng),整型變量也有基本整型、短整型、長(zhǎng)整型和無符號(hào)整型,其數(shù)據(jù)類型名分別由限定詞int、short、long和unsigned組成。見表2.2、表2.3各種類型整型變量的定義形式如下所示:基本整型: [unsigned]int變量名列表;短整型: [unsigned]short[int]變量名列表;長(zhǎng)整型: [unsigned]long[int]變量名列表;inta,b; //定義了兩個(gè)基本整型變量a,bunsignedintx,y; //則同時(shí)定義了兩個(gè)無符號(hào)的整型變量x,y
程序設(shè)計(jì)中數(shù)據(jù)的表示2.1.3實(shí)型類數(shù)據(jù)的表示十進(jìn)制數(shù)據(jù)形式實(shí)型常量 數(shù)據(jù)由數(shù)字0~9和小數(shù)點(diǎn)組成,用小數(shù)點(diǎn)連接實(shí)型的整數(shù)部分和小數(shù)部分。
0.23,.9,5.0,-267.8230等均為合法的實(shí)型常量
指數(shù)形式實(shí)型常量 數(shù)據(jù)由數(shù)字0~9、小數(shù)點(diǎn)和階碼表示組成,階碼部分由標(biāo)志“e”(或“E”)和指數(shù)部分構(gòu)成,指數(shù)表示的一般形式為: 整數(shù)部分.小數(shù)部分E指數(shù)部分
2.3E3表示2.3×103,3.7E-2表示3.7×10-2, 1e-2表示10-2(即1×10-2)
程序設(shè)計(jì)中數(shù)據(jù)的表示2.1.3實(shí)型類數(shù)據(jù)的表示實(shí)型變量的表示方法
C語言中實(shí)型變量分為單精度型和雙精度型,其類型名分別用float和double表示見表2.4單精度提供6~7位有效十進(jìn)制位,占4個(gè)字節(jié)雙精度量提供15~16位有效十進(jìn)制位,占8個(gè)字節(jié)實(shí)型變量定義的形式如下所示:?jiǎn)尉刃停?float變量名列表;雙精度型: double變量名列表;
floatsalary,area;//定義兩個(gè)單精度實(shí)型變量salary和area doublewidth,length;//定義了兩個(gè)雙精度實(shí)型變量width和length
程序設(shè)計(jì)中數(shù)據(jù)的表示2.1.4字符類數(shù)據(jù)的表示字符常量的分類和表示方法字符常量 字符常量是用單引號(hào)括起來的一個(gè)字符,如’$’、’@’、’A’等轉(zhuǎn)義字符 轉(zhuǎn)義字符是用反斜杠字符’\’開頭的字符序列,此時(shí)反斜杠字符后面的字符或字符序列不表示自己本身的含義而轉(zhuǎn)變?yōu)楸硎玖硗獾奶囟ㄒ饬x(轉(zhuǎn)義字符表參見表2.5)程序設(shè)計(jì)中數(shù)據(jù)的表示2.1.4字符類數(shù)據(jù)的表示字符串常量字符串常量是用雙引號(hào)括起來的由0個(gè)字符或若干個(gè)字符構(gòu)成的字符序列,例如"Thisisastring."。字符串常量占用一段連續(xù)的存儲(chǔ)單元,系統(tǒng)自動(dòng)在其最后添加上表示字符串結(jié)尾的字符’\0’
?!產(chǎn)’和”a”是不相同的,‘a(chǎn)’占1字節(jié),
”a”占2字節(jié)。字符變量的表示方法 程序設(shè)計(jì)中用來存放字符型數(shù)據(jù)的變量稱為字符型變量,C語言中字符型變量的定義形式如下:char變量名列表;chara,b; //則同時(shí)定義了兩個(gè)字符型變量a,b
程序設(shè)計(jì)中數(shù)據(jù)的表示2.1.5地址類數(shù)據(jù)的表示1.指針和指針變量的概念程序中的任何數(shù)據(jù)對(duì)象在運(yùn)行過程中一旦被使用,就會(huì)對(duì)應(yīng)計(jì)算機(jī)系統(tǒng)內(nèi)存中的一個(gè)地址。一個(gè)數(shù)據(jù)對(duì)象有可能占用一至若干個(gè)字節(jié)的存儲(chǔ)單元,在程序設(shè)計(jì)語言中一般將數(shù)據(jù)對(duì)象的名字與其所占用的存儲(chǔ)單元的首地址相對(duì)應(yīng)。數(shù)據(jù)對(duì)象如變量的名字則直接對(duì)應(yīng)的是它們的內(nèi)容(值),需要使用特定的表示方法才能表示出它們?cè)趦?nèi)存中的對(duì)應(yīng)首地址。數(shù)據(jù)對(duì)象如函數(shù)、數(shù)組等的名字直接與其所占存儲(chǔ)單元首地址對(duì)應(yīng),即它們的名字本身就直接表示地址。程序設(shè)計(jì)中數(shù)據(jù)的表示2.1.5地址類數(shù)據(jù)的表示指針變量定義 定義指針變量時(shí)除了需要為其取名外,還必須指定該指針變量能夠指向的數(shù)據(jù)對(duì)象的數(shù)據(jù)類型,定義指針變量的一般形式為: 數(shù)據(jù)類型名 *變量名1,*變量名2,…;數(shù)據(jù)類型名表示指針變量所指向目標(biāo)數(shù)據(jù)對(duì)象的數(shù)據(jù)類型,可以是基本數(shù)據(jù)類型、也可以是以后要討論到的構(gòu)造數(shù)據(jù)類型;指針變量名由程序員命名,命名規(guī)則與普通變量相同;指針變量名之前的星號(hào)(*)只是一個(gè)標(biāo)志,表示其后緊跟的變量是一個(gè)指針變量。//同時(shí)定義了兩個(gè)整型的指針變量p和y
int*p,*y;//定義字符變量cha、chb和字符指針變量p
charcha,chb,*p;
程序設(shè)計(jì)中數(shù)據(jù)的表示2.1.5地址類數(shù)據(jù)的表示2.指針變量的賦值
C語言規(guī)定除了符號(hào)常量NULL外不能直接將任何其它常量直接賦值給指針變量。為指針變量賦值的方法有兩種:使用賦值號(hào)的方式 指針變量名=地址值;
此時(shí)&x等價(jià)于y,*y等價(jià)于變量x
初始化方式 數(shù)據(jù)類型符 *指針變量名=初始化地址值;intx,*y;y=&x;intx,*y=&x;2500025000100xy10025000xy程序設(shè)計(jì)中數(shù)據(jù)的表示2.1.5地址類數(shù)據(jù)的表示3.指針變量的引用
C程序中使用指針運(yùn)算符(*)來表示對(duì)指針的引用,它是一個(gè)單目運(yùn)算符,只能作用于各種類型的指針變量上,其功能是表示被指針變量所指向的數(shù)據(jù)對(duì)象。指針運(yùn)算符使用的一般形式如下:*<指針變量名>
對(duì)于任何同類型的指針變量與它所指向的數(shù)據(jù)對(duì)象而言,都可以有如下結(jié)論:設(shè)有同類型的指針變量和數(shù)據(jù)對(duì)象,將數(shù)據(jù)對(duì)象的首地址值賦給指針變量后,指針變量就與對(duì)應(yīng)數(shù)據(jù)對(duì)象的首地址建立了等價(jià)關(guān)系;當(dāng)對(duì)指針變量施以指針運(yùn)算時(shí),表示的就是被指針變量指向的數(shù)據(jù)對(duì)象。例2.1取地址運(yùn)算符(&)和指針運(yùn)算符(*)的使用示例。
程序設(shè)計(jì)中數(shù)據(jù)的表示在C程序設(shè)計(jì)中,對(duì)于變量的理解和使用還應(yīng)該特別注意以下幾點(diǎn):(1)在指針變量的定義形式中,星號(hào)(*)只是一個(gè)標(biāo)志,它表示其后面的變量是指針變量。(2)一個(gè)指針變量只能指向與它同類型的普通變量。因?yàn)椴煌愋偷淖兞克加玫淖止?jié)數(shù)不同。
Int
x;
Float*ptr;
Ptr=&x;
//錯(cuò)誤,指針變量沒有指向合適的數(shù)據(jù)對(duì)象特例:可以將任何數(shù)據(jù)類型對(duì)象的存儲(chǔ)首地址賦值給void類型(空類型)的指針變量,如:
Int
x;
Void*p=&x;
//將整型變量x的存儲(chǔ)首地址賦值給指針變量(3)指針變量只能在有確定的指向后才能正常使用,也就是說指針變量中必須有確定的地址。(4)指針變量中只能存放地址值,不能把除NULL外的整型常數(shù)直接賦給指針變量。Int*ptr
ptr=100
//錯(cuò)誤程序設(shè)計(jì)的數(shù)據(jù)基礎(chǔ)2.1程序設(shè)計(jì)中數(shù)據(jù)的表示2.2表達(dá)式運(yùn)算基礎(chǔ)2.3數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)表達(dá)式運(yùn)算基礎(chǔ)表達(dá)式的概念 由運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(變量、常量、函數(shù)調(diào)用等)連接起來的、符合C語言語法規(guī)則的式子稱為C語言的表達(dá)式。特別地,單個(gè)的變量、單個(gè)的常量或單個(gè)的函數(shù)調(diào)用都是表達(dá)式的特例。
12 y+7/2+z*c x=y+2 y=sin(x) printf(“Thisisastring.\n”)
表達(dá)式運(yùn)算基礎(chǔ)運(yùn)算符分類、優(yōu)先級(jí)(參見表2.6)算術(shù)運(yùn)算符(+、-、*、/、%、++、--)關(guān)系運(yùn)算符(>、>=、<、<=、==、!=)邏輯運(yùn)算符(||、&&、!)賦值運(yùn)算符(=及其擴(kuò)展賦值運(yùn)算符)位運(yùn)算符(|、&、^、<<、>>、~)條件運(yùn)算符(?:)逗號(hào)運(yùn)算符(,)指針運(yùn)算符(*、&)求字節(jié)運(yùn)算符(sizeof)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符分量運(yùn)算符(.、->)下標(biāo)運(yùn)算符([])表達(dá)式運(yùn)算基礎(chǔ)運(yùn)算符結(jié)合性 運(yùn)算符的結(jié)合性規(guī)定了在表達(dá)式運(yùn)算中遇到同優(yōu)先級(jí)運(yùn)算時(shí)的運(yùn)算次序。表達(dá)式求值時(shí),若運(yùn)算對(duì)象兩邊的運(yùn)算符優(yōu)先級(jí)不同,按優(yōu)先級(jí)別從高到低運(yùn)算。若運(yùn)算對(duì)象兩邊的運(yùn)算符優(yōu)先級(jí)相同,則按其結(jié)合規(guī)則處理。左結(jié)合性 規(guī)定運(yùn)算順序先左后右右結(jié)合性 規(guī)定運(yùn)算順序先右后左。
表達(dá)式運(yùn)算基礎(chǔ)賦值運(yùn)算和賦值表達(dá)式賦值運(yùn)算符“=”的作用是將一個(gè)數(shù)據(jù)或是一個(gè)表達(dá)式的值賦給一個(gè)變量。賦值運(yùn)算符“=”的結(jié)合性為右結(jié)合性。用賦值號(hào)“=”把一個(gè)變量和一個(gè)表達(dá)式連接起來的式子稱為賦值表達(dá)式。在C語言中,賦值表達(dá)式可以作為一個(gè)對(duì)象出現(xiàn)在另外的表達(dá)式中。當(dāng)賦值運(yùn)算符兩邊的對(duì)象類型不一致時(shí),在賦值時(shí)要進(jìn)行類型的轉(zhuǎn)換。轉(zhuǎn)換的基本規(guī)則是以賦值運(yùn)算符左邊的變量的類型為準(zhǔn)。例:x=10 z=(y=x+1)-c表達(dá)式運(yùn)算基礎(chǔ)算術(shù)運(yùn)算符及優(yōu)先級(jí)*,/,%+,- 高低同優(yōu)先級(jí)注意點(diǎn):★對(duì)于除法運(yùn)算符/,當(dāng)參加運(yùn)算的對(duì)象都是整型數(shù)據(jù)時(shí),其結(jié)果也是整型數(shù)據(jù)?!飳?duì)于模運(yùn)算符%,參加運(yùn)算的對(duì)象不能為實(shí)型(float或
double)?!锶魠⒓幽_\(yùn)算的對(duì)象為負(fù),結(jié)果的符號(hào)依賴于系統(tǒng)。★算術(shù)運(yùn)算時(shí)還需要考慮算術(shù)運(yùn)算結(jié)果溢出的問題。例:3/213%2-3%23%-2-3%-21-11-1表達(dá)式運(yùn)算基礎(chǔ)自增、自減運(yùn)算符自增運(yùn)算符“++”和自減運(yùn)算符“--”是兩個(gè)單目運(yùn)算符,它們只能用于變量,不能用于表達(dá)式。自增、自減運(yùn)算符有前綴和后綴兩種形式當(dāng)是前綴形式(即++、符號(hào)出現(xiàn)在變量的左側(cè))時(shí),對(duì)變量實(shí)施的運(yùn)算是“先增值后引用”;當(dāng)是后綴形式(即++、--符號(hào)出現(xiàn)在變量的右側(cè))時(shí),對(duì)變量實(shí)施的運(yùn)算是“先引用后增值”。例2-2
自增自減運(yùn)算符示例。表達(dá)式運(yùn)算基礎(chǔ)復(fù)合(自反)運(yùn)算符和自反表達(dá)式自反運(yùn)算符概念 自反運(yùn)算符是在賦值運(yùn)算符“=”的前面加上其他運(yùn)算符構(gòu)成的一種復(fù)合運(yùn)算符,所以它是一種“復(fù)合的賦值運(yùn)算符”,簡(jiǎn)稱為“復(fù)合賦值符”。C語言規(guī)定,凡是雙目運(yùn)算符都可以與賦值運(yùn)算符一起組成復(fù)合賦值符,其結(jié)合性為右結(jié)合性。這些復(fù)合賦值符是:+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=共10個(gè)。自反運(yùn)算符的解釋
Aop=B應(yīng)解釋為A=Aop(B)例:a+=5等價(jià)于 a=a+5 x*=y+1等價(jià)于 x=x*(y+1) x%=y-5等價(jià)于 x=x%(y-5)表達(dá)式運(yùn)算基礎(chǔ)逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式
逗號(hào)運(yùn)算符用于將兩個(gè)以上的表達(dá)式連接起來,逗號(hào)運(yùn)算符為左結(jié)合性。逗號(hào)表達(dá)式的形式為:
表達(dá)式1,表達(dá)式2,…,表達(dá)式n
注意點(diǎn):C語言中,逗號(hào)運(yùn)算符的優(yōu)先級(jí)別最低;求值時(shí)按從左到右的順序依次分別計(jì)算各表達(dá)式的值,逗號(hào)表達(dá)式的值和類型與最后一個(gè)表達(dá)式相同。逗號(hào)表達(dá)式在程序設(shè)計(jì)中常常用于表示同時(shí)處理若干個(gè)變量。例:a=1,b=a-4,c=b+2;等價(jià)于a=1;b=a-4;c=b+2;表達(dá)式運(yùn)算基礎(chǔ)sizeof運(yùn)算符sizeof運(yùn)算符是C語言中特有的一個(gè)運(yùn)算符,其作用是返回其運(yùn)算對(duì)象所占內(nèi)存單元的字節(jié)數(shù)??梢杂胹izeof運(yùn)算符得到任何運(yùn)算對(duì)象所占內(nèi)存單元的字節(jié)數(shù)。例2-3
測(cè)試所用計(jì)算機(jī)的基本數(shù)據(jù)類型所占內(nèi)存的字節(jié)數(shù)。表達(dá)式運(yùn)算基礎(chǔ)數(shù)據(jù)的混合運(yùn)算和數(shù)據(jù)類型轉(zhuǎn)換隱式轉(zhuǎn)換 隱式轉(zhuǎn)換是系統(tǒng)的自動(dòng)轉(zhuǎn)換,數(shù)據(jù)類型轉(zhuǎn)換的原則是向表達(dá)數(shù)據(jù)能力更強(qiáng)的方向轉(zhuǎn)換。轉(zhuǎn)換規(guī)則如下所示:例2-4
混合運(yùn)算時(shí)系統(tǒng)自動(dòng)數(shù)據(jù)類型轉(zhuǎn)換示例。高double←float↑long↑unsigned
↑低int←short,char表達(dá)式運(yùn)算基礎(chǔ)數(shù)據(jù)的混合運(yùn)算和數(shù)據(jù)類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換又稱為顯式轉(zhuǎn)換。一般形式為: (類型名)<表達(dá)式>顯式轉(zhuǎn)換的功能是:在本次運(yùn)算中,強(qiáng)迫表達(dá)式的值轉(zhuǎn)換成指定的數(shù)據(jù)類型參加運(yùn)算。注意點(diǎn):強(qiáng)制轉(zhuǎn)換僅對(duì)本次有效,轉(zhuǎn)換前后數(shù)據(jù)對(duì)象均不受影響。若被轉(zhuǎn)換的對(duì)象不是單個(gè)變量,則需用括號(hào)將整個(gè)被轉(zhuǎn)換對(duì)象括住。例2-5
混合運(yùn)算時(shí)強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換示例。程序設(shè)計(jì)的數(shù)據(jù)基礎(chǔ)2.1程序設(shè)計(jì)中數(shù)據(jù)的表示2.2表達(dá)式運(yùn)算基礎(chǔ)2.3數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)算法的基本概念 算法就是用計(jì)算機(jī)系統(tǒng)處理實(shí)際問題的步驟。當(dāng)問題比較復(fù)雜的時(shí)候,需要將問題進(jìn)行分解細(xì)化,按照自頂向下、逐步求精的原則,將一個(gè)對(duì)實(shí)際問題的處理過程轉(zhuǎn)化為符合計(jì)算機(jī)程序處理的步驟,這就是算法設(shè)計(jì)的基本思想。對(duì)于算法設(shè)計(jì)的基本要求是:算法必須準(zhǔn)確反映了應(yīng)用問題的數(shù)學(xué)模型。算法的每一步最后都能用計(jì)算機(jī)高級(jí)語言描述。算法執(zhí)行的步驟邏輯(即程序執(zhí)行邏輯)應(yīng)該與實(shí)際問題的處理邏輯一致。數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)設(shè)計(jì)算法應(yīng)考慮的因素?cái)?shù)據(jù)的組織 根據(jù)所建立數(shù)學(xué)模型的需要,指定用于存放輸入數(shù)據(jù)、中間處理結(jié)果和最終結(jié)果的內(nèi)存空間的類型和個(gè)數(shù)。特別是在處理數(shù)據(jù)量大,數(shù)據(jù)關(guān)系復(fù)雜的時(shí)候,這點(diǎn)尤為重要。問題的數(shù)值計(jì)算方法 高級(jí)程序設(shè)計(jì)語言提供了一些算術(shù)運(yùn)算方法和常用函數(shù)計(jì)算功能。但是數(shù)學(xué)模型中有些數(shù)學(xué)公式,如定積分
不能直接用計(jì)算機(jī)程序設(shè)計(jì)語言描述。在處理這類問題時(shí),需要將這些問題轉(zhuǎn)化為適合計(jì)算機(jī)語言描述的的數(shù)值計(jì)算方法。數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)算法具有的五個(gè)特征有窮性。一個(gè)算法必須能夠在算法所涉及的每一種情況下,都能在執(zhí)行有窮步操作之后結(jié)束。確定性。算法的每一步操作,其順序和內(nèi)容都必須精確地惟一確定,不能有任何的歧義性。可執(zhí)行性。算法所描述的每一步操作都必須是可行的,即必須是可以付諸實(shí)施并能夠具體實(shí)現(xiàn)的基本操作。輸入數(shù)據(jù)。輸入是指算法在執(zhí)行的時(shí)候需要從外界獲取的如算法的初始數(shù)據(jù)、加工數(shù)據(jù)等必要的數(shù)據(jù)信息。一個(gè)算法有0個(gè)或多個(gè)輸入。輸出數(shù)據(jù)。算法必須能夠在執(zhí)行后告知1個(gè)或1個(gè)以上的結(jié)果,即算法應(yīng)有一個(gè)或多個(gè)輸出數(shù)據(jù),否則算法將沒有任何意義。數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)算法的基本結(jié)構(gòu)順序結(jié)構(gòu) 順序結(jié)構(gòu)是一種簡(jiǎn)單而基礎(chǔ)的算法基本結(jié)構(gòu),其主要特點(diǎn)是:各個(gè)操作按其出現(xiàn)的先后次序依次順序執(zhí)行一遍。選擇(分支)結(jié)構(gòu) 選擇結(jié)構(gòu)是算法在描述稍復(fù)雜問題時(shí)所必不可少的基本結(jié)構(gòu),其主要特點(diǎn)是:根據(jù)給定條件的成立與否來選擇執(zhí)行不同的操作。循環(huán)結(jié)構(gòu) 在算法中若要描述某些操作反復(fù)執(zhí)行的概念,就要使用循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)的特點(diǎn)是:根據(jù)所給定的條件來判斷是否需要重復(fù)地執(zhí)行一組操作,當(dāng)所給條件為真時(shí)執(zhí)行,否則退出。數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)算法的描述方法程序流程圖 流程圖又稱為程序框圖,使用一些圖形符號(hào)表示算法中的各個(gè)執(zhí)行或判斷過程,使用流程線(有向線段)來表示算法執(zhí)行中每一個(gè)步驟在執(zhí)行上的時(shí)間順序。流程圖可以非常清楚地描述整個(gè)算法執(zhí)行的過程,但由于流程線畫法十分靈活自由,使用不當(dāng)會(huì)造成算法清晰性差以及理解上的困惑。偽語言 在用偽語言描述算法時(shí),一般用某種計(jì)算機(jī)程序設(shè)計(jì)語言的控制結(jié)構(gòu)來描述算法中的控制含義,用近似自然語言的方式來描述算法中的操作。數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)用偽語言描述的算法的基本結(jié)構(gòu)順序結(jié)構(gòu) 處理S1
處理S2選擇結(jié)構(gòu)
If(條件)then [
處理序列1] Else [
處理序列2]數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)用偽語言描述的算法的基本結(jié)構(gòu)多分支選擇結(jié)構(gòu)
Switch(條件)
[
情況1:處理S1
情況2:處理S2
…
情況n:處理Sn ]數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)用偽語言描述的算法的基本結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)
While(條件)
[
處理序列(循環(huán)體)
]直到型循環(huán)結(jié)構(gòu)
Do [
處理序列(循環(huán)體)
]While(條件)數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)算法描述示例根據(jù)圓錐體的底面半徑r和高h(yuǎn)求其體積。 問題分析:對(duì)于簡(jiǎn)單幾何體的體積,根據(jù)其基本參數(shù)按照幾何體的體積計(jì)算公式計(jì)算即可,此問題是一個(gè)簡(jiǎn)單的順序結(jié)構(gòu)問題。算法:SF-01
算法開始輸入半徑r和高h(yuǎn)
圓錐體積←3.14*r*r*h/3
輸出圓錐體積算法結(jié)束數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)算法描述示例設(shè)計(jì)能判斷任意輸入年份是否閏年的算法。 問題分析:閏年的判斷規(guī)則是:1)年份數(shù)能夠被4整除同時(shí)不能被100整除;2)年份數(shù)能夠被400整除;根據(jù)規(guī)則可知閏年判斷方法:規(guī)則1的兩個(gè)條件必須同時(shí)滿足,規(guī)則1與規(guī)則2只需要滿足一個(gè)即可。算法:SF-02
算法開始輸入年份數(shù)yearIf((yearMOD400=0)或者
(yearMOD4=0)并且(yearMOD100≠0))then[輸出year是閏年信息]Else[輸出year不是閏年信息]
算法結(jié)束數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)算法描述示例設(shè)計(jì)算法實(shí)現(xiàn)查詢星期的英文表示法功能。 問題分析:若用一個(gè)整數(shù)(取值在1~7之間)來對(duì)應(yīng)英文的星期一到星期日,使用多分支選擇結(jié)構(gòu)即可實(shí)現(xiàn)查找。算法:SF-03
算法開始輸入欲查找的周日數(shù)wSwitch(w)[w=1:輸出”Monday” w=2:輸出”Tuesday” w=3:輸出”Wednesday” w=4:輸出”Thursday” w=5:輸出”Friday” w=6:輸出”Saturday” w=7:輸出”Sunday”]
算法結(jié)束數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)算法描述示例給定自然數(shù)n,求n!。 問題分析:由數(shù)學(xué)知識(shí)可知,求一個(gè)數(shù)的階乘就是從1開始連續(xù)累乘到該數(shù)為止。算法中主要解決兩個(gè)問題:產(chǎn)生1~n之間的自然數(shù);將所產(chǎn)生自然數(shù)累乘;算法:SF-04
算法開始 輸入自然數(shù)n
產(chǎn)生連續(xù)自然輸?shù)挠?jì)算器k←0
存放累乘結(jié)果的累乘器p←1 While(k<n)
[k←k+1 p←p*k]
輸出n!值p
算法結(jié)束數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)算法描述示例任意給定一個(gè)整數(shù),設(shè)計(jì)求其反序數(shù)的算法。一個(gè)數(shù)的反序數(shù)即是將其從低位到高位順序完全顛倒的數(shù)。例如,1234的反序數(shù)為4321。 問題分析:求自然數(shù)的反序數(shù)關(guān)鍵是將該數(shù)的各位數(shù)字從數(shù)中分離開,方法兩種:從高位到底位分離;從低位到高位分離;從低位到高位分離的具體方法為:1)該數(shù)對(duì)10取余數(shù)(以10進(jìn)制為例),取出最低位數(shù)字2)去掉最低位3)返回1)算法:SF-05
算法開始 輸入處理數(shù)據(jù)n
反序數(shù)s←0(初值為0)
Do [m←nMOD10 s←s*10+m n←n/10(n除以10取整后重新賦給n)
]While(n>0) 輸出s
算法結(jié)束數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)算法描述示例百錢買百雞問題:“一只公雞值5個(gè)錢,一只母雞值3個(gè)錢,3只小雞值1個(gè)錢。用100個(gè)錢要求買100只雞,問公雞、母雞和小雞各能夠買多少只? 問題分析:設(shè)公雞數(shù)用x表示,母雞數(shù)用y表示,小雞數(shù)用z表示。由題意可得如下三元不定方程組:
x取值范圍為:1~19y取值范圍為:1~33z取值為:z=100-x-y算法:SF-06
算法開始
x←1 While(x<19)
[y←1 While(y<33)
[ z←100-x-y If(5*x+3*y+z/3=100)then [輸出x、y、z] y←y+1 ] x←x+1 ]
算法結(jié)束數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)C語言中輸入輸出標(biāo)準(zhǔn)庫(kù)函數(shù)含有輸入或輸出功能的程序語句是程序設(shè)計(jì)中不可缺少的部分。不同的程序設(shè)計(jì)語言中提供了不同的數(shù)據(jù)輸入輸出方法,一些語言提供輸入輸出語句,另外一些則使用具有I/O功能的過程或者函數(shù)。C語言中沒有提供輸入和輸出語句,其所有的輸入輸出均通過調(diào)用系統(tǒng)提供的標(biāo)準(zhǔn)庫(kù)函數(shù)來實(shí)現(xiàn)。C語言中的I/O類函數(shù)的聲明包含在頭文件stdio.h中。如果在程序設(shè)計(jì)中要使用C語言提供的標(biāo)準(zhǔn)輸入和輸出函數(shù),源程序中的開始位置應(yīng)該加上如下包含編譯預(yù)處理命令:
#include"stdio.h"或#include<stdio.h>數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)2.3.2程序設(shè)計(jì)中的格式化輸出
C程序設(shè)計(jì)語言中的格式化標(biāo)準(zhǔn)輸出函數(shù)為printf函數(shù)函數(shù)調(diào)用的一般格式:
printf(“格式控制字符串”,輸出表列);函數(shù)的功能 向標(biāo)準(zhǔn)系統(tǒng)輸出設(shè)備(顯示器)輸出一個(gè)或多個(gè)任意類型的數(shù)據(jù)。輸出表列 由一到若干個(gè)輸出表達(dá)式組成,兩個(gè)輸出表達(dá)式項(xiàng)之間用逗號(hào)分隔。數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)程序設(shè)計(jì)中的格式化輸出printf函數(shù)格式控制字符串的組成及意義普通字符 普通字符原樣照印。格式控制項(xiàng)(以%引導(dǎo)) 格式控制項(xiàng)用以控制對(duì)應(yīng)輸出項(xiàng)的輸出格式。%-0*m.nl/h
<格式控制字符>指定輸出格式(參見表2.7) 輸出長(zhǎng)度修正指定域?qū)捄途戎付ò醋兞恐荡_定域?qū)捴付ㄊ欠窨瘴惶睿爸付ㄊ欠褡髮?duì)齊控制項(xiàng)引導(dǎo)符例2-12
輸出函數(shù)控制項(xiàng)中“*”可選項(xiàng)的使用示例。例2-13
實(shí)型數(shù)據(jù)的輸出示例。例2-14
字符型數(shù)據(jù)的輸出示例。例2-15
字符串的輸出示例。
數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)程序設(shè)計(jì)中的格式化輸入
C程序設(shè)計(jì)語言中的格式化標(biāo)準(zhǔn)輸入函數(shù)為scnaf函數(shù)函數(shù)調(diào)用的一般格式:
scanf(“格式控制字符串”,地址表列);函數(shù)的功能 從標(biāo)準(zhǔn)系統(tǒng)輸入設(shè)備(鍵盤)上輸入一個(gè)或多個(gè)指定類型的數(shù)據(jù)到由地址列表指定的內(nèi)存單元中。地址列表 每一項(xiàng)為一個(gè)地址量,其形式是在一般變量之前加地址運(yùn)算符&,形式為:
&<變量名>
例如有變量x,則&x表示變量x在內(nèi)存中存放的首地址。數(shù)據(jù)輸入輸出和順序程序設(shè)計(jì)程序設(shè)計(jì)中的格式化輸入scanf函數(shù)格式控制字符串的組成及意義普通字符 在格式控制字符串中,普通字符在輸入時(shí)原樣照輸入。格式說明項(xiàng)(以%引導(dǎo)) 格式說明項(xiàng)與地址列表中的地址表項(xiàng)一一對(duì)應(yīng),指定輸入數(shù)據(jù)的輸入格式。%*ml<格
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度美團(tuán)團(tuán)購(gòu)服務(wù)合同范本升級(jí)版8篇
- 二零二五年度高空作業(yè)腳手架租賃與施工總承包合同3篇
- 2025版協(xié)議離婚特殊規(guī)定及婚姻財(cái)產(chǎn)分割與子女撫養(yǎng)合同3篇
- 2025版臨時(shí)工特殊工種作業(yè)安全協(xié)議書4篇
- 2025年度酒店式公寓房間長(zhǎng)期租賃服務(wù)協(xié)議3篇
- 2025年度個(gè)人企業(yè)全額承包經(jīng)營(yíng)合作協(xié)議范本4篇
- 2025年度新能源電池殼體模具開發(fā)與加工服務(wù)協(xié)議4篇
- 2025年度文化創(chuàng)意園區(qū)場(chǎng)地租賃安全管理與文化創(chuàng)新合同4篇
- 水電消防工程2025年度施工及進(jìn)度管理合同2篇
- 2025新生入學(xué)教育法律協(xié)議書(定制版)2篇
- GB/T 16895.3-2024低壓電氣裝置第5-54部分:電氣設(shè)備的選擇和安裝接地配置和保護(hù)導(dǎo)體
- GJB9001C質(zhì)量管理體系要求-培訓(xùn)專題培訓(xùn)課件
- 二手車車主寄售協(xié)議書范文范本
- 窗簾采購(gòu)?fù)稑?biāo)方案(技術(shù)方案)
- 基于學(xué)習(xí)任務(wù)群的小學(xué)語文單元整體教學(xué)設(shè)計(jì)策略的探究
- 人教版高中物理必修一同步課時(shí)作業(yè)(全冊(cè))
- 食堂油鍋起火演練方案及流程
- 《呼吸衰竭的治療》
- 2024年度醫(yī)患溝通課件
- 2024年中考政治總復(fù)習(xí)初中道德與法治知識(shí)點(diǎn)總結(jié)(重點(diǎn)標(biāo)記版)
- 2024年手術(shù)室的應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論