第2章 程序設計的數(shù)據(jù)基礎_第1頁
第2章 程序設計的數(shù)據(jù)基礎_第2頁
第2章 程序設計的數(shù)據(jù)基礎_第3頁
第2章 程序設計的數(shù)據(jù)基礎_第4頁
第2章 程序設計的數(shù)據(jù)基礎_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

程序設計的數(shù)據(jù)基礎2.1程序設計中數(shù)據(jù)的表示2.2表達式運算基礎2.3數(shù)據(jù)輸入輸出和順序程序設計程序設計的數(shù)據(jù)基礎2.1程序設計中數(shù)據(jù)的表示

程序包含兩個方面的內(nèi)容:

數(shù)據(jù)描述和算法描述2.1數(shù)據(jù)類型程序設計中數(shù)據(jù)的表示2.1.1程序設計中數(shù)據(jù)對象的命名方法 數(shù)據(jù)用來描述程序所處理的對象。為了能夠在程序中處理數(shù)據(jù)對象,數(shù)據(jù)對象需要用名字來表示。C語言中使用標識符來為數(shù)據(jù)對象命名,標識符的命名規(guī)則:構成標識符的字符只能是字母、數(shù)字和下劃線;標識符中第一個字符必須是字母或下劃線;構成標識符時都要區(qū)分字母的大小寫;構成標識符的字符個數(shù)(標識符長度)與所使用的環(huán)境相關,C89標準中規(guī)定可以區(qū)分的最大長度是31個字符,C99標準中規(guī)定可以區(qū)分的最大長度是63個字符。程序設計中數(shù)據(jù)的表示C語言中的標識符分為兩大類:

1.系統(tǒng)保留字

共37個,保留字(關鍵字)是一類特殊的標識符,是C語言中具有特定嚴格意義的詞匯,任何情況下都不能用作用戶標識符(附錄B)。

2.用戶標識符即程序員為程序中數(shù)據(jù)對象的命名。

A要符合標識符的命名規(guī)則;B既要有意義又要便于閱讀;C同時要注意避免在含義上或書寫時引起混淆。程序設計中數(shù)據(jù)的表示2.1.1程序設計中數(shù)據(jù)對象的命名方法

合法自定義標識符的例子:

a b1 file_name_buf 不合法自定義標識符例子及錯誤原因:

123abc /*不是以英文字母開頭*/float /*與系統(tǒng)保留字同名*/up.to /*標識符中出現(xiàn)了非法字符“.”*/zhangsan/*標識符中間出現(xiàn)了非法字符空格*/程序設計中數(shù)據(jù)的表示2.1.2整型類數(shù)據(jù)的表示整型常量的分類和表示方法 整型數(shù)據(jù)是計算機程序設計中最常用的數(shù)據(jù)類型之一,它表示數(shù)據(jù)的范圍與計算機系統(tǒng)的軟硬件環(huán)境有關。16位的系統(tǒng)(例如TurboC)中采用2個字節(jié)來存儲一個整型數(shù)據(jù),整型數(shù)據(jù)表示的范圍為-32768~32767(-215~215-1)

32位的系統(tǒng)(例如VisualC++6.0)中采用4個字節(jié)來存儲一個整型數(shù)據(jù),整型數(shù)據(jù)表示的數(shù)據(jù)范圍為-231~231-1

程序設計中數(shù)據(jù)的表示2.1.2整型類數(shù)據(jù)的表示整型常量的表示形式一般有十進制形式、八進制形式和十六進制形式在數(shù)據(jù)后使用后綴字母“L”或者“l(fā)”表示長整型數(shù)據(jù)常量;在數(shù)據(jù)后使用后綴字母“U”或者“u”表示無符號整型常量;進制表達方式例子十進制整型常量以數(shù)字1、2、3…、9之中的一個數(shù)開頭的數(shù)據(jù)形式1235八進制整型常量以數(shù)字0開頭的數(shù)據(jù)形式012035十六進制整型常量以0x開頭的數(shù)據(jù)形式0x120x35程序設計中數(shù)據(jù)的表示2.1.2整型類數(shù)據(jù)的表示整型變量的表示方法

