遼師大版信息技術(shù)九年《順序結(jié)構(gòu)程序設(shè)計(jì)》 課件_第1頁
遼師大版信息技術(shù)九年《順序結(jié)構(gòu)程序設(shè)計(jì)》 課件_第2頁
遼師大版信息技術(shù)九年《順序結(jié)構(gòu)程序設(shè)計(jì)》 課件_第3頁
遼師大版信息技術(shù)九年《順序結(jié)構(gòu)程序設(shè)計(jì)》 課件_第4頁
遼師大版信息技術(shù)九年《順序結(jié)構(gòu)程序設(shè)計(jì)》 課件_第5頁
已閱讀5頁,還剩115頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第3講順序結(jié)構(gòu)程序設(shè)計(jì)第3講順序結(jié)構(gòu)程序設(shè)計(jì)1第3章順序結(jié)構(gòu)程序設(shè)計(jì)3.1程序設(shè)計(jì)概述3.2C語言語句3.3格式化輸出函數(shù)printf()3.4格式化輸入函數(shù)scanf()3.5單個(gè)字符的輸入/輸出函數(shù)3.6順序程序設(shè)計(jì)舉例第3章順序結(jié)構(gòu)程序設(shè)計(jì)3.1程序設(shè)計(jì)概述23.1程序設(shè)計(jì)概述3.1.1算法的概念簡單地說,程序的功能就是進(jìn)行數(shù)據(jù)加工。程序通常包括兩方面的內(nèi)容:對(duì)數(shù)據(jù)的描述和對(duì)加工的描述對(duì)數(shù)據(jù)的描述稱為“數(shù)據(jù)結(jié)構(gòu)”,對(duì)加工的描述稱為“算法”廣義地說,為解決某一個(gè)問題而采取的方法和步驟,就稱為“算法”。在計(jì)算機(jī)科學(xué)中,算法是指描述用計(jì)算機(jī)解決給定問題的過程。例如,計(jì)算1+2+3+…+1000的算法可表示為?3.1程序設(shè)計(jì)概述3.1.1算法的概念?3例如,計(jì)算1+2+3+…+1000的算法可表示為步驟1:0

s;步驟2:1

i;步驟3:s+i

s;步驟4:i+1

i;步驟5:如果i≤1000,轉(zhuǎn)到步驟3,否則結(jié)束。例如,計(jì)算1+2+3+…+1000的算法可表示為4在上面的算法中,符號(hào)s、i表示變量,符號(hào)“”表示給變量賦值。步驟1和步驟2表示給變量s和i賦初始值為0和1;步驟3將變量i的當(dāng)前值累加到變量s中;步驟4使變量i在原值的基礎(chǔ)上增加1;步驟5判斷i的值如果小于等于1000,重復(fù)做步驟3和步驟4,構(gòu)成一個(gè)循環(huán),而當(dāng)i的值不小于等于1000時(shí),循環(huán)結(jié)束,這時(shí),變量s的值就是要求的計(jì)算結(jié)果。在上面的算法中,符號(hào)s、i表示變量,符號(hào)“”表示給變量賦值53.1.2算法的特征通常,一個(gè)算法必須具備以下五個(gè)基本特征:(1)有窮性。一個(gè)算法必須在它所涉及的每一種情形下,都能在執(zhí)行有限次的操作之后結(jié)束。(2)確定性。算法的每一步,其順序和內(nèi)容都必須嚴(yán)格定義,而不能有任何的歧義。(3)有零個(gè)或多個(gè)輸入。輸入是算法實(shí)施前需要從外界取得的信息,有些算法需要有多個(gè)輸入,而有些算法不需要輸入,即零個(gè)輸入。(4)有一個(gè)或多個(gè)輸出。輸出就是算法實(shí)施后得到的結(jié)果,顯然,沒有輸出的算法是沒有意義的。(5)可行性。算法的每一步都必須是可行的,也就是說,是能夠由計(jì)算機(jī)執(zhí)行的。3.1.2算法的特征63.1.3算法的描述1.用自然語言描述自然語言就是人們?nèi)粘J褂玫恼Z言,前面的算法就是用自然語言表示的。用自然語言表示算法,通俗易懂。但是,自然語言表示的含義往往不太嚴(yán)格,要根據(jù)上下文才能判斷它的正確含義。另外,用自然語言描述分支和循環(huán)不很方便。因此,除對(duì)簡單的問題使用以外,一般不用自然語言描述算法。計(jì)算機(jī)該用何種形式來描述問題更為簡潔、明了?3.1.3算法的描述計(jì)算機(jī)該用何種形式來描述問題更72.用流程圖描述傳統(tǒng)的流程圖由圖3-1所示的幾種基本元素組成。用流程圖描述算法,形象直觀,簡單方便。例如,前面的算法用流程圖可表示為如圖3-2所示。2.用流程圖描述8圖3-1流程圖基本元素圖3-1流程圖基本元素9圖3-2計(jì)算1+2+3+…+1000的算法流程圖圖3-2計(jì)算1+2+3+…+1000的算法流程圖103.用N-S流程圖描述算法傳統(tǒng)的流程圖用流程線和流程元素表示各個(gè)處理的執(zhí)行順序,但對(duì)流程線的使用沒有嚴(yán)格的規(guī)定,因此,使用者可以不受限制地使流程轉(zhuǎn)來轉(zhuǎn)去,這樣的流程圖使人難以理解算法的邏輯。為了解決這個(gè)問題,規(guī)定了算法的三種基本結(jié)構(gòu):順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)用這些基本結(jié)構(gòu)按一定的規(guī)律組成一個(gè)算法,這樣的算法稱為結(jié)構(gòu)化算法。按照結(jié)構(gòu)化算法編寫的程序稱為結(jié)構(gòu)化程序。為了設(shè)計(jì)結(jié)構(gòu)化算法,1973年,美國學(xué)者I.Nassi和B.Shneiderman提出一種新的流程圖,稱為N-S流程圖。N-S流程圖的基本符號(hào)如圖3-3所示。3.用N-S流程圖描述算法11圖3-3N-S流程圖基本符號(hào)圖3-3N-S流程圖基本符號(hào)12圖3-4計(jì)算1+2+3+…+1000算法的N-S圖圖3-4計(jì)算1+2+3+…+1000算法的N-S圖133.1.4結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)強(qiáng)調(diào)程序設(shè)計(jì)風(fēng)格和程序結(jié)構(gòu)的規(guī)范化,提倡清晰的結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計(jì)的基本思路是:把一個(gè)復(fù)雜問題的解決過程分階段進(jìn)行每一個(gè)階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)是在分析問題時(shí)采用“自頂向下,逐步細(xì)化”的方法3.1.4結(jié)構(gòu)化程序設(shè)計(jì)方法14“自頂向下,逐步細(xì)化”是對(duì)問題的解決過程逐步具體化的一種思想方法。例如,要在一組數(shù)中找出其中的最大數(shù),首先,可以把問題的解決過程描述為(1)輸入一組數(shù)。(2)找出其中的最大數(shù)。(3)輸出最大數(shù)?!白皂斚蛳?,逐步細(xì)化”15以上三條中,第(1)、(3)兩步比較簡單,對(duì)第(2)步可以進(jìn)一步細(xì)化:(1)任取一數(shù),假設(shè)它就是最大數(shù)。(2)將該數(shù)與其余各數(shù)逐一比較。(3)若發(fā)現(xiàn)有任何數(shù)大于假設(shè)的最大數(shù),則取而代之。以上三條中,第(1)、(3)兩步比較簡單,對(duì)第(2)步可以進(jìn)16再對(duì)以上過程進(jìn)一步具體化,得到如下算法:(1)輸入一組數(shù)。(2)找出其中的最大數(shù)。①令max=第一個(gè)數(shù)。②將第二個(gè)數(shù)到最后一個(gè)數(shù)依次取出。③比較x與max的大小,如果x>max,則令max=x。(3)輸出max。再對(duì)以上過程進(jìn)一步具體化,得到如下算法:17“模塊化設(shè)計(jì)”就是將比較復(fù)雜的任務(wù),分解成若干個(gè)子任務(wù)每個(gè)子任務(wù)又分解成若干個(gè)小子任務(wù)每個(gè)小子任務(wù)只完成一項(xiàng)簡單的功能在程序設(shè)計(jì)時(shí),用一個(gè)個(gè)小模塊來實(shí)現(xiàn)這些功能,每個(gè)小模塊對(duì)應(yīng)一個(gè)相對(duì)獨(dú)立的子程序。對(duì)程序設(shè)計(jì)人員來說,編寫程序也就變得不再困難?!澳K化設(shè)計(jì)”就是將比較復(fù)雜的任務(wù),分解成若干個(gè)子任務(wù)18“結(jié)構(gòu)化編碼”指的是使用支持結(jié)構(gòu)化方法的高級(jí)語言編寫程序。C語言就是一種支持結(jié)構(gòu)化程序設(shè)計(jì)的高級(jí)語言,它直接提供了三種基本結(jié)構(gòu)的語句;提供了定義“函數(shù)”的功能,函數(shù)相當(dāng)于獨(dú)立的子程序。另外,還提供了豐富的數(shù)據(jù)類型。這些都為結(jié)構(gòu)化設(shè)計(jì)提供了有力的工具?!敖Y(jié)構(gòu)化編碼”指的是使用支持結(jié)構(gòu)化方法的高級(jí)語言編寫程序。193.2C語言語句C語言程序是由函數(shù)構(gòu)成的,而函數(shù)又是由函數(shù)說明和函數(shù)體兩部分組成,其中,函數(shù)體是函數(shù)的核心。與其他高級(jí)語言一樣,C語言也是利用函數(shù)體中的可執(zhí)行語句,向計(jì)算機(jī)系統(tǒng)發(fā)出操作命令。按照語句功能或構(gòu)成的不同,可將C語言語句分為如下五類:控制語句\函數(shù)調(diào)用語句\表達(dá)式語句\空語句\復(fù)合語句3.2C語言語句C語言程序是由函數(shù)構(gòu)成的201.控制語句控制語句完成一定的控制功能。C語言只有9條控制語句,又可細(xì)分為三種:(1)選擇結(jié)構(gòu)控制語句:if()…else…,switch()…(2)循環(huán)結(jié)構(gòu)控制語句:do…while(),for()…,while()…,break,continue(3)其他控制語句:goto,return1.控制語句212.函數(shù)調(diào)用語句函數(shù)調(diào)用語句由一次函數(shù)調(diào)用加一個(gè)分號(hào)(語句結(jié)束標(biāo)志)構(gòu)成。例如:printf("ThisisaCProgram.");3.表達(dá)式語句表達(dá)式語句由表達(dá)式后加一個(gè)分號(hào)構(gòu)成。表達(dá)式能構(gòu)成語句是C語言的一大特色。最典型的表達(dá)式語句是在賦值表達(dá)式后加一個(gè)分號(hào)構(gòu)成的賦值語句。例如,“num=5”是一個(gè)賦值表達(dá)式,而“num=5;”卻是一個(gè)賦值語句。2.函數(shù)調(diào)用語句224.空語句

