




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、程序設(shè)計技術(shù)C語言數(shù)據(jù)描述和C程序設(shè)計初步結(jié)構(gòu)化程序設(shè)計和C語言的控制結(jié)構(gòu)數(shù)組及其應(yīng)用函數(shù)與C程序結(jié)構(gòu)指針與函數(shù)指針與數(shù)組字符串及其應(yīng)用結(jié)構(gòu)體類型和聯(lián)合體類型C語言的文件處理及其應(yīng)用位運算與枚舉類型結(jié)構(gòu)化程序設(shè)計和C程序控制結(jié)構(gòu)-C程序的控制結(jié)構(gòu)與條件表示-分支結(jié)構(gòu)及其應(yīng)用-循環(huán)結(jié)構(gòu)及其應(yīng)用-其他簡單控制結(jié)構(gòu)-c語言控制結(jié)構(gòu)應(yīng)用舉例2.1 C程序控制結(jié)構(gòu)與條件表示按照結(jié)構(gòu)化程序設(shè)計的基本觀點,任何程序都可以通過三種基本程序結(jié)構(gòu)的組合實現(xiàn).這三種基本結(jié)構(gòu)是:.順序結(jié)構(gòu):按語句順序依次執(zhí)行的程序結(jié)構(gòu)。.分支結(jié)構(gòu):根據(jù)給定條件是否成立,以決定程序流程轉(zhuǎn)向的程序結(jié)構(gòu).循環(huán)結(jié)構(gòu):在某種條件成立時,反復(fù)執(zhí)
2、行某一程序段,直到條件不成立則終止循環(huán)的程序結(jié)構(gòu)。實現(xiàn)分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的關(guān)鍵是如何實現(xiàn)邏輯判斷,即條件的描述和處理.2.1.1 C語言的關(guān)系運算C語言用關(guān)系運算和邏輯運算來實現(xiàn)對程序控制結(jié)構(gòu)中條件的描述和處理。關(guān)系運算符和關(guān)系表達式關(guān)系運算符用于比較兩個運算對象,用關(guān)系運算符將兩個表達式連接起來的式子稱為關(guān)系表達式.2)關(guān)系運算符及其優(yōu)先級 >>=<<=(同級)低 =!=(同級)高 賦值運算符關(guān)系運算符<算術(shù)運算符 多個同級關(guān)系運算符為左結(jié)合性。例如:c<a+b(先算術(shù)運算,后關(guān)系運算)(ca)+b(先關(guān)系運算,后算術(shù)運算)關(guān)系運算的結(jié)果關(guān)系運算的結(jié)果值為
3、邏輯量“真”或"假",當運算符兩邊的運算量滿足指定的關(guān)系時,其值為“真”;否則為C語言中沒有邏輯數(shù)據(jù)類型,所以在關(guān)系運算中用數(shù)值表示邏輯量“真”,用數(shù)值“0”表示邏輯量“假”;例如:設(shè)a=3,b=2,c=l,則有:a<b/(a>b) -c/(b+c) !=a/ (b>c) +a/*f=a>b>c/例2-1關(guān)系運算示例結(jié)果為0 /結(jié)果為1 */結(jié)果為0 /結(jié)果為4 */左結(jié)合,f值為0 */&2.1.2C語言的邏輯運算A1)邏輯表達式指用邏輯運算符將算術(shù)表達式、關(guān)系表達式或邏輯量連接起來的式子。當需要多個條件來確定程序執(zhí)行方向時,可用邏輯
4、表達式描述條件。2)邏輯運算符及其優(yōu)先級&&(邏輯與)、II(邏排或)、!(邏輯非)其中: “&&”和“II”是雙目運算符,遵從左結(jié)合性. “菱單目運算符,遵從右結(jié)合性. 與其它運算符的優(yōu)先關(guān)系:從高到低!一算術(shù)運算-關(guān)系運算I一賦值運算3)邏輯運算的結(jié)果是一個邏輯量“真”或“假”.用數(shù)值T”表示邏輯“真”,用數(shù)值"0"表示邏輯"假”O(jiān)兩個邏輯對象a和b之間的邏輯運算真值表:ab!aa&&ballb001000110110001110112.1.2 C語言的邏輯運算;2.1.2C語言的邏輯運算F)判斷一個數(shù)據(jù)對象(邏
5、輯量)的真假時:若數(shù)據(jù)對象為數(shù)值“0”,則判定為假;若數(shù)據(jù)對象為數(shù)值非“0”,則判定為真;例如:設(shè)有:inta=8,b=0;則:a|b/*結(jié)果為1*/a&&b/結(jié)果為0/!a/*結(jié)果為0*/注意:常用邏輯表達式表示某變量值是否在給定范圍內(nèi)(x>=0)&&(x<=10)描述:“x>0”并且“x<10”(x<0)|(x>10)描述:、<0"或者、>10”?。▁=0)或x=0描述:“x*0”2.1.2 C語言的邏輯運算5)邏輯表達式運算時應(yīng)遵循的兩條原則對邏輯表達式從左到右掃描求解;在邏輯表達式的求解過程中,任
6、何時候只要邏輯表達式的值已經(jīng)可以確定,則求解過程不再進行。例如:inta=l»b=2,c=0;計算:a+|b+44c+結(jié)果:邏輯表達式的值為1(a=2,b=2,c=0)計算:a+44b+11C+結(jié)果:邏輯表達式的值為1(a=2,b=3,c=0)計算:a+ft&b+4&c+結(jié)果:邏輯表達式的值為0(a=2,b=3,c=l)例2-2邏輯運算示例J結(jié)構(gòu)化程序設(shè)計和C程序控制結(jié)構(gòu)-C程序的控制結(jié)構(gòu)與條件表示分支結(jié)構(gòu)及其應(yīng)用循環(huán)結(jié)構(gòu)及其應(yīng)用-其他簡單控制結(jié)構(gòu)-C語言控制結(jié)構(gòu)應(yīng)用舉例2.2分支程序結(jié)構(gòu)及其應(yīng)用2.2.1使用if語句實現(xiàn)單分支結(jié)構(gòu)1)單分支if語句的結(jié)構(gòu)形式if(e
7、xpression)sentence;其中:expression:條件表達式(關(guān)系、邏輯、任何求出0值或非0值的表達式)sentence:任何一條合法的C語句。(包括復(fù)合語句、if語句)J2.2.1使用if語句實現(xiàn)單分支結(jié)構(gòu)2)if語句的執(zhí)行過程:先計算作為條件的表達式的值;若表達式的值不為0,則執(zhí)行結(jié)構(gòu)中的語句(sentence)后執(zhí)行if結(jié)構(gòu)的后續(xù)語句;若表達式的值為0,則跳過語句(sentence)部分直接執(zhí)行if結(jié)構(gòu)的后續(xù)語句。例2-4編程序?qū)崿F(xiàn)功能:從鍵盤上輸入一個整數(shù),若該輸入數(shù)據(jù)是奇數(shù)則將其輸出。42.2.1使用if語句實現(xiàn)單分支結(jié)構(gòu)注意:(P53)假定用符號e表示任意表達式當表
8、達式值不為0時條件成立,可表示為:if(e)如if(x%2)奇數(shù)if(e!=0)或if(x%2!=0)當表達式值為0時條件成立,可表示為:if(Ie)如if(!(x%2)偶數(shù)if(e=0)或if(x%2=0),2.2.2復(fù)合語句及其應(yīng)用*在C程序設(shè)計中,可能涉及到在某種條件下不能僅用一條簡單語句描述的功能。為了滿足這種在語法結(jié)構(gòu)上只能有一條語句,而功能的實現(xiàn)又需要多條語句的要求,在C語言中提供了稱為復(fù)合語句的語句塊來解決。復(fù)合語句在語法上作為一條語句考慮:在C語言中,復(fù)合語句是用一對花括號“”將若干條C語句括起來形成的語句序列。注意:d語言的復(fù)合語句右括號“產(chǎn)后不需要用用分號”結(jié)尾。2.2.2
9、復(fù)合語句及其應(yīng)用例2-5從鍵盤上榆入三角形的能構(gòu)成一個三角形,則榆出其根據(jù)數(shù)學知識,若三直邊a、b、c構(gòu)成三角形,則必須滿足條件:任意兩邊的之和大于第三邊(即:a*b>c且a*c>b且b*c>a)計算三角形的面積的公式為:開始,F(xiàn)-T”(s*£一*£一卜)*£一。)'s=(a+b+c)/2*-1area-Js(s-a)(s-8)(s-已)檢出area*-1圖2.2例2.5程序流程圖一2.2.3if-else語句與雙分支結(jié)構(gòu)雙分支結(jié)構(gòu)形式:if(expression)sentencel;elsesentence2;語句的執(zhí)行過程:先計算表達
10、式的值,若表達式的值為真(表達式的值不為0),則執(zhí)行語句1,然后執(zhí)行if結(jié)構(gòu)的后續(xù)語句;否則,執(zhí)行語句2,然后執(zhí)行if結(jié)構(gòu)的后續(xù)語句.I雙分支結(jié)構(gòu)及其應(yīng)用例2-6求任意榆入的3個整數(shù)*的最大數(shù)。圖2.4例2.6程序流程困一J2.2.4條件運算符與條件表達式1)條件表達式一般形式如下:expl?exp2:exp32)條件表達式的執(zhí)行過程:首先計算表達式expl的值,若expl的值為非0(真),則計算表達式exp2的值作為整個條件表達式的值;若expl的值為0(假),則計算表達式exp3的值作為整個條件表達式的值。工22.4條件運算符與條件表達式注意:條件運算符的優(yōu)先級(從高到低)算術(shù)運算一關(guān)系運
11、算一條件運算一賦值運算例:a>b?a:b+1條件運算符的結(jié)合性(右結(jié)合性)例:a>b?a:c>d?c:d條件表達式值的類型取exp2、exp3值的類型中較高的類型.42.2.4條件運算符與條件表達式件(2):兩條賦值語句都是為同一個變量賦值if (x<y) max=y;elsemax=x;例如:有如下ifelse結(jié)構(gòu)if(ch>=zAz&&ch<=,Z-)ch=ch+("-",);elsech=ch-('a'-'A');則可用條件運算符代替上面if-else結(jié)構(gòu)max=x<y?y:xc
12、h=ch>=,A,&&ch<=,Z,?ch+,a,-,A,:ch-Ca,-*A,);ch=ch>=,A,&&ch<=,Zf?ch+32:ch-32;2.2.5if語句的嵌套與多分支結(jié)構(gòu)一if結(jié)構(gòu)或者else結(jié)構(gòu)的語句部分又是一個if結(jié)構(gòu),稱為if語句的嵌套.注意:if和else的語句部分中只if (n>0)if (a>b.) +-1 z=a; 4 else4-1z=b;"炎都句將if(n>0)if(a>b)+-,z=a;velse8z=b;Jsentenced;律用花括號“”括起來。2.2.5if語句的嵌
13、套與多分支結(jié)構(gòu)圖2.5例2.8程序梳程圖,2.2.5if語句的嵌套與多分支結(jié)構(gòu)注意:在這種特殊的elseif結(jié)構(gòu)中,表示條件的表達式是相互排斥的,執(zhí)行該結(jié)構(gòu)時控制流程從expl開始判斷,一旦有一個表達式的值為非0(真)時,就執(zhí)行與之匹配的語句,然后退出整個選擇結(jié)構(gòu);如果所有表示條件的表達式值均為0(假),則在執(zhí)行語句sentenceN+1后退出整個選擇結(jié)構(gòu);如果當所有的條件均為假時不需要進行任何操作,則最后的一個else和語句sentenceN+1可以缺省。Elseif條件語句構(gòu)成多分支結(jié)構(gòu)例3.11 超過50元,力 扣為7. 5%;購 物金額超過5 超過50元,4 多少?#include&l
14、t;stdio.h>voidmain()floatnumbei;con;scanf("%f",&number);if(number>500)con=0.15;elseif(number>300)con=0.10;elseif(number>100)con=0.075;elseif(number>50)con=0.05;elsecon=0;printf("%f"znumber-number*con);J2.2.5if語句的嵌套與多分支結(jié)構(gòu)例2-9編寫程序求如下所示多分支方程的解2x-l3x-ll(x<>(田
15、皿符號常量在程序中,變量X的取值區(qū)間為:(DBL.MIN,1)、1,10)、10,DBL-MAX)其中:DBJMIN和DBL.MAX分別表示雙精度實型數(shù)據(jù)所能取得的最小值和最大值.case constand2:> sentences2; break;可缺省case constandN:default:sentencesN;break;sentencesN+12.2.6switch語句與多分支結(jié)構(gòu)不C語言中可用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)。1)switch語句的一般形式如下:單條或多條語句)switch(expession)(/caseconstandl:sentences!.;我.
16、整型、字符型不同常數(shù)值2.2.6switch語句與多分支結(jié)構(gòu)嫌2)執(zhí)行過程:首先對expression求值(值是有序型:整型、字符型、枚舉型);然后,在語句的花括號內(nèi)從上至下查找所有的case分支,當找到與條件表達式值相匹配的case時,將其作為控制流程執(zhí)行的入口,并從此處開始執(zhí)行相應(yīng)的語句段,直到遇到break語句或者switch語句的右花括號“廣為止.2.2.6switch語句與多分支結(jié)構(gòu).switch(2)statement2;case 3:statemen :3; default:statement4; statements;2.2.6 switch語句與多分支結(jié)構(gòu)例2-12從鍵盤榆入
17、一個字符,判斷它是數(shù)字、空格還是其它鍵;若是數(shù)字,要求顯示是哪一個數(shù)字在switch的語句段中又包含了switch語句,稱為switch語句的嵌樂.熹于內(nèi)嵌的switch結(jié)構(gòu)處理方法與單層switch結(jié)構(gòu)處理方法相同,需要注意:執(zhí)行到內(nèi)*swithc結(jié)構(gòu)中的break語句或內(nèi)嵌switch語句的右花括號時,只是退出內(nèi)嵌的switch結(jié)構(gòu),而不是退出整個switch結(jié)構(gòu),如例2.13所示.例2-13swithe結(jié)構(gòu)的嵌套示例結(jié)構(gòu)化程序設(shè)計和C程序控制結(jié)構(gòu)-C程序的控制結(jié)構(gòu)與條件表示分支結(jié)構(gòu)及其應(yīng)用-循環(huán)結(jié)構(gòu)及其應(yīng)用-其他簡單控制結(jié)構(gòu)-C語言控制結(jié)構(gòu)應(yīng)用舉例2. 3循環(huán)程序結(jié)構(gòu)及其應(yīng)用循環(huán)結(jié)構(gòu)是結(jié)
18、構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu)之一,是構(gòu)成各種復(fù)雜程序的基本構(gòu)造單元。在C語言中提供了三種用以實現(xiàn)循環(huán)結(jié)構(gòu)的語句,它們分別為: while語句 do-while語句 for語句2.3.1while型循環(huán)結(jié)構(gòu)當型循環(huán)結(jié)構(gòu)由while語句構(gòu)成,其基本思想是當條件滿足時進入循環(huán),條件不滿足時退出循環(huán)。一般形式條件循環(huán)體while(exp)Loop-Body執(zhí)行過程是:表達式exp為非零(真體Loop-Body,表達式exp為出循環(huán)。2. 3.1 while型循環(huán)結(jié)構(gòu) I開始.例2-14使用while循環(huán)控制結(jié)構(gòu)求 的值1007£ - 1sum=O, /*sum = sum+n- WX/WX/V
19、X/WAAAn= n+Wn<=100<-'上面程序中的循環(huán)結(jié)構(gòu) 可以改寫為如下形式: while (n<=100)sum+=n+;輸出sum值V結(jié)束”圖2. 9例2. 14程序流程圖,2. 3.1 while型循環(huán)結(jié)構(gòu)while語句的注意事項:由于while的執(zhí)行過程是先判斷、后執(zhí)行,若表達式值一開始就為0(假則循環(huán)體一次也不被執(zhí)行。循環(huán)體內(nèi)必須有能改變循環(huán)控制條件的語句循環(huán)體可以是一條語句、一個復(fù)合語句、空語句以及任何合法的C語句。作為判斷條件的表達式可以為算術(shù)表達式、關(guān)系表達式、邏輯表達式。2.3.2 do-while型循環(huán)結(jié)構(gòu)do-while 種變形的直:do-
20、while- do Lo« while執(zhí)行過程 算作為判斷 為非0 (真) 達式的值為 程轉(zhuǎn)到該循:12.3.2do-while型循環(huán)結(jié)構(gòu)do-while循環(huán)語句注意事項:“do-while循環(huán)”是先執(zhí)行循環(huán)體,再判斷條件,因而循環(huán)體至少執(zhí)行一次。循環(huán)體內(nèi)必須有能改變循環(huán)控制條件的語句; 循環(huán)體可以是一條語句、一個復(fù)合語句、空語句以及任何合法的C語句. 在使用時,while(exp)后的分號必須有。12.3.2do-while型楣環(huán)(7+,)殳圖21例2.16程序流程圖例2-16編程序?qū)崿F(xiàn)功能:將一個整數(shù)的各位數(shù)字顛倒后輸出。J2.3.3for型循環(huán)結(jié)構(gòu)for語句構(gòu)成的循環(huán)不僅可用于
21、提還可用于循環(huán)次數(shù)不確定,但給出循for循環(huán)語句的一般形式為:for(expl;exp2;exp3)Loop-Body其中:三個表達式稱為循環(huán)控制月 expl為循環(huán)控制變量賦初值 exp2用于控制循環(huán)的執(zhí)行 exp3為循環(huán)控制變量的修改3執(zhí)行先計算表達式1的值;然后判斷;® 2.12 for控制結(jié)構(gòu)的執(zhí)行過程2. 3. 3 for型循環(huán)結(jié)構(gòu)(真);若表達式2的值為真,則裊體后,計算表達式3的值;然后再3定是否繼續(xù)執(zhí)行循環(huán)體;直到表達4注意:由于for循環(huán)是先判斷、后執(zhí)行,因而循環(huán)體有可能一次都不執(zhí)行。for循環(huán)不僅可在表達式3中修改循環(huán)控制變量的值,還允許在循環(huán)體中存在改變循環(huán)控制條
22、件的語句.循環(huán)體可以是一條語句、一個復(fù)合語句、空語句等任意合法的C語句.for循環(huán)的三個表達式分別都可以是逗號表達式。for循環(huán)的三個表達式中可以缺省一個、兩個、三個,但作為分隔符使用的分號不能缺省.2.3.3for型循環(huán)結(jié)構(gòu)T編程序?qū)崿F(xiàn)功能:求n的階乘(n!"lx2x3xxn).相應(yīng)C程序如下:#include<stdio.h>voidmainOinti,n;longfact-1;/*累乘器置為1*/printf(MInputn:加);scanf("d”,&n);for(i=l;i<=n;i+)for(i=l;i<=n;fact*=i+)f
23、act*=i;/循環(huán)體是空語句/printf(M%d!-%ldnH>n,fact);)例2-19編程實現(xiàn)求階乘功能,要求循環(huán)體用空語句。12.3*3for型循環(huán)結(jié)構(gòu)F12-18編程序?qū)崿F(xiàn)功能:判斷從鍵盤榆入一個大于2的正整數(shù)是否為素數(shù)。素數(shù)的定義只能被1和自身整除的自然數(shù).判斷一個正整數(shù)血是否為素數(shù)的方法將2m-1、2m/2、2sqrt(m)之間的每一個整數(shù)去整除m,如果都不能被整除,則表示m是一個素數(shù).2. 3. 5循環(huán)的嵌奏內(nèi)層循環(huán) O -(2) do-while 與 do-while 地被嵌叁云夕do 交叉的現(xiàn)象;'一般由do 層循環(huán)的循環(huán) I IwhileOwhi1e()的嵌套vhile與for的嵌套while外層循環(huán) 一內(nèi)總循環(huán) O - 一for/k 1/4 2. 3. 5循環(huán)的嵌套伊2-20a編程序榆出循環(huán)變量
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寧夏成立精密金屬零部件公司可行性報告模板范本
- 2024-2025學年高中歷史第六單元現(xiàn)代世界的科技與文化第28課國運興衰系于教育課后篇鞏固探究岳麓版必修3
- 2024-2025學年高中政治專題1.1揭開貨幣神秘的面紗講基礎(chǔ)版含解析必修1
- 2024-2025學年高中政治第三單元思想方法與創(chuàng)新意識第九課唯物辯證法的實質(zhì)與核心第1課時矛盾是事物發(fā)展的源泉和動力課時精練含解析新人教版必修4
- 2024-2025學年高中歷史第三單元近代西方資本主義政治制度的確立與發(fā)展第9課資本主義政治制度在歐洲大陸的擴展教案含解析新人教版必修1
- 2024-2025學年高中數(shù)學課時分層作業(yè)25直線與圓的位置關(guān)系含解析新人教A版必修2
- 2024-2025學年高中生物第三章遺傳和染色體第一節(jié)基因的分離定律第1課時基因的分離定律一知能演練輕巧奪冠蘇教版必修2
- 智能立體車庫建設(shè)項目申請備案可行性研究報告
- 慧魚叉車實驗報告
- 2025年蓄電池的行業(yè)深度研究分析報告
- 中華民族共同體的歷史、現(xiàn)實與未來
- 魯科版小學四年級下冊綜合實踐活動教案(適合山東科學技術(shù)版教材)
- 新漢語水平考試(HSK6級)真題
- TSDLPA 0001-2024 研究型病房建設(shè)和配置標準
- 2025年安徽省合肥市中考數(shù)學模擬試卷(附答案解析)
- 2025屆高考語文復(fù)習:補寫語句+課件
- Siemens WinCC:WinCC趨勢圖與歷史數(shù)據(jù)技術(shù)教程.Tex.header
- 保護和傳承中國傳統(tǒng)文化遺產(chǎn)閱讀題答案
- 人教版生物八年級下冊全冊教學課件
- 四川省高職單招汽車類《汽車文化》復(fù)習備考試題庫(濃縮500題)
- 養(yǎng)牛購料購銷合同范本
評論
0/150
提交評論