能夠存放整型數(shù)據(jù)的變量稱為整型變量。與整型常量對應,整型變量也有基本整型、短整型、長整型和無符號整型,其數(shù)據(jù)類型名分別由限定詞int、short、long和unsigned組成。見表2.2、表2.3各種類型整型變量的定義形式如下所示:基本整型: [unsigned]int變量名列表;短整型: [unsigned]short[int]變量名列表;長整型: [unsigned]long[int]變量名列表;inta,b; //定義了兩個基本整型變量a,bunsignedintx,y; //則同時定義了兩個無符號的整型變量x,y

程序設計中數(shù)據(jù)的表示2.1.3實型類數(shù)據(jù)的表示十進制數(shù)據(jù)形式實型常量 數(shù)據(jù)由數(shù)字0~9和小數(shù)點組成,用小數(shù)點連接實型的整數(shù)部分和小數(shù)部分。

0.23,.9,5.0,-267.8230等均為合法的實型常量

指數(shù)形式實型常量 數(shù)據(jù)由數(shù)字0~9、小數(shù)點和階碼表示組成,階碼部分由標志“e”(或“E”)和指數(shù)部分構成,指數(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ù)的表示2.1.3實型類數(shù)據(jù)的表示實型變量的表示方法

C語言中實型變量分為單精度型和雙精度型,其類型名分別用float和double表示見表2.4單精度提供6~7位有效十進制位,占4個字節(jié)雙精度量提供15~16位有效十進制位,占8個字節(jié)實型變量定義的形式如下所示:單精度型: float變量名列表;雙精度型: double變量名列表;

floatsalary,area;//定義兩個單精度實型變量salary和area doublewidth,length;//定義了兩個雙精度實型變量width和length

程序設計中數(shù)據(jù)的表示2.1.4字符類數(shù)據(jù)的表示字符常量的分類和表示方法字符常量 字符常量是用單引號括起來的一個字符,如’$’、’@’、’A’等轉(zhuǎn)義字符 轉(zhuǎn)義字符是用反斜杠字符’\’開頭的字符序列,此時反斜杠字符后面的字符或字符序列不表示自己本身的含義而轉(zhuǎn)變?yōu)楸硎玖硗獾奶囟ㄒ饬x(轉(zhuǎn)義字符表參見表2.5)程序設計中數(shù)據(jù)的表示2.1.4字符類數(shù)據(jù)的表示字符串常量字符串常量是用雙引號括起來的由0個字符或若干個字符構成的字符序列,例如"Thisisastring."。字符串常量占用一段連續(xù)的存儲單元,系統(tǒng)自動在其最后添加上表示字符串結(jié)尾的字符’\0’

。‘a(chǎn)’和”a”是不相同的,‘a(chǎn)’占1字節(jié),

”a”占2字節(jié)。字符變量的表示方法 程序設計中用來存放字符型數(shù)據(jù)的變量稱為字符型變量,C語言中字符型變量的定義形式如下:char變量名列表;chara,b; //則同時定義了兩個字符型變量a,b

程序設計中數(shù)據(jù)的表示2.1.5地址類數(shù)據(jù)的表示1.指針和指針變量的概念程序中的任何數(shù)據(jù)對象在運行過程中一旦被使用,就會對應計算機系統(tǒng)內(nèi)存中的一個地址。一個數(shù)據(jù)對象有可能占用一至若干個字節(jié)的存儲單元,在程序設計語言中一般將數(shù)據(jù)對象的名字與其所占用的存儲單元的首地址相對應。數(shù)據(jù)對象如變量的名字則直接對應的是它們的內(nèi)容(值),需要使用特定的表示方法才能表示出它們在內(nèi)存中的對應首地址。數(shù)據(jù)對象如函數(shù)、數(shù)組等的名字直接與其所占存儲單元首地址對應,即它們的名字本身就直接表示地址。程序設計中數(shù)據(jù)的表示2.1.5地址類數(shù)據(jù)的表示指針變量定義 定義指針變量時除了需要為其取名外,還必須指定該指針變量能夠指向的數(shù)據(jù)對象的數(shù)據(jù)類型,定義指針變量的一般形式為: 數(shù)據(jù)類型名 *變量名1,*變量名2,…;數(shù)據(jù)類型名表示指針變量所指向目標數(shù)據(jù)對象的數(shù)據(jù)類型,可以是基本數(shù)據(jù)類型、也可以是以后要討論到的構造數(shù)據(jù)類型;指針變量名由程序員命名,命名規(guī)則與普通變量相同;指針變量名之前的星號(*)只是一個標志,表示其后緊跟的變量是一個指針變量。//同時定義了兩個整型的指針變量p和y