空語句僅由一個(gè)分號(hào)構(gòu)成。顯然,空語句什么操作也不執(zhí)行。5.復(fù)合語句復(fù)合語句由大括號(hào)括起來的一組(也可以是一條)語句構(gòu)成。例如:4.空語句23說明:(1)在語法上,復(fù)合語句和簡單語句相同,即簡單語句可以出現(xiàn)的地方,都可以使用復(fù)合語句。(2)復(fù)合語句可以嵌套,即復(fù)合語句中也可包含一個(gè)或多個(gè)復(fù)合語句。main(){

{inta=1,b;b=a*a-1;復(fù)合語句printf("%d",b);

} /*注意:右括號(hào)后不需要分號(hào)*/}說明:main()243.3格式化輸出函數(shù)printf()程序運(yùn)行中,有時(shí)候需要從外部設(shè)備(例如鍵盤)上得到一些原始數(shù)據(jù),程序計(jì)算結(jié)束后,通常要把計(jì)算結(jié)果發(fā)送到外部設(shè)備(例如顯示器)上,以便人們對(duì)結(jié)果進(jìn)行分析。我們把程序從外部設(shè)備上獲得數(shù)據(jù)的操作稱為“輸入”,而把程序發(fā)送數(shù)據(jù)到外部設(shè)備的操作稱為“輸出”。3.3格式化輸出函數(shù)printf()程序運(yùn)行中,有時(shí)候需25不像其他的高級(jí)語言,C語言沒有專門的輸入/輸出語句,輸入/輸出的操作是通過調(diào)用C語言的庫函數(shù)來實(shí)現(xiàn)的。printf()函數(shù)就是最常用的輸出函數(shù),它的作用是向計(jì)算機(jī)系統(tǒng)默認(rèn)的輸出設(shè)備(一般指顯示器)輸出一個(gè)或多個(gè)任意指定類型的數(shù)據(jù)。不像其他的高級(jí)語言,C語言沒有專門的輸入/輸出語句,輸入/輸263.3.1printf()函數(shù)的一般格式調(diào)用printf()函數(shù)的一般格式為printf("格式字符串",輸出表項(xiàng));例如:printf("radius=%f\nlength=%7.2f,area=%7.2f\n",r,l,a);printf("格式字符串",輸出表項(xiàng));3.3.1printf()函數(shù)的一般格式printf(27

格式字符串也稱格式控制字符串或格式轉(zhuǎn)換字符串,其中可以包含下列三種字符:(1)格式指示符:這些字符用來控制數(shù)據(jù)的輸出格式例如“%f”、“%7.2f”等(2)轉(zhuǎn)義字符:這些字符通常用來控制光標(biāo)的位置。(3)普通字符:除格式指示符和轉(zhuǎn)義字符之外的其他字符,這些字符輸出時(shí)原樣輸出例如上面例子中的“radius=”等printf("radius=%f\nlength=%7.2f,area=%7.2f\n",

r,l,a);printf("格式字符串",輸出表項(xiàng));格式字符串也稱格式控制字符串或格式轉(zhuǎn)換字符串,其中可以包含28輸出表項(xiàng)由若干個(gè)輸出項(xiàng)構(gòu)成,輸出項(xiàng)之間用逗號(hào)來分隔,每個(gè)輸出項(xiàng)既可以是常量、變量,也可以是表達(dá)式。有時(shí)候,調(diào)用printf()函數(shù)時(shí),也可以沒有輸出項(xiàng)。在這種情況下,一般用來輸出一些提示信息,例如:printf("Hello,world!\n");printf("格式字符串",輸出表項(xiàng));輸出表項(xiàng)printf("格式字符串",輸出表項(xiàng));293.3.2格式指示符格式指示符的一般形式為%[修飾符]格式字符1.格式字符printf函數(shù)中常用的格式字符如表3-1所示。%[修飾符]格式字符3.3.2格式指示符%[修飾符]格式字符30表3-1常用的格式字符格式字符說明舉例輸出結(jié)果d帶符號(hào)十進(jìn)制整數(shù)格式printf("%d",10);10printf("%d",'A');65u無符號(hào)十進(jìn)制整數(shù)格式printf("%u",10);10printf("%u",'A');65x或X無符號(hào)十六進(jìn)制整數(shù)格式printf("%x",10);aprintf("%x",'A');41printf("%X",10);A%[修飾符]格式字符表3-1常用的格式字符格式說明舉例輸出結(jié)果d帶31o無符號(hào)八進(jìn)制整數(shù)格式printf("%o",10);12printf("%o",'A');101c字符格式printf("%c",10);換行printf("%c",'A');Af小數(shù)格式printf("%f",1.2345);1.234500e或E指數(shù)格式printf("%e",1.2345);1.23450e+00printf("%E",1.2345);1.23450E+00g或G小數(shù)形式或指數(shù)形式,使輸出寬度最小,不輸出無意義的0printf("%g",1.2345);1.2345printf("%g",0.000001);1e-06printf("%G",0.000001);1E-06%輸出%printf("%%");%s輸出字符串printf("%s","abcde");abcde%[修飾符]格式字符o無符號(hào)八進(jìn)制整數(shù)格式printf("%o",10);1322.長度修飾符長度修飾符“l(fā)”加在%號(hào)和格式字符之間。輸出長整型數(shù)據(jù)的時(shí)候,一定要加長度修飾符,否則,得不到正確的顯示結(jié)果。例如:longx=7654321;printf("x=%ld\n",x);輸出結(jié)果為:x=7654321。%[修飾符]格式字符l2.長度修飾符%[修飾符]格式字符l333.寬度修飾和精度修飾可以在%號(hào)和格式字符之間加入形如“m.n”(m、n均為整數(shù))的修飾。其中,m為寬度修飾,n為精度修飾。寬度修飾用來指定數(shù)據(jù)的輸出寬度精度修飾對(duì)不同的格式字符,n作用不同:對(duì)于格式字符f,用來指定輸出小數(shù)位的位數(shù);對(duì)于格式字符e,用來指定輸出有效數(shù)字的位數(shù);對(duì)于格式字符d,用來指定必須輸出的數(shù)字的個(gè)數(shù)。相關(guān)的例子如表3-2所示。%[修飾符]格式字符m.n3.寬度修飾和精度修飾%[修飾符]格式字符m.n34表3-2寬度修飾和精度修飾示例輸出語句輸出結(jié)果(□表示空格)printf("%5d",42);□□□42printf("%5.3d",42);□□042printf("%.3d",42);042printf("%7.2f",1.23456);□□□1.23printf("%.2f",1.23456);1.23printf("%10.2e",1.23456);□□□1.2e+00printf("%.2e",1.23456);1.2e+00表3-2寬度修飾和精度修飾示例輸出語句輸出結(jié)果(□表示354.左對(duì)齊修飾 在指定了寬度修飾時(shí),如果指定寬度小于數(shù)據(jù)需要的實(shí)際寬度,則數(shù)據(jù)左邊補(bǔ)空格,補(bǔ)夠指定的寬度,這種對(duì)齊方式稱為“右對(duì)齊”。當(dāng)然,也可以在數(shù)據(jù)的右邊補(bǔ)空格來補(bǔ)夠指定的寬度,這種對(duì)齊方式稱為“左對(duì)齊”。指定左對(duì)齊的時(shí)候,使用左對(duì)齊修飾符“-”,例如語句:printf("%-7.2f\n",1.23456);輸出結(jié)果為1.23□□□(右邊補(bǔ)三個(gè)空格)%[修飾符]格式字符-4.左對(duì)齊修飾%[修飾符]格式字符-363.3.3使用說明(1)printf()函數(shù)可以輸出常量、變量和表達(dá)式的值。但格式控制字符串中的格式指示符必須按從左到右的順序,與輸出項(xiàng)表中的每個(gè)數(shù)據(jù)一一對(duì)應(yīng),否則出錯(cuò)。(2)格式字符x、e、g可以用小寫字母,也可以用大寫字母。使用大寫字母時(shí),輸出數(shù)據(jù)中包含的字母也大寫。除了x、e、g格式字符外,其他格式字符必須用小寫字母例如,“%f”不能寫成“%F”。(3)格式字符緊跟在“%”后面就作為格式字符,否則將作為普通字符使用(原樣輸出)例如,“printf("c=%c,f=%f\n",c,f);”中的第一個(gè)c和f都是普通字符。3.3.3使用說明373.4格式化輸入函數(shù)scanf()scanf()函數(shù)的功能是從計(jì)算機(jī)默認(rèn)的輸入設(shè)備(一般指鍵盤)向計(jì)算機(jī)主機(jī)輸入數(shù)據(jù)。3.4.1scanf()函數(shù)的一般格式調(diào)用scanf()函數(shù)的一般格式為scanf("格式字符串",

輸入項(xiàng)地址表);例如:scanf("%d%f",&i,&f);scanf("格式字符串",輸入項(xiàng)地址表);3.4格式化輸入函數(shù)scanf()scanf()函數(shù)的功38(1)格式字符串:格式字符串可以包含三種類型的字符:格式指示符格式指示符用來指定數(shù)據(jù)的輸入格式;空白字符(空格、跳格鍵、回車鍵)和空白字符作為相鄰兩個(gè)輸入數(shù)據(jù)的缺省分隔符;非空白字符(又稱普通字符)。非空白字符在輸入有效數(shù)據(jù)時(shí),必須原樣一起輸入。scanf("格式字符串",輸入項(xiàng)地址表);(1)格式字符串:scanf("格式字符串",輸入項(xiàng)地址39(2)輸入項(xiàng)地址表:由若干個(gè)輸入項(xiàng)地址組成,相鄰兩個(gè)輸入項(xiàng)地址之間用逗號(hào)分開。輸入項(xiàng)地址表中的地址,可以是變量的地址,也可以是字符數(shù)組名或指針變量變量地址的表示方法為“&變量名”其中,“&”是地址運(yùn)算符。scanf("格式字符串",輸入項(xiàng)地址表);&變量名(2)輸入項(xiàng)地址表:scanf("格式字符串",輸入項(xiàng)地403.4.2格式指示符格式指示符的一般形式為%【修飾符】格式字符scanf函數(shù)中使用的格式字符如表3-4所示。3.4.2格式指示符41表3-4常用格式字符格式字符說明d輸入十進(jìn)制整數(shù)o輸入八進(jìn)制整數(shù)x輸入十六進(jìn)制整數(shù)u輸入無符號(hào)十進(jìn)制整數(shù)c輸入一個(gè)字符f和e輸入小數(shù)形式或指數(shù)形式的實(shí)型數(shù)據(jù)s輸入字符串表3-4常用格式字符格式字符說明d輸入十進(jìn)制整421.寬度修飾寬度修飾用來指定輸入數(shù)據(jù)所占列數(shù)例如:scanf("%3c%3c",&ch1,&ch2);假設(shè)輸入“abcdefg”則系統(tǒng)將讀取的“abc”中的“a”賦給變量ch1;讀取的“def”中的“d”賦給變量ch2。1.寬度修飾432.抑制修飾符抑制修飾符“*”表示對(duì)應(yīng)的數(shù)據(jù)讀入后,不賦給相應(yīng)的變量,該變量由下一個(gè)格式指示符輸入。例如:scanf("%2d%*2d%3d",&num1,&num2);假設(shè)輸入“123456789”,則系統(tǒng)將讀取“12”并賦值給num1;讀取“34”,但舍棄掉(“*”的作用);讀取“567”并賦值給num2。2.抑制修飾符443.長度修飾符在輸入長整型數(shù)據(jù)和雙精度實(shí)型數(shù)據(jù)時(shí),必須使用長度修飾符“l(fā)”,否則,不能得到正確的輸入值。例如:longx;doubley;scanf("%ld%lf",&x,&y);3.長度修飾符453.4.3使用說明調(diào)用scanf()函數(shù)輸入數(shù)據(jù)時(shí),要注意以下幾點(diǎn):(1)如果相鄰兩個(gè)格式指示符之間,不指定數(shù)據(jù)分隔符(如逗號(hào)、冒號(hào)等),則相應(yīng)的兩個(gè)輸入數(shù)據(jù)之間至少用一個(gè)空格分開,或者用Tab鍵分開,或者輸入一個(gè)數(shù)據(jù)后,按回車,然后再輸入下一個(gè)數(shù)據(jù)。例如:scanf("%d%d",&num1,&num2);假設(shè)給num1輸入10,給num2輸入20,則正確的輸入操作為 10□20↙或者: 10↙ 20↙3.4.3使用說明 10□20↙46(2)格式字符串中出現(xiàn)的普通字符(包括轉(zhuǎn)義字符形式的字符),務(wù)必原樣輸入。例如:scanf("num1=%d,num2=%d",&num1,&num2);假設(shè)給num1輸入10,給num2輸入20,正確的輸入操作為num1=10,num2=20↙另外,scanf()函數(shù)中,對(duì)于格式字符串內(nèi)的轉(zhuǎn)義字符(如:\n),系統(tǒng)并不把它當(dāng)轉(zhuǎn)義字符來解釋,從而產(chǎn)生一個(gè)控制操作,而是將其視為普通字符,所以也要原樣輸入。例如:scanf("num1=%d,num2=%d\n",&num1,&num2);假設(shè)給num1輸入10,給num2輸入20,正確的輸入操作為num1=10,num2=20\n↙(2)格式字符串中出現(xiàn)的普通字符(包括轉(zhuǎn)義字符形式的字符)47為改善人機(jī)交互性,同時(shí)簡化輸入操作,在設(shè)計(jì)輸入操作時(shí),一般先用printf()函數(shù)輸出一個(gè)提示信息,再用scanf()函數(shù)進(jìn)行數(shù)據(jù)輸入。例如:printf("num1=");scanf("%d",&num1);printf("num2="); scanf("%d",&num2);為改善人機(jī)交互性,同時(shí)簡化輸入操作,在設(shè)計(jì)輸入操作時(shí),一般先48(3)輸入數(shù)據(jù)時(shí),遇到以下情況時(shí)系統(tǒng)認(rèn)為該數(shù)據(jù)輸入結(jié)束。遇到空格,或者回車鍵,或者Tab鍵。遇到輸入域?qū)挾冉Y(jié)束。例如"%3d",只取三列。遇到非法輸入。例如,在輸入數(shù)值數(shù)據(jù)時(shí),遇到字母等非數(shù)值符號(hào)(數(shù)值符號(hào)僅由數(shù)字字符0~9、小數(shù)點(diǎn)和正負(fù)號(hào)構(gòu)成)。(3)輸入數(shù)據(jù)時(shí),遇到以下情況時(shí)系統(tǒng)認(rèn)為該數(shù)據(jù)輸入結(jié)束。49(4)使用格式說明符"%c"輸入單個(gè)字符時(shí),空格和回車等均作為有效字符被輸入。例如:scanf("%c%c%c",&ch1,&ch2,&ch3);printf("ch1=%c,ch2=%c,ch3=%c\n",ch1,ch2,ch3);假設(shè)輸入:A□B↙,則系統(tǒng)將字母“A”賦值給ch1,空格賦值給ch2,“B”賦值給ch3。(4)使用格式說明符"%c"輸入單個(gè)字符時(shí),空格和回車等均503.5單個(gè)字符的輸入/輸出函數(shù)除了使用printf()函數(shù)和scanf()函數(shù)可以輸出/輸入字符數(shù)據(jù)外,C語言還提供了putchar()和getchar()函數(shù),專門用來輸出/輸入單個(gè)字符。3.5單個(gè)字符的輸入/輸出函數(shù)除了使用printf()函51每調(diào)用putchar()函數(shù)一次,就向顯示器輸出一個(gè)字符,它的調(diào)用形式如下:putchar(ch);其中,ch是字符變量或是字符常量例如:putchar('Y');將在顯示器上輸出字符Y。每調(diào)用putchar()函數(shù)一次,就向顯示器輸出一個(gè)字符,它52每調(diào)用getchar()函數(shù)一次,就從鍵盤接收一個(gè)字符,它的調(diào)用形式如下:ch=getchar();getchar()函數(shù)是一個(gè)無參函數(shù),但調(diào)用getchar()函數(shù)時(shí),后面的括號(hào)不能省略。getchar()函數(shù)從鍵盤接收一個(gè)字符作為它的返回值。在輸入時(shí),空格、回車等都將作為字符讀入,而且,只有在用戶輸入回車鍵時(shí),讀入每調(diào)用getchar()函數(shù)一次,就從鍵盤接收一個(gè)字符,它的53【例3.1】以下程序先從鍵盤接收一個(gè)字符,然后顯示在顯示器上。/*程序功能:單個(gè)字符的輸入與輸出*/

#include<stdio.h>main(){charch;ch=getchar();putchar(ch);

putchar('\n');}【例3.1】以下程序先從鍵盤接收一個(gè)字符,然后顯示在顯示器54程序的運(yùn)行情況:A↙A需要注意的是,程序中如果調(diào)用了putchar()函數(shù)或getchar()函數(shù),則在程序的開頭必須加上“#include<stdio.h>”,否則,程序編譯時(shí)會(huì)報(bào)錯(cuò)。程序的運(yùn)行情況:553.6順序程序設(shè)計(jì)舉例在順序結(jié)構(gòu)程序中,各語句是按照位置的先后次序順序執(zhí)行的,且每個(gè)語句都會(huì)被執(zhí)行到。【例3.2】編寫程序,輸入一個(gè)圓的半徑,計(jì)算這個(gè)圓的面積。3.6順序程序設(shè)計(jì)舉例在順序結(jié)構(gòu)程序中,各語句是按照位置56/*程序功能:計(jì)算圓的面積*/main(){floatpi=3.14159,r,s;printf("Inputradius:");scanf("%f",&r);s=pi*r*r;printf("areais:%7.2f\n",s);}程序的運(yùn)行情況:Inputradius:5.6↙areais:

98.47/*程序功能:計(jì)算圓的面積*/57【例3.3】編寫程序,輸入一個(gè)大寫字母,把它轉(zhuǎn)換成相應(yīng)的小寫字母,然后輸出。/*程序功能:大寫字母轉(zhuǎn)換成相應(yīng)的小寫字母*/#include"stdio.h"main(){charch;printf("Inputacapital:");ch=getchar();ch+=32;printf("Thelowercaseis%c\n",ch);}程序的運(yùn)行情況: Inputacapital:A↙ Thelowercaseisa【例3.3】編寫程序,輸入一個(gè)大寫字母,把它轉(zhuǎn)換成相應(yīng)的小58【例3.4】編寫程序,輸入一個(gè)double類型的數(shù),保留這個(gè)數(shù)的小數(shù)點(diǎn)后兩位,對(duì)小數(shù)點(diǎn)后第三位作四舍五入處理,輸出處理后的結(jié)果。/*程序功能:實(shí)型數(shù)據(jù)四舍五入處理*/#include"stdio.h"main(){doublex;printf("Enterx:");scanf("%lf",&x);printf("Beforetransactionx=%f\n",x);x*=100;x+=0.5;x=(int)x;x/=100;printf("Aftertransactionx=%f\n",x);}【例3.4】編寫程序,輸入一個(gè)double類型的數(shù),保留這個(gè)59程序運(yùn)行情況:Enterx:5.6789↙Beforetransactionx=5.678900Aftertransactionx=5.680000程序運(yùn)行情況:60第3講順序結(jié)構(gòu)程序設(shè)計(jì)第3講順序結(jié)構(gòu)程序設(shè)計(jì)61第3章順序結(jié)構(gòu)程序設(shè)計(jì)3.1程序設(shè)計(jì)概述3.2C語言語句3.3格式化輸出函數(shù)printf()3.4格式化輸入函數(shù)scanf()3.5單個(gè)字符的輸入/輸出函數(shù)3.6順序程序設(shè)計(jì)舉例第3章順序結(jié)構(gòu)程序設(shè)計(jì)3.1程序設(shè)計(jì)概述623.1程序設(shè)計(jì)概述3.1.1算法的概念簡單地說,程序的功能就是進(jìn)行數(shù)據(jù)加工。程序通常包括兩方面的內(nèi)容:對(duì)數(shù)據(jù)的描述和對(duì)加工的描述對(duì)數(shù)據(jù)的描述稱為“數(shù)據(jù)結(jié)構(gòu)”,對(duì)加工的描述稱為“算法”廣義地說,為解決某一個(gè)問題而采取的方法和步驟,就稱為“算法”。在計(jì)算機(jī)科學(xué)中,算法是指描述用計(jì)算機(jī)解決給定問題的過程。例如,計(jì)算1+2+3+…+1000的算法可表示為?3.1程序設(shè)計(jì)概述3.1.1算法的概念?63例如,計(jì)算1+2+3+…+1000的算法可表示為步驟1:0

s;步驟2:1

i;步驟3:s+i

s;步驟4:i+1

i;步驟5:如果i≤1000,轉(zhuǎn)到步驟3,否則結(jié)束。例如,計(jì)算1+2+3+…+1000的算法可表示為64在上面的算法中,符號(hào)s、i表示變量,符號(hào)“”表示給變量賦值。步驟1和步驟2表示給變量s和i賦初始值為0和1;步驟3將變量i的當(dāng)前值累加到變量s中;步驟4使變量i在原值的基礎(chǔ)上增加1;步驟5判斷i的值如果小于等于1000,重復(fù)做步驟3和步驟4,構(gòu)成一個(gè)循環(huán),而當(dāng)i的值不小于等于1000時(shí),循環(huán)結(jié)束,這時(shí),變量s的值就是要求的計(jì)算結(jié)果。在上面的算法中,符號(hào)s、i表示變量,符號(hào)“”表示給變量賦值653.1.2算法的特征通常,一個(gè)算法必須具備以下五個(gè)基本特征:(1)有窮性。一個(gè)算法必須在它所涉及的每一種情形下,都能在執(zhí)行有限次的操作之后結(jié)束。(2)確定性。算法的每一步,其順序和內(nèi)容都必須嚴(yán)格定義,而不能有任何的歧義。(3)有零個(gè)或多個(gè)輸入。輸入是算法實(shí)施前需要從外界取得的信息,有些算法需要有多個(gè)輸入,而有些算法不需要輸入,即零個(gè)輸入。(4)有一個(gè)或多個(gè)輸出。輸出就是算法實(shí)施后得到的結(jié)果,顯然,沒有輸出的算法是沒有意義的。(5)可行性。算法的每一步都必須是可行的,也就是說,是能夠由計(jì)算機(jī)執(zhí)行的。3.1.2算法的特征663.1.3算法的描述1.用自然語言描述自然語言就是人們?nèi)粘J褂玫恼Z言,前面的算法就是用自然語言表示的。用自然語言表示算法,通俗易懂。但是,自然語言表示的含義往往不太嚴(yán)格,要根據(jù)上下文才能判斷它的正確含義。另外,用自然語言描述分支和循環(huán)不很方便。因此,除對(duì)簡單的問題使用以外,一般不用自然語言描述算法。計(jì)算機(jī)該用何種形式來描述問題更為簡潔、明了?3.1.3算法的描述計(jì)算機(jī)該用何種形式來描述問題更672.用流程圖描述傳統(tǒng)的流程圖由圖3-1所示的幾種基本元素組成。用流程圖描述算法,形象直觀,簡單方便。例如,前面的算法用流程圖可表示為如圖3-2所示。2.用流程圖描述68圖3-1流程圖基本元素圖3-1流程圖基本元素69圖3-2計(jì)算1+2+3+…+1000的算法流程圖圖3-2計(jì)算1+2+3+…+1000的算法流程圖703.用N-S流程圖描述算法傳統(tǒng)的流程圖用流程線和流程元素表示各個(gè)處理的執(zhí)行順序,但對(duì)流程線的使用沒有嚴(yán)格的規(guī)定,因此,使用者可以不受限制地使流程轉(zhuǎn)來轉(zhuǎn)去,這樣的流程圖使人難以理解算法的邏輯。為了解決這個(gè)問題,規(guī)定了算法的三種基本結(jié)構(gòu):順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)用這些基本結(jié)構(gòu)按一定的規(guī)律組成一個(gè)算法,這樣的算法稱為結(jié)構(gòu)化算法。按照結(jié)構(gòu)化算法編寫的程序稱為結(jié)構(gòu)化程序。為了設(shè)計(jì)結(jié)構(gòu)化算法,1973年,美國學(xué)者I.Nassi和B.Shneiderman提出一種新的流程圖,稱為N-S流程圖。N-S流程圖的基本符號(hào)如圖3-3所示。3.用N-S流程圖描述算法71圖3-3N-S流程圖基本符號(hào)圖3-3N-S流程圖基本符號(hào)72圖3-4計(jì)算1+2+3+…+1000算法的N-S圖圖3-4計(jì)算1+2+3+…+1000算法的N-S圖733.1.4結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)強(qiáng)調(diào)程序設(shè)計(jì)風(fēng)格和程序結(jié)構(gòu)的規(guī)范化,提倡清晰的結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計(jì)的基本思路是:把一個(gè)復(fù)雜問題的解決過程分階段進(jìn)行每一個(gè)階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)是在分析問題時(shí)采用“自頂向下,逐步細(xì)化”的方法3.1.4結(jié)構(gòu)化程序設(shè)計(jì)方法74“自頂向下,逐步細(xì)化”是對(duì)問題的解決過程逐步具體化的一種思想方法。例如,要在一組數(shù)中找出其中的最大數(shù),首先,可以把問題的解決過程描述為(1)輸入一組數(shù)。(2)找出其中的最大數(shù)。(3)輸出最大數(shù)。“自頂向下,逐步細(xì)化”75以上三條中,第(1)、(3)兩步比較簡單,對(duì)第(2)步可以進(jìn)一步細(xì)化:(1)任取一數(shù),假設(shè)它就是最大數(shù)。(2)將該數(shù)與其余各數(shù)逐一比較。(3)若發(fā)現(xiàn)有任何數(shù)大于假設(shè)的最大數(shù),則取而代之。以上三條中,第(1)、(3)兩步比較簡單,對(duì)第(2)步可以進(jìn)76再對(duì)以上過程進(jìn)一步具體化,得到如下算法:(1)輸入一組數(shù)。(2)找出其中的最大數(shù)。①令max=第一個(gè)數(shù)。②將第二個(gè)數(shù)到最后一個(gè)數(shù)依次取出。③比較x與max的大小,如果x>max,則令max=x。(3)輸出max。再對(duì)以上過程進(jìn)一步具體化,得到如下算法:77“模塊化設(shè)計(jì)”就是將比較復(fù)雜的任務(wù),分解成若干個(gè)子任務(wù)每個(gè)子任務(wù)又分解成若干個(gè)小子任務(wù)每個(gè)小子任務(wù)只完成一項(xiàng)簡單的功能在程序設(shè)計(jì)時(shí),用一個(gè)個(gè)小模塊來實(shí)現(xiàn)這些功能,每個(gè)小模塊對(duì)應(yīng)一個(gè)相對(duì)獨(dú)立的子程序。對(duì)程序設(shè)計(jì)人員來說,編寫程序也就變得不再困難?!澳K化設(shè)計(jì)”就是將比較復(fù)雜的任務(wù),分解成若干個(gè)子任務(wù)78“結(jié)構(gòu)化編碼”指的是使用支持結(jié)構(gòu)化方法的高級(jí)語言編寫程序。C語言就是一種支持結(jié)構(gòu)化程序設(shè)計(jì)的高級(jí)語言,它直接提供了三種基本結(jié)構(gòu)的語句;提供了定義“函數(shù)”的功能,函數(shù)相當(dāng)于獨(dú)立的子程序。另外,還提供了豐富的數(shù)據(jù)類型。這些都為結(jié)構(gòu)化設(shè)計(jì)提供了有力的工具?!敖Y(jié)構(gòu)化編碼”指的是使用支持結(jié)構(gòu)化方法的高級(jí)語言編寫程序。793.2C語言語句C語言程序是由函數(shù)構(gòu)成的,而函數(shù)又是由函數(shù)說明和函數(shù)體兩部分組成,其中,函數(shù)體是函數(shù)的核心。與其他高級(jí)語言一樣,C語言也是利用函數(shù)體中的可執(zhí)行語句,向計(jì)算機(jī)系統(tǒng)發(fā)出操作命令。按照語句功能或構(gòu)成的不同,可將C語言語句分為如下五類:控制語句\函數(shù)調(diào)用語句\表達(dá)式語句\空語句\復(fù)合語句3.2C語言語句C語言程序是由函數(shù)構(gòu)成的801.控制語句控制語句完成一定的控制功能。C語言只有9條控制語句,又可細(xì)分為三種:(1)選擇結(jié)構(gòu)控制語句:if()…else…,switch()…(2)循環(huán)結(jié)構(gòu)控制語句:do…while(),for()…,while()…,break,continue(3)其他控制語句:goto,return1.控制語句812.函數(shù)調(diào)用語句函數(shù)調(diào)用語句由一次函數(shù)調(diào)用加一個(gè)分號(hào)(語句結(jié)束標(biāo)志)構(gòu)成。例如:printf("ThisisaCProgram.");3.表達(dá)式語句表達(dá)式語句由表達(dá)式后加一個(gè)分號(hào)構(gòu)成。表達(dá)式能構(gòu)成語句是C語言的一大特色。最典型的表達(dá)式語句是在賦值表達(dá)式后加一個(gè)分號(hào)構(gòu)成的賦值語句。例如,“num=5”是一個(gè)賦值表達(dá)式,而“num=5;”卻是一個(gè)賦值語句。2.函數(shù)調(diào)用語句824.空語句

