版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
項(xiàng)目一初窺門徑——C語言和程序設(shè)計(jì)任務(wù)1Helloworld!——初識C語言任務(wù)2求兩個整數(shù)之和——C程序的結(jié)構(gòu)任務(wù)1Helloworld!——初識C語言任務(wù)描述:編程語言是人跟計(jì)算機(jī)打交道的橋梁,它充當(dāng)人類的翻譯官,請?jiān)贑環(huán)境中輸出“Helloworld!”。案例分析:了解編程語言及C語言的發(fā)展和特點(diǎn)初步認(rèn)識Dev-C++的運(yùn)行環(huán)境及運(yùn)行的基本步驟。1.1編程語言機(jī)器語言匯編語言C語言1.2C語言的發(fā)展及其特點(diǎn)1.C語言的特點(diǎn)語言簡潔緊湊,使用靈活方便運(yùn)算符豐富數(shù)據(jù)類型豐富具有結(jié)構(gòu)化的控制語句語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大C語言允許直接訪問物理地址用C語言編寫的程序可移植性好C語言程序生成代碼質(zhì)量高,程序執(zhí)行效率高1.3Dev-C++介紹1.Dev-C++5.11界面圖1-1Dev-C++5.11界面表1-1Dev-C++5.11部分按鈕說明如表1-1所示圖標(biāo)功能快捷鍵新建Ctrl+N打開Ctrl+O保存Ctrl+S撤銷Ctrl+Z恢復(fù)Ctrl+Y編譯F9運(yùn)行F10編譯運(yùn)行F11表1-12.在Dev-C++上運(yùn)行一個C程序的基本步驟圖1-2Dev-C++5.11新建或打開一個文件(1)新建或打開一個文件(2)在編輯窗口中輸入或修改C程序2.在Dev-C++上運(yùn)行一個C程序的基本步驟圖1-3編譯程序結(jié)果窗口(3)保存(4)編譯(5)運(yùn)行任務(wù)1Helloworld!——初識C語言任務(wù)實(shí)施:#include<stdio.h>main(){printf("Helloworld!");}運(yùn)行結(jié)果:Helloworld!任務(wù)1Helloworld!——初識C語言任務(wù)總結(jié):本任務(wù)實(shí)現(xiàn)了簡單語句的輸出,從而了解了C語言的特點(diǎn)、運(yùn)行環(huán)境以及運(yùn)行步驟。任務(wù)拓展:請使用快捷鍵法輸出“這是我的第一個C程序?!比蝿?wù)2求兩個整數(shù)之和——C程序的結(jié)構(gòu)任務(wù)描述:求兩個整數(shù)的和,熟悉C語言程序的結(jié)構(gòu)以及C語言程序運(yùn)行的方法。案例分析:設(shè)置3個變量,a和b用來存放兩個整數(shù),sum用來存放和數(shù)用賦值運(yùn)算符“=”把相加的結(jié)果傳送給sum并輸出1.4C語言程序的結(jié)構(gòu)1.C語言的特點(diǎn)一個C語言程序是由一個或多個函數(shù)組成的,其中必須包含且只能包含一個main函數(shù),當(dāng)然可以包含若干個其他函數(shù)。程序總是從main函數(shù)開始執(zhí)行。一個函數(shù)由函數(shù)首部和函數(shù)體兩部分組成。C程序書寫格式是比較自由的。程序應(yīng)當(dāng)包含注釋。1.5C語言程序的上機(jī)步驟圖1-5運(yùn)行C程序的步驟1.6程序設(shè)計(jì)的任務(wù)從確定問題到最后完成任務(wù),一般經(jīng)歷以下幾個工作階段:(1)問題分析。(2)設(shè)計(jì)算法。(3)編寫程序。(4)對源程序進(jìn)行編輯、編譯和連接,得到可執(zhí)行程序。(5)運(yùn)行程序,分析結(jié)果。(6)編寫程序文檔。任務(wù)實(shí)施:任務(wù)2求兩個整數(shù)之和——C程序的結(jié)構(gòu)#include<stdio.h>main()/*求兩個整數(shù)之和*/{inta,b,sum;/*這是聲明部分,定義a,b,sum為整型變量*/a=1;/*將1賦給a,從這行開始的4行是c語句*/b=2;/*將2賦給b*/sum=a+b;/*將a+b的和賦給sum*/printf(“%d”,sum);/*輸出s的值*/}案例6植物生長——逐幀動畫始終顯示標(biāo)記:不管繪圖紙外觀是否打開,都在時間軸標(biāo)題中顯示繪圖紙外觀標(biāo)記。錨定標(biāo)記:將繪圖紙外觀標(biāo)記鎖定在時間軸標(biāo)題中的當(dāng)前位置。通常情況下,繪圖紙外觀范圍是和當(dāng)前幀指針以及繪圖紙外觀標(biāo)記相關(guān)的。通過錨定繪圖紙外觀標(biāo)記,可以防止它們隨當(dāng)前幀指針移動。標(biāo)記范圍2:在當(dāng)前幀的兩邊各顯示兩個幀。標(biāo)記范圍5:在當(dāng)前幀的兩邊各顯示五個幀。標(biāo)記整個范圍:在當(dāng)前幀的兩邊顯示所有幀。(4)“修改標(biāo)記”的5種形式任務(wù)1Helloworld!——初識C語言任務(wù)總結(jié):在本任務(wù)中通過綜合運(yùn)用C語言程序的結(jié)構(gòu)特點(diǎn),依據(jù)C程序的運(yùn)行方法,實(shí)現(xiàn)了簡單的兩個整數(shù)求和功能。任務(wù)拓展:請查找資料并了解函數(shù)的調(diào)用功能,求出兩個整數(shù)中的較大者。項(xiàng)目總結(jié)本項(xiàng)目介紹了編程語言和C語言的發(fā)展及特點(diǎn),并通過兩個任務(wù)實(shí)例分析了C語言程序的格式、構(gòu)成和基本要求,最后介紹了C程序的上機(jī)步驟。項(xiàng)目二
算法與流程圖項(xiàng)目概述:
近些年,編程從少數(shù)程序員的特有技能逐步向通用技能擴(kuò)散,大有“全民編程”之勢;編程的核心在于算法;編程語言紛繁復(fù)雜,高級、中級、低級兼?zhèn)?,但無論使用哪種語言算法都是繞不開的。C語言中所謂的算法實(shí)際上就是程序設(shè)計(jì)的主思想,這些思想就是C語言代代碼中的各種語句、運(yùn)算或者指令信息的體現(xiàn)。而流程圖則是將編程中的算法思想通過繪制圖形以及流程的形式展示出來。本項(xiàng)目將C語言中的算法以及流程圖相關(guān)內(nèi)容進(jìn)行詳細(xì)講解。學(xué)習(xí)目標(biāo):了解算法概念;理解算法的特性;了解算法的優(yōu)劣;掌握用流程圖描述算法。知識框架:任務(wù)3比誰更聰明任務(wù)4流程圖任務(wù)3比誰更聰明任務(wù)描述:計(jì)算1+2+3+……+100的和。任務(wù)分析:
本任務(wù)中100個數(shù)逐個相加在一起后的結(jié)果,如果按照變量賦值的方法來實(shí)現(xiàn),顯然進(jìn)行100個變量是不合適的,通過使用循環(huán)結(jié)構(gòu),對循環(huán)變量進(jìn)行賦初值后,判斷循環(huán)變量是否超出100,如果未超出就累加到變量s中,這樣循環(huán)執(zhí)行循環(huán)體后,就得到了想要的結(jié)果。知識準(zhǔn)備:
著名的計(jì)算機(jī)科學(xué)家沃斯曾提出過一個公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序。也就是說,一個完整的程序應(yīng)該包含數(shù)據(jù)結(jié)構(gòu)和算法。數(shù)據(jù)結(jié)構(gòu)就是程序中所使用到的數(shù)據(jù)的類型以及數(shù)據(jù)的組織形式。
而就現(xiàn)在而言,設(shè)計(jì)一個C語言程序不僅需要數(shù)據(jù)結(jié)構(gòu)和算法,還需要程序的設(shè)計(jì)方法以及一個語言工具和環(huán)境。所以一個程序的組成可以表示為:程序結(jié)構(gòu)+算法+程序設(shè)計(jì)方法+語言工具和環(huán)境。任務(wù)3比誰更聰明2.1算法在現(xiàn)實(shí)生活中,算法無處不在,當(dāng)人們遇見一個問題并對這個問題進(jìn)行思考時,就是在使用算法。因此算法可以理解為針對出現(xiàn)的問題所設(shè)計(jì)的具體步驟以及解決方法。對同一個問題,可以有不同的解題方法和步驟,有的方法只須進(jìn)行很少的步驟,而有些方法則需要較多的步驟;一般來說,希望采用方法簡單、運(yùn)算步驟少得方法。因此,為了有效地進(jìn)行解題,不僅需要保證算法的正確,還要考慮算法的質(zhì)量,選擇合適的算法。任務(wù)3比誰更聰明計(jì)算機(jī)中的算法大致可分為以下兩種類別。(1)數(shù)值運(yùn)算算法數(shù)值運(yùn)算算法主要用于針對數(shù)值問題進(jìn)行求解,比如求解方程的根、求解函數(shù)的,這類需要借助數(shù)學(xué)公式進(jìn)行相應(yīng)的計(jì)算。(2)非數(shù)值運(yùn)算算法。這類算法所包括的面十分廣泛,比如在圖書索、人事管理、車輛調(diào)度中的應(yīng)用,一般需要建立一個過程模型,根據(jù)模型制定算法。任務(wù)3比誰更聰明2.2算法的特性總地來說,算法在解決問題時具有以下特性。1.有窮性算法應(yīng)當(dāng)包含有限的操作步驟,不能無窮無盡,不論在做什么樣的運(yùn)算,一定要注意所包含的上限問題,也就是說要在有限的操作步驟內(nèi)可以解決問題。2.確定性算法中的每個步驟都必須是確定的、十分清晰,不得具有二義性。若是某個操作是含糊的、模棱兩可的話,解決問題的結(jié)果可能就會出現(xiàn)分歧。任務(wù)3比誰更聰明3.有零個或多個輸入輸入是指在執(zhí)行算法時需要從外界來獲取若必要的初始量等信息。例如:c=a+b;此時需要用戶給定變量a和變量b的值以計(jì)算變量c的值。又例如:printf("Hello");此時只是需要輸出一段字符串,不需要用戶入任何數(shù)據(jù),此為零輸入。4.有一個或多個輸出算法的最終目的就是為了求解,通過輸出的方式將求出的結(jié)果顯示出來。若是一個程序在執(zhí)行結(jié)束后沒有返回任何信息,那么此程序就沒有執(zhí)行的價值。任務(wù)3比誰更聰明5.有效性算法在執(zhí)行時,每一個步驟必須都能夠有效地執(zhí)行,并且得到確定的結(jié)果。例如:inta=2,b=0;c=a/b;此時,“c=a/b”便為一個無效語句,因?yàn)槭?作為分母是沒有意義的。任務(wù)3比誰更聰明2.3算法的優(yōu)劣一個產(chǎn)品的質(zhì)量可以用好壞來區(qū)分,算法同也有優(yōu)劣,評判一個算法的優(yōu)劣性可以從以下幾個方面來講。1.正確性正確性是說算法在制定完成后能否滿足具體問題的要求,也就是說針對任何合法的輸入,該算法都能夠得出合理正確的結(jié)果。2.可讀性算法在制定完成后,該算法被理解的難易程即為可讀性??勺x性對于一個算法來說十分重要,若是一個算法令人難以理解,,那么這個算法就得不到推廣也不能進(jìn)行交流,對于算法的修改、維護(hù)以及拓展都十分不利。因此制定算法的時候,需要盡量將算法寫得通俗易懂,簡單明了。任務(wù)3比誰更聰明3.健壯性在一個程序完成之后,運(yùn)行該程序的用戶對程序的理解會因人而異,開發(fā)人員不能夠確保每一個用戶都能夠按照要求來進(jìn)行輸入。健壯性就是說當(dāng)用戶輸入的數(shù)據(jù)非法時,該算法能夠做出相應(yīng)的判斷,不會因?yàn)檩斎肓隋e誤的數(shù)據(jù)而造成程序的崩潰癱瘓。4.時間復(fù)雜度與空間復(fù)雜度時間復(fù)雜度是指一個算法在運(yùn)行的過程中所消耗的時間。影響一個算法的時間復(fù)雜度主要有以下幾個因素。(1)問題的規(guī)模大小。例如,求解10以內(nèi)自然數(shù)之和與求解1000以內(nèi)自然數(shù)之和所花費(fèi)的時間是不同的。(2)源程序的編譯功能強(qiáng)弱以及經(jīng)過編譯所產(chǎn)的機(jī)器代碼質(zhì)量的優(yōu)劣。(3)根據(jù)計(jì)算機(jī)的系統(tǒng)硬件所決定的機(jī)器執(zhí)行一條目標(biāo)指令所需要的時間。(4)程序中語句所執(zhí)行的次數(shù)。(5)使用不同的計(jì)算機(jī)語言所實(shí)現(xiàn)的效率。任務(wù)3比誰更聰明時間復(fù)雜度在一個非常小的程序中可能很體會出來,但是在一個特別大的程序中就會發(fā)現(xiàn)一個程序在運(yùn)行的過程中時間復(fù)雜度是舉足輕重的。所以說編寫出一個更為高效且高速的算法是開發(fā)人員對算法不斷改進(jìn)的目標(biāo)。空間復(fù)雜度是指算法在運(yùn)行的過程中所需要的內(nèi)存空間的大小。一個算法在計(jì)算機(jī)的內(nèi)存中所占用的存儲空間包含了算法本身所占的內(nèi)存空間、算法在對數(shù)據(jù)輸入輸出時所占用的內(nèi)存空間以及算法在運(yùn)行的過程中所占用的臨時存儲空間。就目前而言,計(jì)算機(jī)發(fā)展日新月異,對于空間復(fù)雜度的考慮已經(jīng)不再那么要了,但是編程時開發(fā)人員也是需要注意的。任務(wù)3比誰更聰明在計(jì)算機(jī)科學(xué)中,算法是指描述用計(jì)算機(jī)解決給定問題的過程。計(jì)算1+2+3+……+100的算法可表示為:步驟1:0→s步驟2:1→i步驟3:s+i→s步驟4:i+1→i步驟5:如果i≤100,轉(zhuǎn)到步驟3,否則,結(jié)束。任務(wù)實(shí)施:任務(wù)3比誰更聰明在上面的算法中,符號s和i表示變量,符號→表示給變量賦值。步驟1和步驟2表示給變量s和i賦初值0和1;步驟3將變量i的當(dāng)前值累加到變量s中;步驟4使變量i在原來的基礎(chǔ)上增加1;步驟5判斷i的值如果小于等于100,重復(fù)做步驟3和步驟4,構(gòu)成一個循環(huán),而當(dāng)i的值不小于等于100的時候,循環(huán)結(jié)束,這時,變量s的值就是要求的計(jì)算結(jié)果。任務(wù)3比誰更聰明本次任務(wù)描述了整個計(jì)算過程中算法的實(shí)現(xiàn),下面就將算法以程序的形式錄入電腦,以此來驗(yàn)證一下算法。程序的運(yùn)行結(jié)果如圖2-1所示。#include<stdio.h>main(){ inti,s=0; for(i=1;i<=100;i++) s+=i; printf("s=%d",s);}圖2-11+2+…+100的和任務(wù)3比誰更聰明本任務(wù)主要講解算法究竟是什么,算法具有的特性分析及算法優(yōu)劣的評價等知識,通過1到100的累加求和來分析算法的怎么來實(shí)現(xiàn),通過程序來驗(yàn)證算法。任務(wù)總結(jié):任務(wù)3比誰更聰明計(jì)算100以內(nèi)自然數(shù)的偶數(shù)和或奇數(shù)和,應(yīng)該使用怎樣的算法?任務(wù)拓展:案例4流程圖案例描述:判定2000-2500年中的每一年是否為閏年,并將結(jié)果輸出。案例分析:
先分析閏年的條件:(1)能被4整除,但不能被100整除的年都是閏年,如2008年、2012年、2048年是閏年;(2)能被400整除的年份是閏年,如2000年是閏年。不符合這兩個條件的年份是不是閏年。例如2009年、2100年不是閏年。根據(jù)以上條件,采用外循環(huán)內(nèi)判斷的方法來繪制流程圖,這樣設(shè)計(jì)程序時思路就清晰了。案例4流程圖2.4用自然語言表示算法任務(wù)2的任務(wù)實(shí)施中,其算法是用自然語言來表示的,自然語言就是人們?nèi)粘J褂玫恼Z言,可以是漢語、英語或其他語言。用自然語言表示通俗易懂,但文字冗長,容易出現(xiàn)歧義。自然語言表示的含義往往不大嚴(yán)格,要根據(jù)上下文才能判其正確含義。例如有這樣一句話:“張先生對李先生說他的孩子考上了大學(xué)”,請問是張先生的孩子考上大學(xué)還是李先生的孩子考上大學(xué)呢?光從這句話本身難以判斷。此外,用自然語言來描述包含分支和循環(huán)的算法不大方便。因此,除了那些很簡單的問題外,一般不用自然語言表示算法。案例4流程圖2.5用流程圖表示算法使用流程圖可以將算法以圖形的形式清晰地繪制出來,流程圖是使用一些簡單的幾何圖形以及流程線來表示算法中的各種操作和語句,流程圖基本元素如圖2-2所示。圖2-2流程圖基本元素
案例4流程圖1.一個流程圖包括以下幾部分:(1)表示相應(yīng)操作的框;(2)帶箭頭的流程線;(3)框內(nèi)外必要的文字說明。需要提醒的是:流程線不要忘記畫箭頭,因?yàn)樗欠从沉鞒痰南群蟮?,如不畫出箭頭就難以判定各框的執(zhí)行次序了。2.使用流程圖表示算法,具有以下優(yōu)點(diǎn):(1)結(jié)構(gòu)清晰,邏輯性強(qiáng);(2)易于理解,畫法簡單;(3)便于描述,形式規(guī)范。
案例4流程圖3.流程圖的三種基本結(jié)構(gòu)1966年,Bohra和Jacopini提出了以下3種基本結(jié)構(gòu),用這3種基本結(jié)構(gòu)作為表示一個良好算法的基本單元。(1)順序結(jié)構(gòu)。順序結(jié)構(gòu)是程序代碼中最基本的結(jié)構(gòu),它屬于一種線性結(jié)構(gòu),順序結(jié)構(gòu)的代碼在執(zhí)行的時候是按照語句的先后順序逐條執(zhí)行的,也就是從上至下,一條一條執(zhí)行,不會漏過任何語句或者代碼。如圖2-3所示,虛線框內(nèi)是一個順序結(jié)構(gòu),其中A和B兩個框是順序執(zhí)行的;即在執(zhí)行完A框所指定的操作后,接著執(zhí)行B框所指定的操作。
案例4流程圖圖2-3順序結(jié)構(gòu)流程圖圖2-4選擇結(jié)構(gòu)流程圖
案例4流程圖(2)選擇結(jié)構(gòu)。選擇結(jié)構(gòu)又稱為分支結(jié)構(gòu),如圖2-4所示,通過判斷某個條件表達(dá)式的結(jié)果成立與否,來執(zhí)行相應(yīng)的操作時,需要使用到選擇結(jié)構(gòu)。選擇結(jié)構(gòu)必包含一個判斷框,先進(jìn)行條件p判斷,通過返回的判斷結(jié)果來選擇接下來的執(zhí)行語句,若條件p成立,則執(zhí)行語句A,若條件p不成立,則執(zhí)行語句B。注意:無論p條件是否成立,只能執(zhí)行A框或B框之一,不可能既執(zhí)行A框又執(zhí)行B框,無論走哪一條路徑,在執(zhí)行完A或B之后,都經(jīng)過b點(diǎn),然后脫離本選擇結(jié)構(gòu)。A或B兩個框中可以有一個是空的,即不執(zhí)行任何操作。
案例4流程圖(3)循環(huán)結(jié)構(gòu)。又稱重復(fù)結(jié)構(gòu),即反復(fù)執(zhí)行某一部分的操作,有兩類循環(huán)結(jié)構(gòu)。①當(dāng)型循環(huán)結(jié)構(gòu)。當(dāng)型循環(huán)結(jié)構(gòu)如圖2-5所示,它的作用是:當(dāng)給定的條件p1成立時,執(zhí)行A框操作,執(zhí)行完A后,再判斷條件p1是否成立,如果仍然成立,再執(zhí)行A框,如此反復(fù)執(zhí)行A框,直到某一次p1條件不成立為止,此時不執(zhí)行A框,而從b點(diǎn)脫離循環(huán)結(jié)構(gòu)。②直到型循環(huán)結(jié)構(gòu)。直到型循環(huán)結(jié)構(gòu)如圖2-6所示,它的作用是:先執(zhí)行A框,然后判斷給定的條件p2是否成立,如果p2條件成立,則再執(zhí)行A,然后再對p2條件作判斷,如果p2條件仍然成立,又執(zhí)行A……如此反復(fù)執(zhí)行A,直到給定的p2條件不成立為止,此時不執(zhí)行A框,而從b點(diǎn)脫離本循環(huán)結(jié)構(gòu)。同一個問題既可以用當(dāng)型循環(huán)結(jié)構(gòu)來處理,也可以用直到型循環(huán)結(jié)構(gòu)來處理。案例4流程圖圖2-5當(dāng)型循環(huán)結(jié)構(gòu)流程圖圖2-6直到型循環(huán)結(jié)構(gòu)流程圖案例4流程圖以上3種基本結(jié)構(gòu),有以下共同特點(diǎn):(1)只有一個入口。圖2.3~圖2.6中的a點(diǎn)為入口點(diǎn)。(2)只有一個出口。圖2.3~圖2.6中的b點(diǎn)為出口點(diǎn)。請注意:一個判斷框有兩個出口,而一個選擇結(jié)構(gòu)只有一個出口。不要將判斷框的出口和選擇結(jié)構(gòu)的出口混淆。(3)結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會被執(zhí)行到。也就是說,對每一個框來說,都應(yīng)當(dāng)有一條從入口到出口的路徑通過它。(4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”(無終止的循環(huán))。案例4流程圖2.6用N-S流程圖表示算法1973年,美國學(xué)者I.Nassi和B.Shneiderman出了一種新的流程圖形式,在這種流程圖中,完全去掉了帶箭頭的流程線,全部算法寫在一個矩形框內(nèi),在該框內(nèi)還可以包含其他從屬于它的框,或者說,由一些基本的框組成一個大的框,這種流程圖又稱N-S結(jié)構(gòu)化流程圖(N和S是兩位美國學(xué)者的英文姓氏的首字母)。案例4流程圖N-S流程圖用以下的流程圖符號:(1)順序結(jié)構(gòu)。順序結(jié)構(gòu)用圖2-7形式表示,A和B兩個框組成一個順序結(jié)構(gòu)。(2)選擇結(jié)構(gòu)。選擇結(jié)構(gòu)用圖2-8表示,它與圖2-4所表示的意思是相同的。當(dāng)P條件成立時執(zhí)行A操作,P不成立則執(zhí)行B操作。圖2-7順序結(jié)構(gòu)圖2-8選擇結(jié)構(gòu)圖2-9當(dāng)型循環(huán)結(jié)構(gòu)圖2-10直到型循環(huán)結(jié)構(gòu)(3)循環(huán)結(jié)構(gòu)。當(dāng)型循環(huán)結(jié)構(gòu)用圖2-9形式示,當(dāng)p1條件成立時反復(fù)執(zhí)行A操作,直到p1條件不成立為止;直到型循環(huán)結(jié)構(gòu)如圖2-10所示。用以上3種N-S流程圖中的基本框可以組成復(fù)雜的N-S流程圖,以表示算法。案例4流程圖S流程圖比文字描述直觀、形象易于理解;比傳統(tǒng)流程圖索湊易畫,尤其是它廢除了流程線,整個算法結(jié)構(gòu)是由各個基本結(jié)構(gòu)按順序組成的,N-S流程圖中的上下順序就是執(zhí)行時的順序,也就是圖中位置在上面的先執(zhí)行,位置在下面的后執(zhí)行。寫算法和看算法只需從上到下進(jìn)行就可以了,十分方便。案例4流程圖2.7結(jié)構(gòu)化程序設(shè)計(jì)方法一個結(jié)構(gòu)化程序就是用計(jì)算機(jī)語言表示的結(jié)構(gòu)化算法,用3種基本結(jié)構(gòu)組成的程序必是結(jié)構(gòu)化的程序。這種程序便于編寫、閱讀、修改和維護(hù),這就減少了程序出錯的機(jī)會,高了程序的可靠性,保證了程序的質(zhì)量。結(jié)構(gòu)化程序設(shè)計(jì)強(qiáng)調(diào)程序設(shè)計(jì)風(fēng)格和程序構(gòu)的規(guī)范化,提倡清晰的結(jié)構(gòu)。怎樣才能得到一個結(jié)構(gòu)化的程序呢?如果面臨一個復(fù)雜的問題,是難以一下子寫出一個層次分明、結(jié)構(gòu)清晰、算法正確的程序的。結(jié)構(gòu)化程序設(shè)計(jì)方法的基本思路是:把一個復(fù)雜問題的求解過程分階段進(jìn)行,每個階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。案例4流程圖具體說,采取以下方法來保證得到結(jié)構(gòu)化的程序:(1)自頂向下;(2)逐步細(xì)化;(3)模塊化設(shè)計(jì);(4)結(jié)構(gòu)化編碼。在接受一個任務(wù)后應(yīng)怎樣著手進(jìn)行呢?有種不同的方法:一種是自頂向下,逐步細(xì)化;一種是自下而上,逐步積累。案例4流程圖設(shè)計(jì)房屋就是用自頂向下、逐步細(xì)化的方法。先進(jìn)整體規(guī)劃,然后確定建筑物方案,再進(jìn)行各部分的設(shè)計(jì),最后進(jìn)行細(xì)節(jié)的設(shè)計(jì)(如門窗、樓道等),而絕不會在沒有整體方案之前先設(shè)計(jì)樓道和功能間。而在完成設(shè)計(jì),有了圖紙之后,在施工階段則是自下而上實(shí)施的,用一磚一瓦先實(shí)現(xiàn)一個局部,然后由各部分組成一個建筑物。在程序設(shè)計(jì)中常采用模塊設(shè)計(jì)的方法,尤其程序比較復(fù)雜時,更有必要。在拿到一個程序模塊以后根據(jù)程序模塊的功能將它劃分為若干個子模塊,如果這些子模塊的規(guī)模還嫌大,可以再劃為更小的模塊。這個過程采用自頂向下的方法來實(shí)現(xiàn)。程序中的子模塊在C語言中通常用函數(shù)來實(shí)現(xiàn)。模塊化設(shè)計(jì)的思想實(shí)際上是一種“分而治之”的思想,把一個大任務(wù)分為若干個小任務(wù),每一個子任務(wù)就相對簡單了。在設(shè)計(jì)好一個結(jié)構(gòu)化的算法之后,還要善于進(jìn)行結(jié)構(gòu)化編碼。所謂編碼就是將已設(shè)計(jì)好的算法用計(jì)算機(jī)語言來表示,即根據(jù)已經(jīng)細(xì)化的算法正確地寫出計(jì)算機(jī)程序。案例4流程圖任務(wù)實(shí)施:設(shè)year為被檢測的年份。算法可表示如下:S1:2000→yearS2:若year不能被4整除,則輸出year的值和“不是閏年”。然后轉(zhuǎn)到S6,檢查下一個年份S3:若year能被4整除,不能被100整除,則輸出year的值和“不是閏年”,然后轉(zhuǎn)到S6S4:若year能被400整除,輸出year的值和“是閏年”,然后轉(zhuǎn)到S6S5:輸出year的值和“不是閏年”S6:year+1→yearS7:當(dāng)year≤2500時,轉(zhuǎn)S2繼續(xù)執(zhí)行,否則算法停止。案例4流程圖在這個算法中,采取了多次判斷;先判斷year能否被4整除,如不能,則year必然不是閏年。如year能被4整除,并不能馬上決它是否閏年,還要檢查它能否被100整除。如不能被100整除,則肯定是閏年(例如2008年)。如能被100整除,還不能判斷它是否閏年,還要檢查它能否被400整除,如果能被40整除,則是閏年,否則不是閏年。根據(jù)以上分析,依據(jù)判定條件一步一步縮小檢查判斷的范圍,直至得到相應(yīng)的結(jié)果。流程圖如圖2-11所示,用流程圖表示算法要比文字描述算法邏輯清晰、易于理解。案例4流程圖圖2-11判斷是否為閏年的流程圖案例4流程圖任務(wù)總結(jié):在本次任務(wù)中通過分析2000你~2500年中每一年是否為閏年的自然語言敘述算法和流程圖表示算法,將步驟進(jìn)行細(xì)化分解后,逐步縮小范圍,最終輸出結(jié)果。以上任務(wù)還可以通過N-S流程圖的方式來分析,如圖2-12所示,可以根據(jù)習(xí)慣選擇適合個人思維的流程圖來分析算法。圖2-12判斷是否為閏年N-S流程圖案例4流程圖任務(wù)拓展:繪制以下兩個任務(wù)的流程圖:1.求方程式ax2+bx+c=0的根,分別考慮(1)有兩個不等的實(shí)根;(2)有兩個相等的實(shí)根。2.依次將10個數(shù)輸入,輸出其中最大的數(shù)。項(xiàng)目總結(jié)C語言中所謂的算法實(shí)際上就是程序設(shè)計(jì)的主要思想,這些思想就是C語言代碼中的各種語句、運(yùn)算或者指令信息的體現(xiàn)。而程圖則是將編程中的算法思想通過繪制圖形以及流程的形式展示出來。本項(xiàng)目通過兩個任務(wù)的實(shí)現(xiàn),介紹了算法的基本知識和流程圖的基本結(jié)構(gòu),并通過任務(wù)實(shí)例分析算法的實(shí)現(xiàn)過程,用傳統(tǒng)流程圖和N-S圖實(shí)現(xiàn)復(fù)雜算法逐步細(xì)化分解;最后介紹了結(jié)構(gòu)化程序設(shè)計(jì)的方法。項(xiàng)目總結(jié)學(xué)習(xí)程序設(shè)計(jì)的目的不只是為了掌握某一種特定的語言,而應(yīng)當(dāng)學(xué)習(xí)程序設(shè)計(jì)的一般方法。脫離具體的語言去學(xué)習(xí)程序設(shè)計(jì)是困難的,但是,學(xué)習(xí)語言是為了設(shè)計(jì)程序,它本身絕不是目的。高級語言有許多種,每種語言也都在不斷發(fā)展,因此千萬不能只拘于一種具體的語言,而應(yīng)當(dāng)能舉一反三,在需要的時候能很快地使用另一種語言編程。關(guān)鍵是掌握算法,有了正確的算法,用任何語言進(jìn)行編碼都不是什么困難的事。達(dá)標(biāo)檢測:一、填空題1.算法是針對出現(xiàn)的問題所設(shè)計(jì)的
以及
。2.計(jì)算機(jī)中的算法大致可分為
、
兩類。3.時間復(fù)雜度是指一個算法在
所消耗的時間。4.流程圖的三種基本結(jié)構(gòu),分別是
、
、
。5.結(jié)構(gòu)化程序設(shè)計(jì)方法:
、
、
、
。二、簡單題1.算法的特性有哪些?2.用傳統(tǒng)流程圖(或N-S流程圖)求解以下問題的算法。(1)有兩瓶水,要求將瓶子里盛放的水互換。(2)有3個數(shù)a,b,c,要求按大到小的順序輸出。(3)求兩個數(shù)m和n的最大公約數(shù)。項(xiàng)目一基本數(shù)據(jù)類型與順序程序設(shè)計(jì)
——C語言和程序設(shè)計(jì)任務(wù)5慶祝建黨100周年
——數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算任務(wù)6計(jì)算奧運(yùn)冠軍全紅嬋的總得分
——運(yùn)算符和表達(dá)式任務(wù)7統(tǒng)計(jì)捐贈物資
——C語句及輸入輸出函數(shù)任務(wù)描述:建黨100周年之際,請編寫程序輸出以下內(nèi)容:慶祝建黨100周年IloveChina!中國人口總數(shù)超14.1億,中國共產(chǎn)黨黨員總數(shù)為0.95148億名。任務(wù)5慶祝建黨100周年——數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算案例分析:整數(shù)可以用整型數(shù)據(jù)表示小數(shù)可以用浮點(diǎn)型數(shù)據(jù)表示英文字符可以用字符型數(shù)據(jù)表示變量進(jìn)行定義后便可使用最后用printf語句輸出任務(wù)5慶祝建黨100周年——數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.1數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算(1)常量在計(jì)算機(jī)高級語言中,數(shù)據(jù)有兩種表現(xiàn)形式:常量和變量。在程序運(yùn)行過程中,其值不能被改變的量稱為常量。如任務(wù)5中的數(shù)字100,字符‘C’,小數(shù)14.1,這些都是常量,因?yàn)樗鼈儍H代表一個具體的值,并且不能夠被改變。常用的常量有以下幾類:1.常量和變量3.1數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算(1)常量1.常量和變量①整型常量。如100,0,-25等都是整型常量。②實(shí)型常量。有兩種表示形式:十進(jìn)制小數(shù)形式,由數(shù)字和小數(shù)點(diǎn)組成。如3.14,-2.0等。指數(shù)形式,如14.1e5,1.5E-7等。注意:e或E之前必須有數(shù)字,且e或E后面必須為整數(shù)。如不能寫成e5,2e3.5。③字符常量。有兩種形式的字符常量:普通字符,用單撇號括起來的一個字符,如:‘c','A','5','!','#'。不能寫成'ab'或'12'。請注意:單撇號只是界限符,字符常量只能是一個字符,不包括單撇號。'a'和'A'是不同的字符常量。字符常量存儲在計(jì)算機(jī)存儲單元中時,并不是存儲字符(如a,z,#等)本身,而是以ASCII代碼存儲的,例如字符'a'的ASCII代碼是97,因此,在存儲單元中存放的是97(以二進(jìn)制形式存放)。轉(zhuǎn)義字符,除了以上形式的字符常量外,C語言還允許用一種特殊形式的字符常量,就是以字符“\”開頭的字符序列。如‘\n’,‘\t’,‘\b’等。常用的以“\”開頭的特殊字符如表3-1所示。3.1數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算(1)常量1.常量和變量轉(zhuǎn)義字符字符值輸出結(jié)果\’一個單撇號(‘)輸出單撇號字符‘\”一個雙撇號(“)輸出雙撇號字符“\\一個反斜線(\)輸出反斜線字符\\b退格(backspace)將光標(biāo)當(dāng)前位置后退一個字符\f換頁將光標(biāo)當(dāng)前位置移到下一頁的開頭\n換行將光標(biāo)當(dāng)前位置移到下一行的開頭\r回車將光標(biāo)當(dāng)前位置移到本行的開頭\t水平制表符將光標(biāo)當(dāng)前位置移到下一個Tab位置\v垂直制表符將光標(biāo)當(dāng)前位置移到下一個垂直制表對齊點(diǎn)\0數(shù)字0表示空字符表3-1轉(zhuǎn)義字符及其作用④字符串常量。用雙撇號把若干個字符括起來,字符串字符是雙撇號中的全部字符,如“CHINA”,但不能寫成‘CHINA’。單撇號內(nèi)只能包含一個字符,雙撇號內(nèi)可以包含一個字符串。⑤符號常量。使用之前必須先定義,符號常量的定義格式為:#define標(biāo)識符常量如:#definePI3.1416#defineNAME中華人民共和國這種用一個符號名代表一個常量的,稱為符號常量。像上例中的PI,NAME都是符號常量,為了將符號常量和普通的變量名區(qū)分開,習(xí)慣使用大寫字母來命名符號常量,用小寫字母來命名變量。(2)變量在程序的運(yùn)行過程中,值可以改變的量稱為變量。由于變量是一個存儲單元,每個存儲單元都有一個地址,即變量名,存放在變量存儲單元中的值即變量值,變量值會隨著給變量重新賦值而改變。變量就像是在內(nèi)存里邊挖一個“坑”,然后給這個“坑”命名,還需要為變量指定“坑位”的大小,即指定該變量即將存放的數(shù)據(jù)類型。因?yàn)椴煌臄?shù)據(jù)它的尺寸不一樣,所以如果把每個坑都挖的很大,是可以存放任何數(shù)據(jù)類型,但也會造成浪費(fèi);如果把每個坑挖的很小,是可以節(jié)省一點(diǎn),但大號的數(shù)據(jù)又放不進(jìn)去??偟膩碚f,變量有三個要素,包含變量名、數(shù)據(jù)類型和變量值。3.1數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算1.常量和變量定義變量名必須符合標(biāo)識符的構(gòu)成規(guī)則:C語言變量名只能由英文字母(A~Z,a~z)和數(shù)字(0~9)或者下畫線(_)組成,其他特殊字符不行。變量名必須以英文字母或者下畫線開頭,不能用數(shù)字開頭。字母區(qū)分大小寫變量名最好能“見名知義”,便于記憶且能增加程序的可讀性。不能使用關(guān)鍵字來命名變量。表3-232個關(guān)鍵字關(guān)鍵字關(guān)鍵字關(guān)鍵字關(guān)鍵字autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternreturnunionconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledoifstaticwhile傳統(tǒng)的C語言(ANSIC)有32個關(guān)鍵字,如下表3-2所示。(3)標(biāo)識符在C語言中,標(biāo)識符指的就是一切的名字。比如前面提到的符號常量名PI是標(biāo)識符,變量名也是一個標(biāo)識符,即將學(xué)到的函數(shù)、數(shù)組、自定義類型的名字都稱為標(biāo)識符。那么標(biāo)識符的命名就需要符合一定的規(guī)律,就是(2)變量中的命名規(guī)律。2.數(shù)據(jù)類型C語言包含了四種基本數(shù)據(jù)類型,如圖所示。3.整型數(shù)據(jù)(1)整型常量十進(jìn)制整型常量八進(jìn)制整型常量十六進(jìn)制整型常量3.整型數(shù)據(jù)(2)整型變量類型類型說明符字節(jié)數(shù)取值范圍基本整型int4-231~(231-1)無符號基本整型unsignedint40~(232-1)短整型short2-215~(215-1)無符號短整型unsignedshort20~(216-1)長整型long4-231~(231-1)無符號長整型unsignedlong40~(232-1)雙長整型longlong8-263~(263-1)無符號雙長整型unsignedlonglong80~(264-1)4.浮點(diǎn)型數(shù)據(jù)類型類型說明符字節(jié)數(shù)取值范圍有效數(shù)字浮點(diǎn)型float40以及1.2×10-38~3.4×10386雙精度型double80以及2.3×10-308~1.7×1030815長雙精度型longdouble80以及2.3×10-308~1.7×1030815160以及3.4×10-4932~1.1×104932195.字符型數(shù)據(jù)(1)字符與字符代碼字母:大寫英文字母A~Z,小寫英文字母a~z。數(shù)字:0~9。專門符號:29個,包括?。ⅲ#ΓВǎ?,一。/:;<=>?[\]^_`{|}~空格符:空格、水平制表符(tab)、垂直制表符、換行、換頁(formfeed)。不能顯示的字符:空(null)字符(以‘\0'表示)、警告(以‘\a'表示)、退格(以‘\b'表示)、回車(以‘\r'表示)等。(2)字符變量類型類型說明符字節(jié)數(shù)取值范圍有符號字符型signedchar1-128~127,即-27~(27-1)無符號字符型unsignedchar10~255,即0~(28-1)任務(wù)實(shí)施:#include<stdio.h>main(){inta;charb;floatc;doubled;a=100;b=’C’;c=14.1;d=0.95148;printf("慶祝建黨%d周年!\n",a);printf("I
love%china!\n",b);printf("中國人口總數(shù)超%.1f億,中國共產(chǎn)黨黨員總數(shù)為%7.5f億名。\n",c,d);}任務(wù)5慶祝建黨100周年——數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算運(yùn)行結(jié)果:任務(wù)5慶祝建黨100周年——數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算慶祝建黨100周年!I
love
China!中國人口總數(shù)超14.1億,中國共產(chǎn)黨黨員總數(shù)為0.95148億名。任務(wù)總結(jié):任務(wù)5慶祝建黨100周年——數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算本任務(wù)涉及到了C語言中的所有基本數(shù)據(jù)類型,分別為整型、實(shí)型(單精度型和雙精度型)、字符型。%d表示整型數(shù)據(jù),%c表示字符型數(shù)據(jù),%f表示浮點(diǎn)型數(shù)據(jù),可以是單精度浮點(diǎn)型,也可以是雙精度浮點(diǎn)型?!?.1f”表示精度,是保留小數(shù)點(diǎn)后一位的意思,d精確度比較高,“7.5f”表示整個數(shù)據(jù)所占的總寬度是7位,小數(shù)點(diǎn)后是5位。變量在說明之后可以使用,最后使用格式化輸出函數(shù)printf將不同的數(shù)據(jù)類型轉(zhuǎn)換為字符串的形式輸出。任務(wù)拓展:任務(wù)5慶祝建黨100周年——數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算蘇炳添在東京奧運(yùn)會上創(chuàng)造了9秒83的男子100米亞洲紀(jì)錄,成為第一位闖入奧運(yùn)會男子百米決賽的中國運(yùn)動員。請將9秒83轉(zhuǎn)換為小數(shù)并輸出(1秒=1000毫秒)。任務(wù)描述:任務(wù)6計(jì)算奧運(yùn)冠軍全紅嬋的總得分——運(yùn)算符和表達(dá)式在第32屆東京奧運(yùn)會跳水女子10米臺項(xiàng)目中,14歲的中國選手全紅嬋五跳三個滿分,奪得金牌,全紅嬋的五跳得分分別是:82.50分、96.00分、95.70分、96.00分、96.00分,請編程求出全紅嬋的跳水總得分。案例分析:總分是指五跳分?jǐn)?shù)相加的和定義6個變量,分別用來存放總分(total)和每一跳的得分(a,b,c,d,e)用含有加法運(yùn)算符的算術(shù)表達(dá)式(a+b+c+d+e)求出五跳總和將和賦值給表示總分的變量total從而求出全紅嬋的總成績?nèi)蝿?wù)6計(jì)算奧運(yùn)冠軍全紅嬋的總得分——運(yùn)算符和表達(dá)式3.1運(yùn)算符和表達(dá)式名稱包含的運(yùn)算符算術(shù)運(yùn)算符+
-
*/%++--關(guān)系運(yùn)算符><==>=<=!=邏輯運(yùn)算符&&||!位運(yùn)算符<<>>
~|∧&賦值運(yùn)算符=及其擴(kuò)展賦值運(yùn)算符條件運(yùn)算符?:逗號運(yùn)算符,指針運(yùn)算符*和&求字節(jié)數(shù)運(yùn)算符sizeof強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(類型)成員運(yùn)算符.—>下標(biāo)運(yùn)算符[]其他如函數(shù)調(diào)用運(yùn)算符()1.算術(shù)運(yùn)算符運(yùn)算符含義舉例結(jié)果+正號運(yùn)算符(單目運(yùn)算符)
-負(fù)號運(yùn)算符(單目運(yùn)算符)
*乘法運(yùn)算符3*26/除法運(yùn)算符3/213.0/2.01.5%求余運(yùn)算符3%213.0%2.0出錯+加法運(yùn)算符3+25-減法運(yùn)算符3-212.自增(++)、自減(--)運(yùn)算符自增(++)、自減(--)運(yùn)算符的作用是使變量的值加1或減1,例如:++i,--i(在使用i之前,先使i的值加(減)1)i++,i--(在使用i之后,使i的值加(減)1)3.算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性(1)算術(shù)運(yùn)算符的優(yōu)先級。優(yōu)先級由高到低為:括號→函數(shù)調(diào)用→取負(fù)→*、/、%→+、-。(2)C語言規(guī)定了各種運(yùn)算符的結(jié)合方向(結(jié)合性),算術(shù)運(yùn)算符的結(jié)合方向都是“自左至右”(又稱左結(jié)合性)。4.賦值運(yùn)算符(1)賦值符號“=”就是賦值運(yùn)算符,它為“右結(jié)合”,它的作用是將一個數(shù)據(jù)賦給一個變量。(2)復(fù)合的賦值運(yùn)算符在賦值符=之前加上其他運(yùn)算符,可以構(gòu)成復(fù)合的運(yùn)算符。如果在“=”前加一個“十”運(yùn)算符就成了復(fù)合運(yùn)算符“+=”。5.逗號運(yùn)算符逗號運(yùn)算符用于將多個表達(dá)式連接起來,優(yōu)先級最低。格式:表達(dá)式1,表達(dá)式2,……表達(dá)式n;功能:從左向右計(jì)算各個表達(dá)式的值,整個逗號表達(dá)式的結(jié)果是最后一個表達(dá)式n的值。任務(wù)實(shí)施:任務(wù)6計(jì)算奧運(yùn)冠軍全紅嬋的總得分——運(yùn)算符和表達(dá)式#include<stdio.h>main(){floattotal,a,b,c,d,e;a=82.50;
b=96.00;
c=95.70;
d=96.00;
e=96.00;total=a+b+c+d+e;printf("奧運(yùn)冠軍全紅嬋的總得分為:%.2f分。\n",total);}任務(wù)總結(jié):任務(wù)6計(jì)算奧運(yùn)冠軍全紅嬋的總得分——運(yùn)算符和表達(dá)式本任務(wù)用算術(shù)表達(dá)式和賦值運(yùn)算符完成了計(jì)算冠軍總分的問題,需要注意運(yùn)算符和優(yōu)先級和結(jié)合性,算術(shù)運(yùn)算符具有左結(jié)合性,賦值運(yùn)算符具有右結(jié)合性。任務(wù)拓展:任務(wù)6計(jì)算奧運(yùn)冠軍全紅嬋的總得分——運(yùn)算符和表達(dá)式在32屆奧運(yùn)會女子鉛球比賽中,中國選手鞏立嬌獲得冠軍,摘得中國隊(duì)的第22枚金牌。鉛球場地的投擲圈平面圖如圖所示,根據(jù)標(biāo)準(zhǔn),鉛球投擲圈的直徑為2135mm,圓周率為3.14159,請編程計(jì)算鉛球投擲圈的周長和面積。任務(wù)描述:任務(wù)7統(tǒng)計(jì)捐贈物資——C語句及輸入輸出函數(shù)H地遭遇了千年一遇的大暴雨,引起了社會各界的廣泛關(guān)注,H地災(zāi)情牽動著全國人民的心,有人奔赴前線,有人捐款捐物,請編程實(shí)現(xiàn),由鍵盤輸入所捐贈的現(xiàn)金和物資(物資統(tǒng)一用等價的現(xiàn)金數(shù)值計(jì)),輸出共捐贈的現(xiàn)金和物資總數(shù)。案例分析:輸入所捐贈的現(xiàn)金和物資使用scanf函數(shù)輸入money和goods的值用printf函數(shù)輸出所捐贈的物資總數(shù)任務(wù)7統(tǒng)計(jì)捐贈物資——C語句及輸入輸出函數(shù)知識準(zhǔn)備:任務(wù)7統(tǒng)計(jì)捐贈物資——C語句及輸入輸出函數(shù)3.3C語句C語句的作用和分類(1)控制語句(2)函數(shù)調(diào)用語句(3)表達(dá)式語句(4)空語句(5)復(fù)合語句知識準(zhǔn)備:任務(wù)7統(tǒng)計(jì)捐贈物資——C語句及輸入輸出函數(shù)3.3C語句2.賦值語句(1)賦值表達(dá)式和賦值語句(2)變量賦初值賦值語句是在賦值表達(dá)式的末尾加一個分號構(gòu)成。賦值表達(dá)式的一般形式為:變量賦值運(yùn)算符表達(dá)式知識準(zhǔn)備:任務(wù)7統(tǒng)計(jì)捐贈物資——C語句及輸入輸出函數(shù)3.4格式輸入輸出函數(shù)用printf函數(shù)輸出數(shù)據(jù)(1)printf函數(shù)的一般格式printf(格式控制,輸出表列)知識準(zhǔn)備:任務(wù)7統(tǒng)計(jì)捐贈物資——C語句及輸入輸出函數(shù)3.4格式輸入輸出函數(shù)用printf函數(shù)輸出數(shù)據(jù)(2)格式字符格式符功能說明%d按十進(jìn)制整數(shù)形式輸出%c按字符形式輸出%s按字符串形式輸出%o按八進(jìn)制整數(shù)形式輸出%x按十六進(jìn)制整數(shù)形式輸出%f(%e)按浮點(diǎn)形式(或指數(shù)形式)輸出,默認(rèn)為6位小數(shù)%m.nf按浮點(diǎn)形式輸出,顯示寬度不小于m,小數(shù)位數(shù)為n知識準(zhǔn)備:任務(wù)7統(tǒng)計(jì)捐贈物資——C語句及輸入輸出函數(shù)3.4格式輸入輸出函數(shù)2.用scanf函數(shù)輸入數(shù)據(jù)(1)scanf函數(shù)的一般形式scanf(格式控制,地址表列)(2)scanf函數(shù)中的格式聲明與printf函數(shù)中的格式聲明相似,以%開始,以一個格式字符結(jié)束,中間可以插入附加的字符。知識準(zhǔn)備:任務(wù)7統(tǒng)計(jì)捐贈物資——C語句及輸入輸出函數(shù)3.4格式輸入輸出函數(shù)(3)使用scanf函數(shù)時應(yīng)注意的問題scanf函數(shù)中的格式控制后面應(yīng)當(dāng)是變量地址,而不是變量名如果在格式控制字符串中除了格式聲明以外還有其他字符,則在輸入數(shù)據(jù)時在對應(yīng)的位置上應(yīng)輸入與這些字符相同的字符。在用“%c”格式聲明輸入字符時,空格字符和“轉(zhuǎn)義字符”中的字符都作為有效字符輸入在輸入數(shù)值數(shù)據(jù)時,如輸入空格、回車、Tab鍵或遇非法字符(不屬于數(shù)值的字符),認(rèn)為該數(shù)據(jù)結(jié)束。知識準(zhǔn)備:任務(wù)7統(tǒng)計(jì)捐贈物資——C語句及輸入輸出函數(shù)3.5字符輸入輸出函數(shù)1.用putchar函數(shù)輸出一個字符putchar函數(shù)的一般形式為:putchar(c)2.用getchar函數(shù)輸入一個字符任務(wù)實(shí)施:任務(wù)7統(tǒng)計(jì)捐贈物資——C語句及輸入輸出函數(shù)#include<stdio.h>main(){floatmoney,goods,total;printf("請輸入捐贈的現(xiàn)金數(shù):");
scanf("%f",&money);printf("\n請輸入捐贈的物資數(shù):");
scanf("%f",&goods);total=money+goods;printf("\n您所捐贈的物資總數(shù)為:%f\n",total);}如輸入5000000
45000000則輸出結(jié)果為:任務(wù)總結(jié):任務(wù)7統(tǒng)計(jì)捐贈物資——C語句及輸入輸出函數(shù)本任務(wù)用scanf函數(shù)和printf函數(shù),結(jié)合算術(shù)表達(dá)式和賦值語句輸出捐贈物資總數(shù),要注意輸入輸出函數(shù)中格式符及地址表列的區(qū)別。任務(wù)拓展:請編寫程序?qū)ⅰ癓ove”譯成密碼。密碼規(guī)律是:用原來的字母后面第4個字母代替原來的字母。例如,字母“A”后面第4個字母是“E”,用“E”代替“A”。因此,“Love”應(yīng)譯為“Pszi”。項(xiàng)目總結(jié)C語言的基本數(shù)據(jù)類型有整型、字符型、浮點(diǎn)型,其中浮點(diǎn)型又分為單精度型和雙精度型,C語句分為五類:控制語句、函數(shù)調(diào)用語句、表達(dá)式語句、復(fù)合語句和空語句。數(shù)據(jù)的輸入輸出語句是C語言程序中用的最多的語句,是在函數(shù)庫中調(diào)用的輸入輸出函數(shù):getchar(),putchar(),scanf(),printf()等。項(xiàng)目四
選擇結(jié)構(gòu)程序設(shè)計(jì)任務(wù)8'A'比'a'大嗎?——關(guān)系表達(dá)式任務(wù)9閏年的表示——邏輯表達(dá)式任務(wù)10兒童票售票提示——if選擇語句任務(wù)11打印成績等級——switch多分支語句任務(wù)8'A'比'a'大嗎?——關(guān)系表達(dá)式任務(wù)描述:編寫程序,比較C語言中字母A和字母a的大小。任務(wù)分析:在本任務(wù)中,要比較兩個值的大小需要用到關(guān)系運(yùn)算符。在C語言中,所謂關(guān)系運(yùn)算就是進(jìn)行比較的運(yùn)算:將兩個值進(jìn)行比較,判斷其是否符合給定的條件。若符合,則為真(結(jié)果為1),否則為假(結(jié)果為0)。4.1關(guān)系運(yùn)算符及其優(yōu)先級運(yùn)算符含義優(yōu)先級結(jié)合方向>
大于6自左至右>=大于或等于6自左至右<
小于6自左至右<=小于或等于6自左至右==等于7自左至右!=不等于7自左至右表4-1C語言中的關(guān)系運(yùn)算符任務(wù)8'A'比'a'大嗎?——關(guān)系表達(dá)式4.1關(guān)系運(yùn)算符及其優(yōu)先級(1)“>=”、“<=”、“==”、和“!=”與數(shù)學(xué)中對應(yīng)的運(yùn)算符寫法不同,要注意區(qū)分。(2)關(guān)系運(yùn)算符被分為兩種優(yōu)先級,前四種高于后兩種。關(guān)系運(yùn)算符的優(yōu)先級低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符。(3)當(dāng)相同優(yōu)先級的關(guān)系運(yùn)算符同時出現(xiàn)時,從左至右進(jìn)行運(yùn)算。任務(wù)8'A'比'a'大嗎?——關(guān)系表達(dá)式4.2關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個表達(dá)式連接起來的式子稱為關(guān)系表達(dá)式。關(guān)系表達(dá)式的值是一個邏輯值,即“真”和“假”。C語言沒有邏輯型數(shù)據(jù),以“1”代表“真”,以“0”代表“假”。若有定義語句:a=1,b=2,c=3;則:a<b為真,值為1。a!=b為真,值為1。a==c>b為真,值為1。d=c>b>ad的值為0。任務(wù)8'A'比'a'大嗎?——關(guān)系表達(dá)式#include<stdio.h>main(){inta,b,c;a='A'>'a';b='A'=='a';c='A'<'a';printf("%d,%d,%d",a,b,c);}任務(wù)8'A'比'a'大嗎?——關(guān)系表達(dá)式任務(wù)實(shí)施:任務(wù)8'A'比'a'大嗎?——關(guān)系表達(dá)式任務(wù)總結(jié):關(guān)系表達(dá)式可以像本任務(wù)中這樣賦值給一個變量,也可以作為條件判斷單獨(dú)使用。在使用關(guān)系運(yùn)算符時要注意其與數(shù)學(xué)中運(yùn)算符寫法的不同。任務(wù)拓展:將“知識準(zhǔn)備”中的例子在軟件中進(jìn)行驗(yàn)證,更好地理解掌握關(guān)系表達(dá)式的使用。任務(wù)9閏年的表示——邏輯表達(dá)式任務(wù)描述:閏年分為普通閏年和世紀(jì)閏年:(1)普通閏年:年份是4的倍數(shù),且不是100的倍數(shù)。(2)世紀(jì)閏年:年份是400的倍數(shù)。請用C語言邏輯表達(dá)式來表示閏年。任務(wù)分析:在本任務(wù)中,需要用到邏輯表達(dá)式。要將文字描述轉(zhuǎn)化成C語言的邏輯表達(dá)式,需要先來認(rèn)識邏輯運(yùn)算符。4.3邏輯運(yùn)算符及其優(yōu)先級表4-2C語言中的邏輯運(yùn)算符任務(wù)9閏年的表示——邏輯表達(dá)式運(yùn)算符含義優(yōu)先級結(jié)合方向&&邏輯與11自左至右||邏輯或12自左至右!邏輯非2自右至左4.3邏輯運(yùn)算符及其優(yōu)先級(1)“&&”和“||”為雙目運(yùn)算符,“!”為單目運(yùn)算符。(2)三種邏輯運(yùn)算符優(yōu)先級都不相同,“!”最高,“&&”高于“||”。邏輯運(yùn)算符的優(yōu)先級高于賦值運(yùn)算符。(3)當(dāng)相同優(yōu)先級的邏輯運(yùn)算符同時出現(xiàn)時,“&&”和“||”是從左至右進(jìn)行運(yùn)算,而“!”是從右至左進(jìn)行運(yùn)算。任務(wù)8'A'比'a'大嗎?——關(guān)系表達(dá)式4.4邏輯表達(dá)式用邏輯運(yùn)算符連接若干個表達(dá)式組成的式子稱為邏輯表達(dá)式。與關(guān)系表達(dá)式一樣,邏輯表達(dá)式的值也是一個邏輯值,即“真”和“假”,以“1”代表“真”,以“0”代表“假”。但在判斷一個量是否為“真”時,以“0”代表“假”,以非0代表“真”。1.求值規(guī)則a&&b若a、b同時為真,則a&&b為真,值為1。a||b若a、b之一為真,則a||b為真,值為1。!a若a為真,則!a為假,值為0。任務(wù)9閏年的表示——邏輯表達(dá)式4.4邏輯表達(dá)式2.求值策略按照求值規(guī)則,邏輯與和邏輯或表達(dá)式應(yīng)該從左至右依次計(jì)算各表達(dá)式的值,但實(shí)際上并不一定從左至右運(yùn)算到底,當(dāng)表達(dá)式的值能夠確定的時候運(yùn)算就應(yīng)該停止。(1)a&&b&&c若a為假,則整個表達(dá)式為假,就不必判斷b和c的值;若a為真,b為假,則整個表達(dá)式也為假,就不必判斷c的值。(2)a||b||c若a為真,則整個表達(dá)式為真,就不必判斷b和c的值;若a為假,b為真,則整個表達(dá)式也為真,就不必判斷c的值。任務(wù)9閏年的表示——邏輯表達(dá)式#include<stdio.h>main(){intyear;printf("輸入一個年份:");scanf("%d",&year);if((year%4==0)&&(year%100!=0)||(year%400==0))/*if語句判斷是否滿足條件*/printf("%d年是閏年",year);elseprintf("%d年是平年",year);/*如對非閏年不做要求,可省略此句*/}任務(wù)實(shí)施:任務(wù)9閏年的表示——邏輯表達(dá)式任務(wù)總結(jié):能夠?qū)?shí)際問題的文字描述轉(zhuǎn)換成正確的邏輯表達(dá)式是本任務(wù)的重點(diǎn)在邏輯運(yùn)算中,需要綜合運(yùn)用運(yùn)算符的優(yōu)先級、結(jié)合性、求值規(guī)則以及求值策略。任務(wù)拓展:1.用邏輯表達(dá)式表示1<x≤10。2.用邏輯表達(dá)式表示x是3或5的倍數(shù)。任務(wù)9閏年的表示——邏輯表達(dá)式任務(wù)10兒童票售票提示——if選擇語句任務(wù)描述:按照《鐵路旅客運(yùn)輸規(guī)程》規(guī)定,隨同成人旅行的身高1.2~1.5米的兒童,享受半價客票;超過1.5米的兒童應(yīng)買全價票;每一成人旅客可免費(fèi)攜帶一名身高不足1.2米的兒童。編寫程序,根據(jù)用戶輸入的兒童身高給出相應(yīng)的售票提示。任務(wù)分析:在本任務(wù)中,需要根據(jù)用戶輸入的兒童身高選擇給出對應(yīng)的提示,這就需要用到選擇程序結(jié)構(gòu)了,if語句就是通過條件判斷來實(shí)現(xiàn)選擇結(jié)構(gòu)的。4.5if語句的三種形式任務(wù)10兒童票售票提示——if選擇語句1.if語句語句格式:if(表達(dá)式)語句;執(zhí)行過程:先判斷表達(dá)式,如果表達(dá)式為真,則執(zhí)行表達(dá)式后面的語句,否則跳過該語句,執(zhí)行if語句之后的語句。4.5if語句的三種形式任務(wù)10兒童票售票提示——if選擇語句1.if語句(1)“表達(dá)式”可以為任何類型的表達(dá)式:關(guān)系表達(dá)式、邏輯表達(dá)式、算術(shù)表達(dá)式、賦值表達(dá)式等。(2)if表達(dá)式后邊的“語句”,也稱if的內(nèi)嵌語句。內(nèi)嵌語句可以是單條語句,也可以有多條語句。如果是多條語句,要用一對{}將它們括起來構(gòu)成一條復(fù)合語句。if(a>b){t=a;a=b;b=t;}printf("%d",a);4.5if語句的三種形式任務(wù)10兒童票售票提示——if選擇語句2.if…else語句語句格式:if(表達(dá)式)語句1;else語句2;執(zhí)行過程如圖所示:先判斷表達(dá)式,如果表達(dá)式為真,則執(zhí)行語句1,否則執(zhí)行語句2。4.5if語句的三種形式任務(wù)10兒童票售票提示——if選擇語句3.if語句的嵌套(1)當(dāng)實(shí)際運(yùn)用中面臨兩種以上的選擇時,把if…else語句稍加擴(kuò)展就能滿足需求。其一般形式為:if(表達(dá)式1)語句1;elseif(表達(dá)式2)語句2;elseif(表達(dá)式3)語句3;
elseif(表達(dá)式m)語句m;else語句n;4.5if語句的三種形式任務(wù)10兒童票售票提示——if選擇語句(2)一條if語句中可以包含另一條if語句,稱為if語句的嵌套。在嵌套的if語句中,else與它前面最近的if配對,除非用花括號來改變。格式1:if(表達(dá)式)if(表達(dá)式)語句1;else語句2;格式2:if(表達(dá)式){if(表達(dá)式)語句1;}else語句2;4.5if語句的三種形式任務(wù)10兒童票售票提示——if選擇語句配對關(guān)系不同,程序運(yùn)行結(jié)果就不同,試比較以下兩個程序段的輸出結(jié)果。程序段1:if(score>=60)if(score<70)printf("Pass!");elseprintf("Good!");程序段2:if(score>=60){if(score<70)printf("Pass!");}elseprintf("Good!");4.6條件表達(dá)式任務(wù)10兒童票售票提示——if選擇語句使用條件表達(dá)式可以達(dá)到簡單的if…else的功能,條件運(yùn)算符是C語言中唯一的三目運(yùn)算符,其一般形式為:表達(dá)式1?表達(dá)式2:表達(dá)式3當(dāng)表達(dá)式1為真時,整個條件表達(dá)式的值等于表達(dá)式2的值,否則結(jié)果為表達(dá)式3的值(1)條件運(yùn)算符的優(yōu)先級為13級,高于賦值運(yùn)算符和逗號運(yùn)算符,但低于其它運(yùn)算符。max=x>y?x:y;先計(jì)算x>y是否為真,如果為真,則把x的值賦給max,否則將y的值賦給max。(2)條件運(yùn)算符的結(jié)合性為右結(jié)合性,即自右向左進(jìn)行計(jì)算。max=x>y?x:y>z?y:z;等價于max=x>y?x:(y>z?y:z);#include<stdio.h>main(){floath;printf("請輸入兒童身高(米):");scanf("%f",&h);if(h<1.2)printf("免票!");elseif(h<=1.5)printf("請購買半價票!");elseprintf("請購買全價票!");}任務(wù)實(shí)施:任務(wù)10兒童票售票提示——if選擇語句任務(wù)總結(jié):多個if結(jié)構(gòu)并列,有執(zhí)行多個分支的可能性基本的if…else結(jié)構(gòu)以及擴(kuò)展的if…else結(jié)構(gòu)只能根據(jù)條件執(zhí)行其中的一個分支使用if…else的嵌套結(jié)構(gòu)要仔細(xì)確定好if與else的配對。任務(wù)拓展:1.從鍵盤輸入3個數(shù),判斷能否構(gòu)成三角形,如果能,則輸出該三角形的形狀信息(等邊、等腰、任意三種情況),否則輸出提示。2.從鍵盤上輸入3個數(shù),按照從大到小的順序輸出。3.從鍵盤輸入一個字母,判斷它是否為大寫英文字母,若是,轉(zhuǎn)換成對應(yīng)的小寫字母,否則原樣輸出(用條件表達(dá)式實(shí)現(xiàn))。任務(wù)10兒童票售票提示——if選擇語句任務(wù)描述:編寫程序,當(dāng)輸入學(xué)生的考試成績(百分制)后,輸出學(xué)生的成績等級:90分及以上為優(yōu),80-89分為良,70-79分為中,60-69分為及格,60分以下為不及格。任務(wù)分析:在本任務(wù)中,程序面臨多重選擇,使用if嵌套語句可以實(shí)現(xiàn)多重選擇,但是嵌套層次過多,這時使用switch多分支語句更為方便。任務(wù)11打印成績等級——switch多分支語句4.7switch多分支語句任務(wù)11打印成績等級——switch多分支語句switch(表達(dá)式){case常量表達(dá)式1:
語句序列1;[break;]case常量表達(dá)式2:
語句序列2;[break;]
case常量表達(dá)式n:
語句序列n;[break;][default:語句序列n+1;]}4.7switch多分支語句任務(wù)11打印成績等級——switch多分支語句switch語句的工作過程是:先計(jì)算switch括號中表達(dá)式的值,如果它與某一case后的常量表達(dá)式的值相等,則執(zhí)行這個case常量后的語句序列,遇到break語句后,跳出switch結(jié)構(gòu),執(zhí)行switch結(jié)構(gòu)后的語句。若表達(dá)式的值與所有case后的常量都不相等,則執(zhí)行default(如果有)后的語句序列。#include<stdio.h>main(){floatscore;intx;printf("請輸入成績:");scanf("%f",&score);x=score/10;switch(x){case10:case9:printf("優(yōu)\n");break;case8:printf("良\n");break;case7:printf("中\(zhòng)n");break;case6:printf("及格\n");break;default:printf("不及格\n");}}任務(wù)實(shí)施:任務(wù)11打印成績等級——switch多分支語句任務(wù)總結(jié):本任務(wù)使用switch語句實(shí)現(xiàn)了五重分支結(jié)構(gòu),break語句作用非常關(guān)鍵,使程序能及時跳出switch結(jié)構(gòu)。任務(wù)拓展:編寫一個程序,能夠?qū)蓚€操作數(shù)進(jìn)行基本的四則運(yùn)算,例如從鍵盤上輸入“3+5”時,輸出“15”,當(dāng)除數(shù)為0時,輸出提示“除數(shù)不能為零!”。任務(wù)11打印成績等級——switch多分支語句(1)關(guān)系表達(dá)式和邏輯表達(dá)式均可用于判斷,前者適合單個條件的簡單判斷,后者可將多個簡單判斷聯(lián)合構(gòu)成復(fù)雜的判斷。這兩種表達(dá)式的值均為“真”或“假”,在C語言中使用數(shù)值1和0來表示的。(2)使用關(guān)系表達(dá)式和邏輯表達(dá)式時要注意與數(shù)學(xué)上表達(dá)方式的不同,多個運(yùn)算符同時使用時要注意優(yōu)先級和結(jié)合性。(3)多個if結(jié)構(gòu)并列,有執(zhí)行多個分支的可能性,基本的if…else結(jié)構(gòu)以及擴(kuò)展的if…else結(jié)構(gòu)只能根據(jù)條件執(zhí)行其中的一個分支,要根據(jù)需要靈活選用。if…else的嵌套結(jié)構(gòu)要仔細(xì)確定好if與else的配對。(4)當(dāng)程序面臨多重選擇時,選用switch多分支語句更為方便。項(xiàng)目總結(jié)項(xiàng)目五
循環(huán)結(jié)構(gòu)程序設(shè)計(jì)任務(wù)12求階乘——for語句任務(wù)13求π的近似值——while語句任務(wù)14計(jì)算數(shù)字位數(shù)——do…while語句任務(wù)15統(tǒng)計(jì)非正常視力人數(shù)——轉(zhuǎn)移控制語句任務(wù)16輸出區(qū)間內(nèi)素?cái)?shù)——循環(huán)結(jié)構(gòu)的比較與嵌套任務(wù)描述:編寫程序,求10!(10!=1*2*3…*10)。任務(wù)分析:在本任務(wù)中,“有規(guī)律性的重復(fù)”表現(xiàn)為每次在上次乘積的基礎(chǔ)上再乘以比上次大1的數(shù),所以應(yīng)該用循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)。從1到10共有10個數(shù)相乘,也就是循環(huán)變量初值、步長增量、循環(huán)次數(shù)都已確定,所以適合用for語句來實(shí)現(xiàn)。任務(wù)12求階乘——for語句5.1for語句for語句的一般形式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
{語句序列;}說明:(1)“表達(dá)式1”一般為賦值表達(dá)式,為循環(huán)變量賦初值。(2)“表達(dá)式2”一般為關(guān)系表達(dá)式或邏輯表達(dá)式,表示循環(huán)條件。(3)“表達(dá)式3”一般為賦值表達(dá)式,表示循環(huán)變量的更新。(4)“語句序列”是需要重復(fù)執(zhí)行的循環(huán)體,可以是單條語句,也可以是用花括號括起來的復(fù)合語句。任務(wù)12求階乘——for語句5.1for語句for語句的一般形式(1)計(jì)算“表達(dá)式1”的值,即對循環(huán)變量賦初值。(2)以“表達(dá)式2”作為循環(huán)條件,若結(jié)果為真,轉(zhuǎn)步驟(3);若為假,轉(zhuǎn)步驟(5)。(3)執(zhí)行一次循環(huán)體,即“語句序列”。(4)計(jì)算“表達(dá)式3”,即對循環(huán)變量進(jìn)行更新,轉(zhuǎn)到步驟(2)。(5)結(jié)束循環(huán),執(zhí)行for循環(huán)之后的語句。任務(wù)12求階乘——for語句5.1for語句for語句的一般形式從以上執(zhí)行流程可知,for循環(huán)先判斷條件后執(zhí)行循環(huán)體,因此循環(huán)次數(shù)可能為0。例:以下為計(jì)算1+2+…+10的程序段,試陳述程序執(zhí)行過程。sum=0;for(i=1;i<=10;i++)sum+=i;任務(wù)12求階乘——for語句5.1for語句2.for語句的變式(1)for語句中的表達(dá)式可以部分或全部省略,但兩個“;”不能省略。變式1:sum=0,i=1;for(;i<=10;i++)sum+=i;任務(wù)12求階乘——for語句變式2:sum=0;for(i=1;i<=10;){sum+=i;i++;}變式3:sum=0,i=1;for(;i<=10;){sum+=i;i++;}5.1for語句(2)for語句中的表達(dá)式允許出現(xiàn)與循環(huán)控制無關(guān)的表達(dá)式,例如剛才的程序段可以做如下變式:for(sum=0,i=1;i<=10;sum+=i,i++);任務(wù)12求階乘——for語句#include<stdio.h>main(){inti,t=1;for(i=1;i<=10;i++)t*=i;printf("10!=%d",t);}任務(wù)實(shí)施:任務(wù)12求階乘——for語句任務(wù)總結(jié):for語句特別適合于給定循環(huán)變量初值、步長增量以及循環(huán)次數(shù)的循環(huán)結(jié)構(gòu)。在使用for循環(huán)實(shí)現(xiàn)求和、求積運(yùn)算時要特別注意和積變量賦初值的問題。任務(wù)拓展:輸出所有的水仙花數(shù)(水仙花數(shù)是一個三位數(shù),其各數(shù)位上的數(shù)字立方之和等于該書本身,如153=13+53+33)。任務(wù)12求階乘——for語句任務(wù)13求π的近似值——while語句任務(wù)描述:利用以下公式求解π的近似值,直到最后一項(xiàng)的絕對值小于10-8為止。任務(wù)分析:從公式來看,它滿足“有規(guī)律的重復(fù)”,要使用循環(huán)結(jié)構(gòu),但跟任務(wù)12不同的是循環(huán)次數(shù)并不確定,所以要用一種新的循環(huán)語句——while語句。5.2while語句while語句用來實(shí)現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu),其一般格式為:while(表達(dá)式){語句序列;}(1)“表達(dá)式”一般為關(guān)系表達(dá)式或邏輯表達(dá)式,表示循環(huán)條件。(2)“語句序列”是需要重復(fù)執(zhí)行的循環(huán)體,可以是單條語句,也可以是用花括號括起來的復(fù)合語句。(3)循環(huán)體內(nèi)一般要有能夠改變表達(dá)式值的操作,最終使表達(dá)式的值變?yōu)?,如果沒有改變表達(dá)式值的操作,也可以在循環(huán)體內(nèi)借助break語句強(qiáng)行退出循環(huán)。任務(wù)13求π的近似值——while語句5.2whi
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年塑膠原料交易合同
- 2024年定制擠塑板買賣合同
- 城市綠化給水設(shè)施改造施工協(xié)議
- 創(chuàng)業(yè)園區(qū)直接二手房交易合同
- 中西醫(yī)臨床醫(yī)學(xué)實(shí)習(xí)協(xié)議
- 生態(tài)城市規(guī)劃與建設(shè)政策實(shí)施
- 商業(yè)步行街商鋪托管協(xié)議
- 航空航天臨時用電管理辦法
- 航空航天項(xiàng)目投標(biāo)文件模板
- 勞動力市場供需分析報(bào)告
- 河南省信陽市2024-2025學(xué)年七年級上學(xué)期期中歷史試題(含答案)
- GB/T 44570-2024塑料制品聚碳酸酯板材
- 2024年學(xué)校食堂管理工作計(jì)劃(六篇)
- 體育賽事組織服務(wù)協(xié)議
- 天車工競賽考核題
- 民辦非企業(yè)單位理事會制度
- 臨床輸血的護(hù)理課件
- 民生銀行在線測評真題
- 人教版(PEP)小學(xué)六年級英語上冊全冊教案
- 大學(xué)美育學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年人教版七年級上冊地理期中測試試卷及答案
評論
0/150
提交評論