int*p,*y;//定義字符變量cha、chb和字符指針變量p

charcha,chb,*p;

程序設計中數(shù)據(jù)的表示2.1.5地址類數(shù)據(jù)的表示2.指針變量的賦值

C語言規(guī)定除了符號常量NULL外不能直接將任何其它常量直接賦值給指針變量。為指針變量賦值的方法有兩種:使用賦值號的方式 指針變量名=地址值;

此時&x等價于y,*y等價于變量x

初始化方式 數(shù)據(jù)類型符 *指針變量名=初始化地址值;intx,*y;y=&x;intx,*y=&x;2500025000100xy10025000xy程序設計中數(shù)據(jù)的表示2.1.5地址類數(shù)據(jù)的表示3.指針變量的引用

C程序中使用指針運算符(*)來表示對指針的引用,它是一個單目運算符,只能作用于各種類型的指針變量上,其功能是表示被指針變量所指向的數(shù)據(jù)對象。指針運算符使用的一般形式如下:*<指針變量名>

對于任何同類型的指針變量與它所指向的數(shù)據(jù)對象而言,都可以有如下結(jié)論:設有同類型的指針變量和數(shù)據(jù)對象,將數(shù)據(jù)對象的首地址值賦給指針變量后,指針變量就與對應數(shù)據(jù)對象的首地址建立了等價關系;當對指針變量施以指針運算時,表示的就是被指針變量指向的數(shù)據(jù)對象。例2.1取地址運算符(&)和指針運算符(*)的使用示例。

程序設計中數(shù)據(jù)的表示在C程序設計中,對于變量的理解和使用還應該特別注意以下幾點:(1)在指針變量的定義形式中,星號(*)只是一個標志,它表示其后面的變量是指針變量。(2)一個指針變量只能指向與它同類型的普通變量。因為不同類型的變量所占用的字節(jié)數(shù)不同。

Int

x;

Float*ptr;

Ptr=&x;

//錯誤,指針變量沒有指向合適的數(shù)據(jù)對象特例:可以將任何數(shù)據(jù)類型對象的存儲首地址賦值給void類型(空類型)的指針變量,如:

Int

x;

Void*p=&x;

//將整型變量x的存儲首地址賦值給指針變量(3)指針變量只能在有確定的指向后才能正常使用,也就是說指針變量中必須有確定的地址。(4)指針變量中只能存放地址值,不能把除NULL外的整型常數(shù)直接賦給指針變量。Int*ptr

ptr=100

//錯誤程序設計的數(shù)據(jù)基礎2.1程序設計中數(shù)據(jù)的表示2.2表達式運算基礎2.3數(shù)據(jù)輸入輸出和順序程序設計表達式運算基礎表達式的概念 由運算符和括號將運算對象(變量、常量、函數(shù)調(diào)用等)連接起來的、符合C語言語法規(guī)則的式子稱為C語言的表達式。特別地,單個的變量、單個的常量或單個的函數(shù)調(diào)用都是表達式的特例。

12 y+7/2+z*c x=y+2 y=sin(x) printf(“Thisisastring.\n”)

