版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
02走進C語言48任務1求解1×2×3×4×5——算法和基本數(shù)據(jù)類型的認識任務2求圓的面積——基本運算符的使用49求解1×2×3×4×5——算法和基本數(shù)據(jù)類型的認識任務150學習目標1.掌握程序算法的概念和基本思路。2.熟悉C語言的基本數(shù)據(jù)類型。51任務描述人們在工作和生活中,每做一件事情都要考慮采取什么樣的方式、方法,所采取的方式、方法是否合理往往決定了實施過程是否順利以及結果是否成功,這些方式、方法就是算法。不同的人解決相同的問題所用算法可能不同。本任務具體要求是編寫兩種算法求數(shù)學問題1×2×3×4×5的值,閱讀用兩種算法編寫的兩個程序,分析兩種算法是如何在兩個程序中實現(xiàn)的,探討程序中所用的數(shù)據(jù)類型。52相關知識一、算法概念算法是一組解決問題的步驟,它可以產(chǎn)生結果,也可能在限定的條件下終止??梢杂米匀徽Z言、偽代碼(pseudo-code)、N/S圖(也稱流程圖)等多種方法來描述算法。同一問題可用不同算法解決,一個算法的質(zhì)量優(yōu)劣將影響到算法乃至程序的效率。算法分析的目的在于選擇合適算法和改進算法。對一個算法的評價主要從時間復雜度和空間復雜度來考慮。531.?算法衡量標準算法質(zhì)量好壞的衡量標準如下:(1)思路清晰正確。(2)過程簡單明了。(3)算法合理準確。2.?算法分類(1)數(shù)值算法。數(shù)值算法是指關于數(shù)學問題的求解的方法,如求三角形的面積、方程式的根、100以內(nèi)偶數(shù)和等。(2)非數(shù)值算法。非數(shù)值算法是指人力系統(tǒng)資料錄入、圖書館書籍檢索、辦公自動化處理等數(shù)值之外的數(shù)據(jù)的處理。543.?算法應用準則設計算法時,應遵循以下幾點。(1)確定性。算法中的每一個步驟都應是確定無誤的,不能產(chǎn)生歧義。(2)有限性。算法中的每個步驟必須是有限的,而不能是無限的,要使算法在合情合理的范圍內(nèi)正確地執(zhí)行并能得出正確的結果。55(3)有效性。算法中的每一個步驟必須能有效地執(zhí)行,也就是說每一個步驟都要符合高級語言的編寫特點,符合常理。(4)保證輸入輸出。在執(zhí)行算法時,需要通過輸入獲取信息,目的是求解。一個算法可以有零個、一個或多個輸入,沒有輸入可以,但沒有輸出的算法是沒有意義的。564.?常用算法(1)遞推算法。遞推算法是一種用若干步可重復的簡單運算(規(guī)律)來描述復雜問題的方法。(2)遞歸算法。遞歸算法通常把一個大型復雜的問題層層轉化為一個與原問題相似、規(guī)模更小的問題來求解。(3)窮舉算法。窮舉算法又稱暴力破解法,是指對于要解決的問題,列舉出它的所有可能的情況,逐個判斷哪些符合問題所要求的條件,從而得到問題的解。57(4)分治算法。在計算機科學中,分治算法是一種很重要的算法。分治算法可簡單地理解為“分而治之”,就是把一個復雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題,直到子問題可以直接求解為止,原問題的解即子問題解的合并結果。(5)動態(tài)規(guī)劃算法。最優(yōu)化原理是動態(tài)規(guī)劃算法的基礎。一個過程的最優(yōu)決策無論其初始狀態(tài)和初始決策如何,對以第一個決策所形成的狀態(tài)作為初始狀態(tài)的過程而言,在其之后所實施的諸策略必須構成最優(yōu)策略。簡言之,一個最優(yōu)策略的子策略,對它的初態(tài)和終態(tài)而言也必定是最優(yōu)的。58(6)貪心算法。貪心算法是指在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,貪心算法不從整體最優(yōu)上加以考慮,它所做出的決策僅是在某種意義上的局部最優(yōu)解。貪心算法不是對所有問題都能得到整體最優(yōu)解,但對大部分問題能得到整體最優(yōu)解或是整體最優(yōu)解的近似解。595.?算法的設計【例
】計算2+4+6+8+10+…+100的算法之一是“依次判斷1~100的整數(shù),只要是偶數(shù)就累加”。分析此算法的編程思路,觀察用此算法編寫的程序,上機輸入編輯、調(diào)試運行并輸出結果。本問題求在一定范圍內(nèi)(題中為1~100)、滿足一定條件(題中為偶數(shù))的若干整數(shù)的和,可以理解為一個累加和的問題。設置一個變量(可用S表示),其初始值為0,在指定的范圍內(nèi)尋找滿足條件的整數(shù),將它們一一累加到S中,并將正在查找的整數(shù)用一個變量i表示。60可以使用C語言語句“S=S+i;”來累加,它表示把S的值加上i后重新賦給S。這個算法的累加過程需要反復執(zhí)行,要用程序設計語言的循環(huán)控制語句(有關循環(huán)控制語句的知識將在后續(xù)任務中學習)來完成,其循環(huán)過程如下。(1)判斷i是否滿足偶數(shù)的條件,把滿足條件的整數(shù)累加到S中。(2)對循環(huán)次數(shù)進行控制,這可以通過i的變化來控制。61二、數(shù)據(jù)類型1.?常用數(shù)據(jù)類型(1)字符型(char)數(shù)據(jù)。每個字符型數(shù)據(jù)在內(nèi)存中占1個字節(jié)的存儲空間。(2)整型(int)數(shù)據(jù)。整型數(shù)據(jù)用來描述整數(shù),整數(shù)在計算機中是準確表示的。整型數(shù)據(jù)的長度與機器字長相同,16位的編譯器上整型數(shù)據(jù)長為16位,32位的編譯器上整型數(shù)據(jù)長為32位。62(3)實型數(shù)據(jù)。1)單精度浮點型(float)數(shù)據(jù)。單精度浮點型數(shù)據(jù)用于描述日常使用的實數(shù),實數(shù)在計算機中一般是近似表達的。每個單精度浮點型數(shù)據(jù)占4字節(jié)的存儲空間,以浮點形式存儲。2)雙精度浮點型(double)數(shù)據(jù)。每個double型數(shù)據(jù)占8字節(jié)的存儲空間,雙精度型數(shù)據(jù)的實數(shù)近似程度比較高。(4)無值型(void)數(shù)據(jù)。無值型數(shù)據(jù)沒有具體的值,通常描述無形式參數(shù)的函數(shù)、無返回值的函數(shù)等。632.?C語言的特點(1)整型常量。整型常量即整數(shù),在計算機中是準確表示的,C語言能識別的整數(shù)可以是十進制、八進制和十六進制,輸出格式分別為%d、%o和%x。(2)實型常量。實數(shù)在計算機中是近似表示的,又稱浮點數(shù)。在C語言中,實數(shù)只采用十進制。它有兩種書寫形式,即十進制小數(shù)形式和指數(shù)形式。64(3)字符型常量。1)普通字符。字符型常量只能是單個字符,并且只能用單引號引起來,不能用雙引號或括號。字符可以是字符集中的任意字符,數(shù)字字符用單引號引起來后不能以原數(shù)值參與數(shù)值運算。2)ASCII碼。ASCII碼即美國信息交換標準代碼,現(xiàn)已成為國際通用標準,它統(tǒng)一規(guī)定了常用符號用相應的二進制數(shù)來表示。標準ASCII碼也稱基礎ASCII碼,使用7位二進制數(shù)來表示所有的大寫和小寫字母、數(shù)字0~9、標點符號以及一些特殊控制字符。653)轉義字符。轉義字符是一種特殊的字符型常量,以反斜杠“\”開頭,后跟一個或多個字符。轉義字符具有特定的含義,不同于字符原有意義,故而得名。4)字符串常量。字符串常量是由一對雙引號引起來的字符序列。(4)符號常量。符號常量是使用一個標識符表示一個常量,需要用#define命令定義,一個#define命令只能定義一個符號常量,末尾不加分號并且符號常量名習慣上采用大寫。663.?變量及其類型(1)變量概念。1)變量定義。在C語言中,變量必須先定義后使用。變量定義的一般形式如下。類型說明符
變量名;2)變量賦初值。在定義變量的同時,還可以進行賦值操作。3)變量定義的位置和作用域。變量定義的位置有3處,在函數(shù)外部定義的變量稱為全局變量;在函數(shù)體內(nèi)定義的變量稱為局部變量;在函數(shù)的形式參數(shù)表中定義的變量稱為形式參數(shù),簡稱形參。67(2)變量類型。1)整型變量。整型變量按照在內(nèi)存中所占字節(jié)長度可分為短整型(shortint)變量、基本整型(int)變量和長整型(longint)變量;根據(jù)有無符號可分為有符號(signed)整型變量和無符號(unsigned)整型變量,有符號整型變量可以表示0、正數(shù)和負數(shù),無符號整型變量可以表示0和正數(shù),但表示正數(shù)的范圍擴大一倍。682)實型變量。實型變量可用于存放特別大或特別小的數(shù),整型變量可表示的數(shù)據(jù)范圍有限,超出就會發(fā)生溢出,導致程序出錯,這時可以考慮用實型變量存放數(shù)據(jù)。但實型數(shù)據(jù)總會有誤差,所以有效位數(shù)很重要。實型變量主要有單精度浮點型(float)變量和雙精度浮點型(double)變量兩種形式。單精度型變量有效位數(shù)為7位,一般雙精度型變量有效位數(shù)為16位,長雙精度型變量有效位數(shù)為19位。3)字符型變量。字符型變量用來存放單個字符,在內(nèi)存中占1個字節(jié)的存儲單元,用關鍵字char進行定義。字符型變量只能存放1個字符,而不能存放字符串。69求圓的面積——基本運算符的使用任務270學習目標1.能運用基本算術運算符編寫程序。2.能運用邏輯運算符、關系運算符和條件運算符編寫程序。3.能規(guī)范編寫C語言程序表達式。71任務描述無論是簡單的數(shù)值運算,還是較復雜的邏輯運算,只要有運算就要用到運算符。在C語言中,運算符是執(zhí)行特定算術或邏輯操作的符號?!?”“-”“*”“/”這4個符號分別是C語言中“加”“減”“乘”“除”4種運算符,只用這4個簡單的運算符就能解決很多數(shù)、理、化等各領域的運算問題。不過,“+”“-”“*”“/”運算符只是C語言運算符中最簡單、最常用的一小部分,C語言各種運算符及其參與構成的表達式數(shù)量眾多,這在高級語言中是少見的,這也是C語言的主要特點之一。72本任務介紹C語言的運算符和如何正確使用運算符寫出合法的表達式。通過實例體會,正是豐富的運算符和各種運算符構成的表達式,使C語言編程的表達方式靈活多樣、功能強大。本任務具體要求是已知正n
邊形的周長是
r,用正n
邊形的邊長做一個圓的半徑,求圓的面積,上機編輯調(diào)試正
n邊形的周長是9的程序,并輸出
n
為3時圓的面積。73相關知識C語言中運算符的作用是告訴編譯程序如何執(zhí)行程序代碼運算,針對幾個操作數(shù)項目進行運算。針對一個操作數(shù)項目進行運算稱為單目運算,針對兩個操作數(shù)項目進行運算稱為雙目運算或二元運算,依此類推。用運算符把C語言中操作數(shù)連起來的式子稱為表達式。當幾個不同的運算符同時出現(xiàn)在表達式中時,各運算符參與運算的先后順序稱為運算符的優(yōu)先級。在表達式中,優(yōu)先級較高的運算符先于優(yōu)先級較低的運算符進行運算。C語言運算符的優(yōu)先級共分為15級,其中1級運算符的優(yōu)先級最高,15級運算符的優(yōu)先級最低(見附錄2)。74C語言的運算符除了具有不同的優(yōu)先級外,還有一個特點,就是具有不同的結合性。運算符的結合性是指當同一個優(yōu)先級的運算符同時出現(xiàn)在表達式中時,其運算的優(yōu)先次序。運算符的結合性分為兩種,即左結合性(自左向右運算)和右結合性(自右向左運算)。根據(jù)運算符的結合性可以確定表達式運算的結合方向。具有右結合性的運算符包括所有單目運算符、賦值運算符“=”和條件運算符,其他運算符都是左結合性的運算符。在一個操作數(shù)兩側的運算符優(yōu)先級相同時,按運算符的結合性所規(guī)定的結合方向處理。75各操作數(shù)參與運算的先后順序不僅要遵守運算符優(yōu)先級別的規(guī)定,還要受運算符結合性的制約,這種結合性是其他一些高級語言的運算符所沒有的,因此也增加了C語言的復雜性,編程中應注意運算符的結合性,以免出現(xiàn)錯誤。C語言的運算符按功能可分為算術運算符、賦值運算符、關系運算符、邏輯運算符、條件運算符、逗號運算符、取內(nèi)存字節(jié)數(shù)運算符、強制類型轉換運算符、指針運算符、特殊運算符和位操作運算符等。運算符按不同方式組合可構成功能豐富的表達式,實現(xiàn)各種運算,為C程序的編寫奠定基礎。76一、算術運算符和算術表達式算術運算,也稱數(shù)值運算,是程序設計中使用最多的一種數(shù)據(jù)運算。1.?算術運算符算術運算符可用于各類數(shù)值運算。算術運算符包括加“+”、減“-”、乘“*”、除“/”、求余(或稱模運算,“%”)、自增“++”、自減“--”,共7種。77(1)基本運算符。1)加法運算符“+”。加法運算符為雙目運算符,即應有兩個操作數(shù)參與加法運算,如x+y、a+5+6等。加法運算符具有左結合性。2)減法運算符“-”。減法運算符為雙目運算符,具有左結合性。3)乘法運算符“*”。乘法運算符為雙目運算符,如a*b等,具有左結合性。4)除法運算符“/”。除法運算符為雙目運算符,如5/6等,具有左結合性。78(2)求余運算符。求余運算符(模運算符)“%”為雙目運算符,求余運算的結果等于兩數(shù)相除后的余數(shù),如3%2的結果為1,具有左結合性。求余運算符用來求兩個整數(shù)的余數(shù)時,要求兩側數(shù)據(jù)必須是整型數(shù)據(jù)。(3)自增、自減運算符。自增運算符和自減運算符都是單目運算符,具有右結合性。自增運算符記為“++”,其功能是使變量的值自增1。自減運算符記為“--”,其功能是使變量值自減1。79(4)算術運算符的優(yōu)先級和結合性。1)優(yōu)先級。算術運算符的優(yōu)先級從高到低依次為:自增“++”、自減“--”優(yōu)先于乘“*”、除“/”、求余“%”;乘“*”、除“/”、求余“%”優(yōu)先于加“+”、減“-”。2)結合性。乘“*”、除“/”、求余“%”、加“+”、減“-”具有左結合性;自增“++”、自減“--”、負號“-”具有右結合性。802.?算術表達式用算術運算符把操作數(shù)連起來的式子稱為算術表達式。算術表達式要按規(guī)則正確書寫,尤其是乘法運算符“*”在表達式中既不能用“×”“.”符號代替,也不能省略;除法運算符“/”同樣也不能用“÷”符號代替。恰當使用圓括號可以改變算術運算優(yōu)先次序,避免出現(xiàn)二義性。又如,在表達式“---i”中,3個負號會產(chǎn)生歧義,系統(tǒng)編譯時會出錯,正確的表達式應寫為“-(--i)”。圓括號使用時要“成對”出現(xiàn)。C語言中允許多重圓括號嵌套“成對”使用,不允許使用方括號或大括號,方括號和大括號有另外的含義。81二、賦值運算符和賦值表達式1.?賦值運算符賦值運算符是最典型的右結合性運算符。(1)簡單賦值運算符。簡單賦值運算符“=”是雙目運算符,必須連接兩個操作數(shù),運算符“=”左邊只能是變量或數(shù)組元素,不能是常量,不能是表達式;右邊則可以是任何表達式。82(2)復合賦值運算符。在C語言中有10種復合賦值運算符,也稱賦值縮寫。它們分別由一個雙目運算符與賦值運算符“=”組成,具有賦值和計算雙重功能。使用復合賦值運算符可以簡化程序,提高編譯效率。復合賦值運算符分為兩種,即復合算術賦值運算符和復合位運算賦值運算符。復合算術賦值運算符有“+=”“-=”“*=”“/=”“%=”,復合位運算賦值運算符有“<<=”“>>=”“&=”“|=”“^=”,其具體含義見下表。8384復合賦值運算符及其含義2.?賦值表達式用賦值運算符把操作數(shù)連接起來的式子稱為賦值表達式。簡單賦值表達式的一般如下。變量
賦值運算符
表達式復合賦值表達式的一般形式如下。變量
雙目運算符
賦值運算符
表達式復合賦值表達式的一般形式等效于下列形式。變量
賦值運算符
變量
雙目運算符
表達式賦值表達式的值就是為變量所賦的值。在進行復合賦值運算時,要將右邊的表達式作為一個整體與左邊的變量進行運算。85三、關系運算符和關系表達式關系運算符用于程序中的比較運算。在程序中經(jīng)常需要比較兩個量的大小關系,以決定程序下一步的工作。關系運算符主要用于構造流程控制中的條件表達式,運算結果是邏輯值。1.?關系運算符比較兩個量大小的運算符稱為關系運算符,主要用來對兩個算術表達式或賦值表達式進行比較運算。C語言中的關系運算符有“<”“<=”“>”“>=”“==”“!=”,其含義見下表。86關系運算符都是雙目運算符,其結合性均為左結合性。關系運算符的優(yōu)先級低于算術運算符,高于賦值運算符。在6個關系運算符中,“<”“<=”“>”“>=”的優(yōu)先級相同,“==”和“!=”的優(yōu)先級相同,“<”“<=”“>”“>=”的優(yōu)先級高于“==”和“!=”。87關系運算符及其含義2.?關系表達式用關系運算符把操作數(shù)連接起來的式子稱為關系表達式。關系運算符中相等的比較是用兩個等號表示,即“==”,注意不要與賦值運算符混淆。C語言不提供邏輯型數(shù)據(jù),而是用整數(shù)1表示邏輯真,用整數(shù)0表示邏輯假。在同一表達式中有多個關系表達式時,應根據(jù)優(yōu)先級進行運算。88四、邏輯運算符和邏輯表達式1.?邏輯運算符邏輯運算符有3種,分別是邏輯非運算符“!”、邏輯與運算符“&&”、邏輯或運算符“‖”。邏輯運算符優(yōu)先次序是邏輯非運算符的優(yōu)先級高于其他兩個邏輯運算符,邏輯與運算符的優(yōu)先級高于邏輯或運算符。89邏輯運算符和其他運算符優(yōu)先級的關系是邏輯與運算符“&&”、邏輯或運算符“‖”的優(yōu)先級低于關系運算符,邏輯非運算符“!”的優(yōu)先級高于算術運算符。按照運算符的優(yōu)先順序可以得出表達式“a>b&&c>d”等價于“(a>b)&&(c>d)”,表達式“!b==c‖d<a”
等價于“((!b)==c)‖(d<a)”,
表達式“a+b>c&&x+y<b”
等價于“((a+b)>c)&&((x+y)<b)”。邏輯與運算符“&&”和邏輯或運算符“‖”均為雙目運算符,具有左結合性;邏輯非運算符“!”為單目運算符,具有右結合性。902.?邏輯表達式用邏輯運算符把關系表達式或操作數(shù)連接起來的有意義的式子稱為邏輯表達式。邏輯與和邏輯或的邏輯表達式的一般形式如下。表達式
邏輯運算符
表達式邏輯非的邏輯表達式的形式如下。!表達式邏輯表達式的值是一個邏輯值,即真或假。C語言編譯系統(tǒng)在給出邏輯結果時,以數(shù)字1表示真,以數(shù)字0表示假,但是在判斷一個量是否為真時,以非0表示真,以0表示假。可以把邏輯表達式的運算結果(0或1)賦給整型變量或字符型變量。91(1)邏輯與運算。邏輯與運算也稱邏輯乘,需要有兩個運算量,當兩個運算量皆為真時結果為真,兩個運算量中有一個為假時其結果為假。(2)邏輯或運算。邏輯或運算也稱邏輯和,需要有兩個運算量,當兩個運算量皆為假時結果為假,兩個運算量中有一個為真時,結果為真。(3)邏輯非運算。邏輯非運算也稱取反運算,僅需要有一個運算量,非真結果為假,非假結果為真。92各運算的邏輯真值表見下表。93邏輯真值表五、條件運算符和條件表達式條件運算符由“?”“:”連接組成,是三目運算符。條件表達式一般形式如下。表達式
1?
表達式
2:
表達式
3條件表達式的含義是當表達式1的值非0時,整個條件表達式的值是表達式2的值,否則,
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【化學】常見的堿及其性質(zhì)課件-2024-2025學年九年級化學科粵版下冊
- 2025年新能源材料研發(fā)股東入股合同3篇
- 2025年度建筑結構鋁合金型材采購合同4篇
- 二零二五年度大型活動策劃臨時雇傭合同樣本4篇
- 2025年度高新技術企業(yè)研發(fā)項目合同擔保協(xié)議4篇
- 二零二五年環(huán)境監(jiān)測網(wǎng)絡建設與運維合同
- 二零二五版化妝品美容培訓課程代理協(xié)議2篇
- 二零二五版基礎設施建設工程合同主要形式及適用范圍2篇
- 2025物流倉儲合同2
- 二零二五年跨境電商平臺合作伙伴服務合同范本3篇
- 2025年度影視制作公司兼職制片人聘用合同3篇
- 兒童糖尿病的飲食
- 2025屆高考語文復習:散文的結構與行文思路 課件
- 干細胞項目商業(yè)計劃書
- 浙江省嘉興市2024-2025學年高一數(shù)學上學期期末試題含解析
- 2024年高考新課標Ⅱ卷語文試題講評課件
- 無人機航拍技術教案(完整版)
- 回收二手機免責協(xié)議書模板
- 外科醫(yī)師手術技能評分標準
- 《英語教師職業(yè)技能訓練簡明教程》全冊配套優(yōu)質(zhì)教學課件
- 采購控制程序
評論
0/150
提交評論