空語句僅由一個(gè)分號(hào)構(gòu)成。顯然,空語句什么操作也不執(zhí)行。5.復(fù)合語句復(fù)合語句由大括號(hào)括起來的一組(也可以是一條)語句構(gòu)成。例如:4.空語句83說明:(1)在語法上,復(fù)合語句和簡單語句相同,即簡單語句可以出現(xiàn)的地方,都可以使用復(fù)合語句。(2)復(fù)合語句可以嵌套,即復(fù)合語句中也可包含一個(gè)或多個(gè)復(fù)合語句。main(){

{inta=1,b;b=a*a-1;復(fù)合語句printf("%d",b);

} /*注意:右括號(hào)后不需要分號(hào)*/}說明:main()843.3格式化輸出函數(shù)printf()程序運(yùn)行中,有時(shí)候需要從外部設(shè)備(例如鍵盤)上得到一些原始數(shù)據(jù),程序計(jì)算結(jié)束后,通常要把計(jì)算結(jié)果發(fā)送到外部設(shè)備(例如顯示器)上,以便人們對(duì)結(jié)果進(jìn)行分析。我們把程序從外部設(shè)備上獲得數(shù)據(jù)的操作稱為“輸入”,而把程序發(fā)送數(shù)據(jù)到外部設(shè)備的操作稱為“輸出”。3.3格式化輸出函數(shù)printf()程序運(yùn)行中,有時(shí)候需85不像其他的高級(jí)語言,C語言沒有專門的輸入/輸出語句,輸入/輸出的操作是通過調(diào)用C語言的庫函數(shù)來實(shí)現(xiàn)的。printf()函數(shù)就是最常用的輸出函數(shù),它的作用是向計(jì)算機(jī)系統(tǒng)默認(rèn)的輸出設(shè)備(一般指顯示器)輸出一個(gè)或多個(gè)任意指定類型的數(shù)據(jù)。不像其他的高級(jí)語言,C語言沒有專門的輸入/輸出語句,輸入/輸863.3.1printf()函數(shù)的一般格式調(diào)用printf()函數(shù)的一般格式為printf("格式字符串",輸出表項(xiàng));例如:printf("radius=%f\nlength=%7.2f,area=%7.2f\n",r,l,a);printf("格式字符串",輸出表項(xiàng));3.3.1printf()函數(shù)的一般格式printf(87

格式字符串也稱格式控制字符串或格式轉(zhuǎn)換字符串,其中可以包含下列三種字符:(1)格式指示符:這些字符用來控制數(shù)據(jù)的輸出格式例如“%f”、“%7.2f”等(2)轉(zhuǎn)義字符:這些字符通常用來控制光標(biāo)的位置。(3)普通字符:除格式指示符和轉(zhuǎn)義字符之外的其他字符,這些字符輸出時(shí)原樣輸出例如上面例子中的“radius=”等printf("radius=%f\nlength=%7.2f,area=%7.2f\n",

r,l,a);printf("格式字符串",輸出表項(xiàng));格式字符串也稱格式控制字符串或格式轉(zhuǎn)換字符串,其中可以包含88輸出表項(xiàng)由若干個(gè)輸出項(xiàng)構(gòu)成,輸出項(xiàng)之間用逗號(hào)來分隔,每個(gè)輸出項(xiàng)既可以是常量、變量,也可以是表達(dá)式。有時(shí)候,調(diào)用printf()函數(shù)時(shí),也可以沒有輸出項(xiàng)。在這種情況下,一般用來輸出一些提示信息,例如:printf("Hello,world!\n");printf("格式字符串",輸出表項(xiàng));輸出表項(xiàng)printf("格式字符串",輸出表項(xiàng));893.3.2格式指示符格式指示符的一般形式為%[修飾符]格式字符1.格式字符printf函數(shù)中常用的格式字符如表3-1所示。%[修飾符]格式字符3.3.2格式指示符%[修飾符]格式字符90表3-1常用的格式字符格式字符說明舉例輸出結(jié)果d帶符號(hào)十進(jìn)制整數(shù)格式printf("%d",10);10printf("%d",'A');65u無符號(hào)十進(jìn)制整數(shù)格式printf("%u",10);10printf("%u",'A');65x或X無符號(hào)十六進(jìn)制整數(shù)格式printf("%x",10);aprintf("%x",'A');41printf("%X",10);A%[修飾符]格式字符表3-1常用的格式字符格式說明舉例輸出結(jié)果d帶91o無符號(hào)八進(jìn)制整數(shù)格式printf("%o",10);12printf("%o",'A');101c字符格式printf("%c",10);換行printf("%c",'A');Af小數(shù)格式printf("%f",1.2345);1.234500e或E指數(shù)格式printf("%e",1.2345);1.23450e+00printf("%E",1.2345);1.23450E+00g或G小數(shù)形式或指數(shù)形式,使輸出寬度最小,不輸出無意義的0printf("%g",1.2345);1.2345printf("%g",0.000001);1e-06printf("%G",0.000001);1E-06%輸出%printf("%%");%s輸出字符串printf("%s","abcde");abcde%[修飾符]格式字符o無符號(hào)八進(jìn)制整數(shù)格式printf("%o",10);1922.長度修飾符長度修飾符“l(fā)”加在%號(hào)和格式字符之間。輸出長整型數(shù)據(jù)的時(shí)候,一定要加長度修飾符,否則,得不到正確的顯示結(jié)果。例如:longx=7654321;printf("x=%ld\n",x);輸出結(jié)果為:x=7654321。%[修飾符]格式字符l2.長度修飾符%[修飾符]格式字符l933.寬度修飾和精度修飾可以在%號(hào)和格式字符之間加入形如“m.n”(m、n均為整數(shù))的修飾。其中,m為寬度修飾,n為精度修飾。寬度修飾用來指定數(shù)據(jù)的輸出寬度精度修飾對(duì)不同的格式字符,n作用不同:對(duì)于格式字符f,用來指定輸出小數(shù)位的位數(shù);對(duì)于格式字符e,用來指定輸出有效數(shù)字的位數(shù);對(duì)于格式字符d,用來指定必須輸出的數(shù)字的個(gè)數(shù)。相關(guān)的例子如表3-2所示。%[修飾符]格式字符m.n3.寬度修飾和精度修飾%[修飾符]格式字符m.n94表3-2寬度修飾和精度修飾示例輸出語句輸出結(jié)果(□表示空格)printf("%5d",42);□□□42printf("%5.3d",42);□□042printf("%.3d",42);042printf("%7.2f",1.23456);□□□1.23printf("%.2f",1.23456);1.23printf("%10.2e",1.23456);□□□1.2e+00printf("%.2e",1.23456);1.2e+00表3-2寬度修飾和精度修飾示例輸出語句輸出結(jié)果(□表示954.左對(duì)齊修飾 在指定了寬度修飾時(shí),如果指定寬度小于數(shù)據(jù)需要的實(shí)際寬度,則數(shù)據(jù)左邊補(bǔ)空格,補(bǔ)夠指定的寬度,這種對(duì)齊方式稱為“右對(duì)齊”。當(dāng)然,也可以在數(shù)據(jù)的右邊補(bǔ)空格來補(bǔ)夠指定的寬度,這種對(duì)齊方式稱為“左對(duì)齊”。指定左對(duì)齊的時(shí)候,使用左對(duì)齊修飾符“-”,例如語句:printf("%-7.2f\n",1.23456);輸出結(jié)果為1.23□□□(右邊補(bǔ)三個(gè)空格)%[修飾符]格式字符-4.左對(duì)齊修飾%[修飾符]格式字符-963.3.3使用說明(1)printf()函數(shù)可以輸出常量、變量和表達(dá)式的值。但格式控制字符串中的格式指示符必須按從左到右的順序,與輸出項(xiàng)表中的每個(gè)數(shù)據(jù)一一對(duì)應(yīng),否則出錯(cuò)。(2)格式字符x、e、g可以用小寫字母,也可以用大寫字母。使用大寫字母時(shí),輸出數(shù)據(jù)中包含的字母也大寫。除了x、e、g格式字符外,其他格式字符必須用小寫字母例如,“%f”不能寫成“%F”。(3)格式字符緊跟在“%”后面就作為格式字符,否則將作為普通字符使用(原樣輸出)例如,“printf("c=%c,f=%f\n",c,f);”中的第一個(gè)c和f都是普通字符。3.3.3使用說明973.4格式化輸入函數(shù)scanf()scanf()函數(shù)的功能是從計(jì)算機(jī)默認(rèn)的輸入設(shè)備(一般指鍵盤)向計(jì)算機(jī)主機(jī)輸入數(shù)據(jù)。3.4.1scanf()函數(shù)的一般格式調(diào)用scanf()函數(shù)的一般格式為scanf("格式字符串",

輸入項(xiàng)地址表);例如:scanf("%d%f",&i,&f);scanf("格式字符串",輸入項(xiàng)地址表);3.4格式化輸入函數(shù)scanf()scanf()函數(shù)的功98(1)格式字符串:格式字符串可以包含三種類型的字符:格式指示符格式指示符用來指定數(shù)據(jù)的輸入格式;空白字符(空格、跳格鍵、回車鍵)和空白字符作為相鄰兩個(gè)輸入數(shù)據(jù)的缺省分隔符;非空白字符(又稱普通字符)。非空白字符在輸入有效數(shù)據(jù)時(shí),必須原樣一起輸入。scanf("格式字符串",輸入項(xiàng)地址表);(1)格式字符串:scanf("格式字符串",輸入項(xiàng)地址99(2)輸入項(xiàng)地址表:由若干個(gè)輸入項(xiàng)地址組成,相鄰兩個(gè)輸入項(xiàng)地址之間用逗號(hào)分開。輸入項(xiàng)地址表中的地址,可以是變量的地址,也可以是字符數(shù)組名或指針變量變量地址的表示方法為“&變量名”其中,“&”是地址運(yùn)算符。scanf("格式字符串",輸入項(xiàng)地址表);&變量名(2)輸入項(xiàng)地址表:scanf("格式字符串",輸入項(xiàng)地1003.4.2格式指示符格式指示符的一般形式為%【修飾符】格式字符scanf函數(shù)中使用的格式字符如表3-4所示。3.4.2格式指示符101表3-4常用格式字符格式字符說明d輸入十進(jìn)制整數(shù)o輸入八進(jìn)制整數(shù)x輸入十六進(jìn)制整數(shù)u輸入無符號(hào)十進(jìn)制整數(shù)c輸入一個(gè)字符f和e輸入小數(shù)形式或指數(shù)形式的實(shí)型數(shù)據(jù)s輸入字符串表3-4常用格式字符格式字符說明d輸入十進(jìn)制整1021.寬度修飾寬度修飾用來指定輸入數(shù)據(jù)所占列數(shù)例如:scanf("%3c%3c",&ch1,&ch2);假設(shè)輸入“abcdefg”則系統(tǒng)將讀取的“abc”中的“a”賦給變量ch1;讀取的“def”中的“d”賦給變量ch2。1.寬度修飾1032.抑制修飾符抑制修飾符“*”表示對(duì)應(yīng)的數(shù)據(jù)讀入后,不賦給相應(yīng)的變量,該變量由下一個(gè)格式指示符輸入。例如:scanf("%2d%*2d%3d",&num1,&num2);假設(shè)輸入“123456789”,則系統(tǒng)將讀取“12”并賦值給num1;讀取“34”,但舍棄掉(“*”的作用);讀取“567”并賦值給num2。2.抑制修飾符1043.長度修飾符在輸入長整型數(shù)據(jù)和雙精度實(shí)型數(shù)據(jù)時(shí),必須使用長度修飾符“l(fā)”,否則,不能得到正確的輸入值。例如:longx;doubley;scanf("%ld%lf",&x,&y);3.長度修飾符1053.4.3使用說明調(diào)用scanf()函數(shù)輸入數(shù)據(jù)時(shí),要注意以下幾點(diǎn):(1)如果相鄰兩個(gè)格式指示符之間,不指定數(shù)據(jù)分隔符(如逗號(hào)、冒號(hào)等),則相應(yīng)的兩個(gè)輸入數(shù)據(jù)之間至少用一個(gè)空格分開,或者用Tab鍵分開,或者輸入一個(gè)數(shù)據(jù)后,按回車,然后再輸入下一個(gè)數(shù)據(jù)。例如:scanf("%d%d",&num1,&num2);假設(shè)給num1輸入10,給num2輸入20,則正確的輸入操作為 10□20↙或者: 10↙ 20↙3.4.3使用說明 10□20↙106(2)格式字符串中出現(xiàn)的普通字符(包括轉(zhuǎn)義字符形式的字符),務(wù)必原樣輸入。例如:scanf("num1=%d,num2=%d",&num1,&num2);假設(shè)給num1輸入10,給num2輸入20,正確的輸入操作為num1=10,num2=20↙另外,scanf()函數(shù)中,對(duì)于格式字符串內(nèi)的轉(zhuǎn)義字符(如:\n),系統(tǒng)并不把它當(dāng)轉(zhuǎn)義字符來解釋,從而產(chǎn)生一個(gè)控制操作,而是將其視為普通字符,所以也要原樣輸入。例如:scanf("num1=%d,num2=%d\n",&num1,&num2);假設(shè)給num1輸入10,給num2輸入20,正確的輸入操作為num1=10,num2=20\n↙(2)格式字符串中出現(xiàn)的普通字符(包括轉(zhuǎn)義字符形式的字符)107為改善人機(jī)交互性,同時(shí)簡化輸入操作,在設(shè)計(jì)輸入操作時(shí),一般先用printf()函數(shù)輸出一個(gè)提示信息,再用scanf()函數(shù)進(jìn)行數(shù)據(jù)輸入。例如:printf("num1=");scanf("%d",&num1);printf("num2="); scanf("%d",&num2);為改善人機(jī)交互性,同時(shí)簡化輸入操作,在設(shè)計(jì)輸入操作時(shí),一般先108(3)輸入數(shù)據(jù)時(shí),遇到以下

溫馨提示

  • 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論