表達式運算基礎運算符分類、優(yōu)先級(參見表2.6)算術運算符(+、-、*、/、%、++、--)關系運算符(>、>=、<、<=、==、!=)邏輯運算符(||、&&、!)賦值運算符(=及其擴展賦值運算符)位運算符(|、&、^、<<、>>、~)條件運算符(?:)逗號運算符(,)指針運算符(*、&)求字節(jié)運算符(sizeof)強制類型轉(zhuǎn)換運算符分量運算符(.、->)下標運算符([])表達式運算基礎運算符結(jié)合性 運算符的結(jié)合性規(guī)定了在表達式運算中遇到同優(yōu)先級運算時的運算次序。表達式求值時,若運算對象兩邊的運算符優(yōu)先級不同,按優(yōu)先級別從高到低運算。若運算對象兩邊的運算符優(yōu)先級相同,則按其結(jié)合規(guī)則處理。左結(jié)合性 規(guī)定運算順序先左后右右結(jié)合性 規(guī)定運算順序先右后左。

表達式運算基礎賦值運算和賦值表達式賦值運算符“=”的作用是將一個數(shù)據(jù)或是一個表達式的值賦給一個變量。賦值運算符“=”的結(jié)合性為右結(jié)合性。用賦值號“=”把一個變量和一個表達式連接起來的式子稱為賦值表達式。在C語言中,賦值表達式可以作為一個對象出現(xiàn)在另外的表達式中。當賦值運算符兩邊的對象類型不一致時,在賦值時要進行類型的轉(zhuǎn)換。轉(zhuǎn)換的基本規(guī)則是以賦值運算符左邊的變量的類型為準。例:x=10 z=(y=x+1)-c表達式運算基礎算術運算符及優(yōu)先級*,/,%+,- 高低同優(yōu)先級注意點:★對于除法運算符/,當參加運算的對象都是整型數(shù)據(jù)時,其結(jié)果也是整型數(shù)據(jù)?!飳τ谀_\算符%,參加運算的對象不能為實型(float或

double)。★若參加模運算的對象為負,結(jié)果的符號依賴于系統(tǒng)?!锼阈g運算時還需要考慮算術運算結(jié)果溢出的問題。例:3/213%2-3%23%-2-3%-21-11-1表達式運算基礎自增、自減運算符自增運算符“++”和自減運算符“--”是兩個單目運算符,它們只能用于變量,不能用于表達式。自增、自減運算符有前綴和后綴兩種形式當是前綴形式(即++、符號出現(xiàn)在變量的左側(cè))時,對變量實施的運算是“先增值后引用”;當是后綴形式(即++、--符號出現(xiàn)在變量的右側(cè))時,對變量實施的運算是“先引用后增值”。例2-2

自增自減運算符示例。表達式運算基礎復合(自反)運算符和自反表達式自反運算符概念 自反運算符是在賦值運算符“=”的前面加上其他運算符構成的一種復合運算符,所以它是一種“復合的賦值運算符”,簡稱為“復合賦值符”。C語言規(guī)定,凡是雙目運算符都可以與賦值運算符一起組成復合賦值符,其結(jié)合性為右結(jié)合性。這些復合賦值符是:+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=共10個。自反運算符的解釋

Aop=B應解釋為A=Aop(B)例:a+=5等價于 a=a+5 x*=y+1等價于 x=x*(y+1) x%=y-5等價于 x=x%(y-5)表達式運算基礎逗號運算符和逗號表達式

逗號運算符用于將兩個以上的表達式連接起來,逗號運算符為左結(jié)合性。逗號表達式的形式為:

表達式1,表達式2,…,表達式n

注意點:C語言中,逗號運算符的優(yōu)先級別最低;求值時按從左到右的順序依次分別計算各表達式的值,逗號表達式的值和類型與最后一個表達式相同。逗號表達式在程序設計中常常用于表示同時處理若干個變量。例:a=1,b=a-4,c=b+2;等價于a=1;b=a-4;c=b+2;表達式運算基礎sizeof運算符sizeof運算符是C語言中特有的一個運算符,其作用是返回其運算對象所占內(nèi)存單元的字節(jié)數(shù)。可以用sizeof運算符得到任何運算對象所占內(nèi)存單元的字節(jié)數(shù)。例2-3

測試所用計算機的基本數(shù)據(jù)類型所占內(nèi)存的字節(jié)數(shù)。表達式運算基礎數(shù)據(jù)的混合運算和數(shù)據(jù)類型轉(zhuǎn)換隱式轉(zhuǎn)換 隱式轉(zhuǎn)換是系統(tǒng)的自動轉(zhuǎn)換,數(shù)據(jù)類型轉(zhuǎn)換的原則是向表達數(shù)據(jù)能力更強的方向轉(zhuǎn)換。轉(zhuǎn)換規(guī)則如下所示:例2-4

混合運算時系統(tǒng)自動數(shù)據(jù)類型轉(zhuǎn)換示例。高double←float↑long↑unsigned

↑低int←short,char表達式運算基礎數(shù)據(jù)的混合運算和數(shù)據(jù)類型轉(zhuǎn)換強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換又稱為顯式轉(zhuǎn)換。一般形式為: (類型名)<表達式>顯式轉(zhuǎn)換的功能是:在本次運算中,強迫表達式的值轉(zhuǎn)換成指定的數(shù)據(jù)類型參加運算。注意點:強制轉(zhuǎn)換僅對本次有效,轉(zhuǎn)換前后數(shù)據(jù)對象均不受影響。若被轉(zhuǎn)換的對象不是單個變量,則需用括號將整個被轉(zhuǎn)換對象括住。例2-5

混合運算時強制數(shù)據(jù)類型轉(zhuǎn)換示例。程序設計的數(shù)據(jù)基礎2.1程序設計中數(shù)據(jù)的表示2.2表達式運算基礎2.3數(shù)據(jù)輸入輸出和順序程序設計數(shù)據(jù)輸入輸出和順序程序設計算法的基本概念 算法就是用計算機系統(tǒng)處理實際問題的步驟。當問題比較復雜的時候,需要將問題進行分解細化,按照自頂向下、逐步求精的原則,將一個對實際問題的處理過程轉(zhuǎn)化為符合計算機程序處理的步驟,這就是算法設計的基本思想。對于算法設計的基本要求是:算法必須準確反映了應用問題的數(shù)學模型。算法的每一步最后都能用計算機高級語言描述。算法執(zhí)行的步驟邏輯(即程序執(zhí)行邏輯)應該與實際問題的處理邏輯一致。數(shù)據(jù)輸入輸出和順序程序設計設計算法應考慮的因素數(shù)據(jù)的組織 根據(jù)所建立數(shù)學模型的需要,指定用于存放輸入數(shù)據(jù)、中間處理結(jié)果和最終結(jié)果的內(nèi)存空間的類型和個數(shù)。特別是在處理數(shù)據(jù)量大,數(shù)據(jù)關系復雜的時候,這點尤為重要。問題的數(shù)值計算方法 高級程序設計語言提供了一些算術運算方法和常用函數(shù)計算功能。但是數(shù)學模型中有些數(shù)學公式,如定積分

不能直接用計算機程序設計語言描述。在處理這類問題時,需要將這些問題轉(zhuǎn)化為適合計算機語言描述的的數(shù)值計算方法。數(shù)據(jù)輸入輸出和順序程序設計算法具有的五個特征有窮性。一個算法必須能夠在算法所涉及的每一種情況下,都能在執(zhí)行有窮步操作之后結(jié)束。確定性。算法的每一步操作,其順序和內(nèi)容都必須精確地惟一確定,不能有任何的歧義性??蓤?zhí)行性。算法所描述的每一步操作都必須是可行的,即必須是可以付諸實施并能夠具體實現(xiàn)的基本操作。輸入數(shù)據(jù)。輸入是指算法在執(zhí)行的時候需要從外界獲取的如算法的初始數(shù)據(jù)、加工數(shù)據(jù)等必要的數(shù)據(jù)信息。一個算法有0個或多個輸入。輸出數(shù)據(jù)。算法必須能夠在執(zhí)行后告知1個或1個以上的結(jié)果,即算法應有一個或多個輸出數(shù)據(jù),否則算法將沒有任何意義。數(shù)據(jù)輸入輸出和順序程序設計算法的基本結(jié)構順序結(jié)構 順序結(jié)構是一種簡單而基礎的算法基本結(jié)構,其主要特點是:各個操作按其出現(xiàn)的先后次序依次順序執(zhí)行一遍。選擇(分支)結(jié)構 選擇結(jié)構是算法在描述稍復雜問題時所必不可少的基本結(jié)構,其主要特點是:根據(jù)給定條件的成立與否來選擇執(zhí)行不同的操作。循環(huán)結(jié)構 在算法中若要描述某些操作反復執(zhí)行的概念,就要使用循環(huán)結(jié)構。循環(huán)結(jié)構的特點是:根據(jù)所給定的條件來判斷是否需要重復地執(zhí)行一組操作,當所給條件為真時執(zhí)行,否則退出。數(shù)據(jù)輸入輸出和順序程序設計算法的描述方法程序流程圖 流程圖又稱為程序框圖,使用一些圖形符號表示算法中的各個執(zhí)行或判斷過程,使用流程線(有向線段)來表示算法執(zhí)行中每一個步驟在執(zhí)行上的時間順序。流程圖可以非常清楚地描述整個算法執(zhí)行的過程,但由于流程線畫法十分靈活自由,使用不當會造成算法清晰性差以及理解上的困惑。偽語言 在用偽語言描述算法時,一般用某種計算機程序設計語言的控制結(jié)構來描述算法中的控制含義,用近似自然語言的方式來描述算法中的操作。數(shù)據(jù)輸入輸出和順序程序設計用偽語言描述的算法的基本結(jié)構順序結(jié)構 處理S1

處理S2選擇結(jié)構

If(條件)then [

處理序列1] Else [

處理序列2]數(shù)據(jù)輸入輸出和順序程序設計用偽語言描述的算法的基本結(jié)構多分支選擇結(jié)構

Switch(條件)

[

情況1:處理S1

情況2:處理S2

情況n:處理Sn ]數(shù)據(jù)輸入輸出和順序程序設計用偽語言描述的算法的基本結(jié)構當型循環(huán)結(jié)構

While(條件)

[

處理序列(循環(huán)體)

]直到型循環(huán)結(jié)構

Do [

處理序列(循環(huán)體)

]While(條件)數(shù)據(jù)輸入輸出和順序程序設計算法描述示例根據(jù)圓錐體的底面半徑r和高h求其體積。 問題分析:對于簡單幾何體的體積,根據(jù)其基本參數(shù)按照幾何體的體積計算公式計算即可,此問題是一個簡單的順序結(jié)構問題。算法:SF-01

算法開始輸入半徑r和高h

圓錐體積←3.14*r*r*h/3

輸出圓錐體積算法結(jié)束數(shù)據(jù)輸入輸出和順序程序設計算法描述示例設計能判斷任意輸入年份是否閏年的算法。 問題分析:閏年的判斷規(guī)則是:1)年份數(shù)能夠被4整除同時不能被100整除;2)年份數(shù)能夠被400整除;根據(jù)規(guī)則可知閏年判斷方法:規(guī)則1的兩個條件必須同時滿足,規(guī)則1與規(guī)則2只需要滿足一個即可。算法:SF-02

算法開始輸入年份數(shù)yearIf((yearMOD400=0)或者

(yearMOD4=0)并且(yearMOD100≠0))then[輸出year是閏年信息]Else[輸出year不是閏年信息]

算法結(jié)束數(shù)據(jù)輸入輸出和順序程序設計算法描述示例設計算法實現(xiàn)查詢星期的英文表示法功能。 問題分析:若用一個整數(shù)(取值在1~7之間)來對應英文的星期一到星期日,使用多分支選擇結(jié)構即可實現(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ù)n,求n!。 問題分析:由數(shù)學知識可知,求一個數(shù)的階乘就是從1開始連續(xù)累乘到該數(shù)為止。算法中主要解決兩個問題:產(chǎn)生1~n之間的自然數(shù);將所產(chǎn)生自然數(shù)累乘;算法:SF-04

算法開始 輸入自然數(shù)n

產(chǎn)生連續(xù)自然輸?shù)挠嬎闫鱧←0

存放累乘結(jié)果的累乘器p←1 While(k<n)

[k←k+1 p←p*k]

輸出n!值p

算法結(jié)束數(shù)據(jù)輸入輸出和順序程序設計算法描述示例任意給定一個整數(shù),設計求其反序數(shù)的算法。一個數(shù)的反序數(shù)即是將其從低位到高位順序完全顛倒的數(shù)。例如,1234的反序數(shù)為4321。 問題分析:求自然數(shù)的反序數(shù)關鍵是將該數(shù)的各位數(shù)字從數(shù)中分離開,方法兩種:從高位到底位分離;從低位到高位分離;從低位到高位分離的具體方法為:1)該數(shù)對10取余數(shù)(以10進制為例),取出最低位數(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ù)輸入輸出和順序程序設計算法描述示例百錢買百雞問題:“一只公雞值5個錢,一只母雞值3個錢,3只小雞值1個錢。用100個錢要求買100只雞,問公雞、母雞和小雞各能夠買多少只? 問題分析:設公雞數(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ù)輸入輸出和順序程序設計C語言中輸入輸出標準庫函數(shù)含有輸入或輸出功能的程序語句是程序設計中不可缺少的部分。不同的程序設計語言中提供了不同的數(shù)據(jù)輸入輸出方法,一些語言提供輸入輸出語句,另外一些則使用具有I/O功能的過程或者函數(shù)。C語言中沒有提供輸入和輸出語句,其所有的輸入輸出均通過調(diào)用系統(tǒng)提供的標準庫函數(shù)來實現(xiàn)。C語言中的I/O類函數(shù)的聲明包含在頭文件stdio.h中。如果在程序設計中要使用C語言提供的標準輸入和輸出函數(shù),源程序中的開始位置應該加上如下包含編譯預處理命令:

#include"stdio.h"或#include<stdio.h>數(shù)據(jù)輸入輸出和順序程序設計2.3.2程序設計中的格式化輸出

C程序設計語言中的格式化標準輸出函數(shù)為printf函數(shù)函數(shù)調(diào)用的一般格式:

printf(“格式控制字符串”,輸出表列);函數(shù)的功能 向標準系統(tǒng)輸出設備(顯示器)輸出一個或多個任意類型的數(shù)據(jù)。輸出表列 由一到若干個輸出表達式組成,兩個輸出表達式項之間用逗號分隔。數(shù)據(jù)輸入輸出和順序程序設計程序設計中的格式化輸出printf函數(shù)格式控制字符串的組成及意義普通字符 普通字符原樣照印。格式控制項(以%引導) 格式控制項用以控制對應輸出項的輸出格式。%-0*m.nl/h

<格式控制字符>指定輸出格式(參見表2.7) 輸出長度修正指定域?qū)捄途戎付ò醋兞恐荡_定域?qū)捴付ㄊ欠窨瘴惶睿爸付ㄊ欠褡髮R控制項引導符例2-12

輸出函數(shù)控制項中“*”可選項的使用示例。例2-13

實型數(shù)據(jù)的輸出示例。例2-14

字符型數(shù)據(jù)的輸出示例。例2-15

字符串的輸出示例。

數(shù)據(jù)輸入輸出和順序程序設計程序設計中的格式化輸入

C程序設計語言中的格式化標準輸入函數(shù)為scnaf函數(shù)函數(shù)調(diào)用的一般格式:

scanf(“格式控制字符串”,地址表列);函數(shù)的功能 從標準系統(tǒng)輸入設備(鍵盤)上輸入一個或多個指定類型的數(shù)據(jù)到由地址列表指定的內(nèi)存單元中。地址列表 每一項為一個地址量,其形式是在一般變量之前加地址運算符&,形式為:

&<變量名>

例如有變量x,則&x表示變量x在內(nèi)存中存放的首地址。數(shù)據(jù)輸入輸出和順序程序設計程序設計中的格式化輸入scanf函數(shù)格式控制字符串的組成及意義普通字符 在格式控制字符串中,普通字符在輸入時原樣照輸入。格式說明項(以%引導) 格式說明項與地址列表中的地址表項一一對應,指定輸入數(shù)據(jù)的輸入格式。%*ml<格

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論