




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、2021/1/12,第三章 三種基本結(jié)構(gòu)程序設(shè)計(jì),3.1 順序結(jié)構(gòu)程序設(shè)計(jì),3.2 選擇結(jié)構(gòu)程序設(shè)計(jì),3.3 循環(huán)結(jié)構(gòu),2021/1/12,3.1 順序結(jié)構(gòu)程序設(shè)計(jì),順序結(jié)構(gòu)程序:就是執(zhí)行時(shí)依語句排列順序一條接著一條地執(zhí)行,不發(fā)生控制流的轉(zhuǎn)移,特點(diǎn):每個(gè)程序都是按照語句的書寫順序依次執(zhí)行的,它是最簡單的結(jié)構(gòu)。不可或缺的若干語句,用把它們括起來,這樣的語句體稱為復(fù)合語句。復(fù)合語句在邏輯上等價(jià)于一條語句,復(fù)合語句內(nèi)部還可嵌套復(fù)合語句,2021/1/12,3.1.1 程序設(shè)計(jì)簡例,main() char ch= a; /*定義變量并賦值 */ int a= 98; unsigned b=1000;
2、long c= 123456789; float x= 3.14; double y=1.2345678; printf (1) a= % d,a= % c,ch= % d,ch= % cn,a,a,ch,ch);/*輸出*/ printf (2) b= % u n,b); printf (3) c= % ld n,c); printf (4) x= % f,y= % fn,x,y); printf (5) x= % e,y= % e n,x,y); printf (6) y= % - 10.2fn,y);,例 1】 分析下列程序,觀察運(yùn)行結(jié)果,運(yùn)行結(jié)果,1) a=98,a= b,ch=97,
3、ch= a (2) b=1000 (3) c=123456789 (4) x=3.140000,y=1.234567 (5) x=3.14000e+00,y=1.23456e+ 00 (6) y=1.23,2021/1/12,程序設(shè)計(jì)簡例,例 2】 輸入一個(gè)三位的整數(shù),分解它的符號(hào)、百位數(shù)字、十位數(shù)字和個(gè)位數(shù)字,然后依次輸出,include #include /* 程序中使用了數(shù)學(xué)函數(shù) abs */ main() char c1,c2,c3,c4; /* 定義變量 */ int x; printf(please input a numer: n);/* 輸入提示信息 */ scanf(%d,
4、/* 輸出符號(hào)位,百位,十位,個(gè)位 */,程序的執(zhí)行結(jié)果: please input a numer: -321 -,3,2,1,2021/1/12,程序設(shè)計(jì)簡例,例 3】 在屏幕輸出 “please input your name:”,再從鍵盤上輸入一個(gè)名字,然后顯示“Hello!”,在下一行顯示輸入的名字, include main () char name 10;/* 存放名子的變量在后面章節(jié)再詳細(xì)介紹 */ printf(please input you rname: n);/* 輸出提示信息 */ scanf(% s,name); /* 讀入名字 */ printf(Hello! n
5、); /* 輸出 Hello!*/ printf(% s,name); /* 輸出讀入的名字 */,程序的執(zhí)行結(jié)果: please input your name: Li gang Hello! Li gang,2021/1/12,程序設(shè)計(jì)簡例,例 4】 讀入一個(gè)小寫字母,將其轉(zhuǎn)換成大寫字母后輸出,同時(shí)輸出其對(duì)應(yīng)的 ASCII 編碼, include main() char ch1, ch2 ; printf ( Enter a lower letter : ) ; ch1=getchar ( ) ; /*利用字符輸入函數(shù),實(shí)現(xiàn)鍵盤輸入一個(gè)字符,賦給字符變量 ch1 */ printf (le
6、tter: %c , ASCII:%dn,ch1,ch1 ); /* 屏幕顯示鍵盤輸入的字符,并顯示該字符的 ASCII 代碼值*/ ch2=ch1-32; /*將小寫字母轉(zhuǎn)換成對(duì)應(yīng)的大寫字母 */ printf (letter: %c , ASCII:%dn,ch2,ch2 ); /*屏幕顯示轉(zhuǎn)換后的字符,及該字符的 ASCII 代碼值*/,程序運(yùn)行情況: Enter a lower letter: a letter: a, ASCII: 97 letter: A, ASCII: 65,2021/1/12,程序設(shè)計(jì)簡例,例 5】 在100.0g苯中加入13.76g聯(lián)苯(MB),所形成溶液的沸
7、點(diǎn)為82.40(t2),計(jì)算聯(lián)苯的相對(duì)分子量。已知純苯的沸點(diǎn)為80.10(t1),Kb=2.57, include main() float mA,mB,MB,Kb,t1,t2; /*定義變量*/ printf(please input:mA,mB,Kb ,t1,t2n);/*輸出“輸入數(shù)據(jù)”提示信息*/ scanf(% f,% f,% f,%f,% f, /*打出分子量的單位*/,程序運(yùn)行情況: please input:mA,mB,Kb ,t1,t2 100.0,13.76,2.57,80.10,82.40 MB=153.75 g/mol,2021/1/12,3.1.2 格式輸入輸出的一般
8、形式格式,格式輸出函數(shù)printf(,printf() 函數(shù)調(diào)用的形式: printf(“格式控制字符串”,輸出項(xiàng)表) 或 printf(字符串,在該函數(shù)調(diào)用時(shí),在其后面加上分號(hào),就構(gòu)成了格式輸出語句。 printf 中的輸出項(xiàng)是和前面的格式控制字符串按順序一一對(duì)應(yīng)的?!绊?xiàng)”可以是常量、變量、表達(dá)式、數(shù)組和函數(shù)調(diào)用,其值應(yīng)和格式說明相容,1格式控制字符串 該字符串放在一對(duì)雙引號(hào)中,它可以包含以下三部分內(nèi)容。 (1)按原樣輸出的字符: (2)轉(zhuǎn)義字符: (3)與輸出項(xiàng)對(duì)應(yīng)的“格式說明符”:要求以%開頭,格式說明符在個(gè)數(shù)和類型上應(yīng)該與輸出項(xiàng)相對(duì)應(yīng),2021/1/12,輸出格式字符表,注意:m、n
9、均是正整數(shù), m 主要用于控制輸出數(shù)據(jù)的總寬度,n 用于控制輸出實(shí)數(shù)的小數(shù)位數(shù)或控制輸出字符串時(shí)可以輸出的實(shí)際字符數(shù),2021/1/12,格式輸入輸出的一般形式格式,2輸出項(xiàng)表,printf函數(shù)中的 “輸出項(xiàng)表”部分由表達(dá)式組成,這些表達(dá)式應(yīng)與 “格式控制字符串”中的格式說明符的類型一一對(duì)應(yīng),若 “輸出項(xiàng)表”中有多個(gè)表達(dá)式,則每個(gè)表達(dá)式之間應(yīng)由逗號(hào)隔開,各輸出項(xiàng)可以是任意合法的表達(dá)式(包括常量、變量和函數(shù)調(diào)用)。因此 printf 函數(shù)也具有計(jì)算的功能,printf ( %dn , 100) ; /*輸出顯示100*/ printf ( %dn , 1234000+5678) ; /*輸出顯示
10、:1234+5678*/ printf ( %fn , (x=123.0)+(y=0.4567) ; /*輸出顯示:123.456700*/ printf ( %6.2fn , 123.4567) ; /*輸出顯示:123.46*/ printf ( %.3fn , 123.4567) ; /*輸出顯示:123.457*,2021/1/12,格式輸入輸出的一般形式格式,3 printf函數(shù)的控制字符的附加說明,2021/1/12,格式輸入輸出的一般形式格式,二. 格式輸入函數(shù) scanf(,scanf()調(diào)用的格式: scanf(格式控制字符串,輸入地址項(xiàng)表列,該函數(shù)具有按格式字符串中規(guī)定的格
11、式,在鍵盤上輸入各輸入項(xiàng)的數(shù)據(jù),并依次賦給各輸入項(xiàng),且具有對(duì)從輸入流中接收到的數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換的功能。因?yàn)橐笤趦?nèi)存中保存所接收到的數(shù)據(jù),因此,需要提供接收數(shù)據(jù)的變量的地址。地址運(yùn)算符 printf(input a, b:n); scanf(d,d, /*語句2*,程序的執(zhí)行結(jié)果1: input a, b: 10,12 a=12,b=10 程序的執(zhí)行結(jié)果2: input a, b: 10,10 equal,2021/1/12,程序設(shè)計(jì)簡例,例 7】 輸入 3 個(gè)整數(shù),輸出其中的最大值, include void main( ) int a,b,c,max; /*max中放最大值*/ print
12、f(inputa,b,c:n); scanf(ddd,運(yùn)行: input a,b,c: 32 90 65 max is 90,2021/1/12,程序設(shè)計(jì)簡例,例 8】 解方程 ax2+ bx+ c=0,分析:(1)若 b2-4ac0,方程有兩個(gè)不等的實(shí)根;(2)若 b2-4ac=0,方程有兩個(gè)相等的實(shí)根;(3)若 b2-4ac0,方程有兩個(gè)復(fù)根,2021/1/12,程序設(shè)計(jì)簡例,main() float a,b,c,delta,x1,x2,realpart,imagepart; printf(請(qǐng)輸入 a,b,c:n); scanf(% f,% f,% f, printf(給出所有可能的兌換方
13、案:n); for(i=0;i=100;+i) /*第一層(最外層)循環(huán)*/ for(j=0;j=50;+j) /*第二層(中間層)循環(huán)*/ for(k=0;k=20;+k) /*第三層(最內(nèi)層)循環(huán)*/ if (i*1+j*2+k*5=100) printf(方案%8d: %8d(1)%8d(2)%8d(5)n, +n,i,j,k);,2021/1/12,程序設(shè)計(jì)簡例,例 14】求自然對(duì)數(shù)底的近似值,公式為:e=1+1/1!+1/2!+1/n,include main( ) int i=1; double e=1.0,u=1.0; while (u1e-6) /* while 循環(huán)語句*/
14、u=u/i; e=e+u; i+; printf(ne=%12.10f,e); i=1;e=1.0,u=1.0; do /*do while 循環(huán)語句*/ u=u/i; e=e+u; i+; while (u1e-6); printf(ne=%12.10f,e); for(i=1,e=1.0,u=1.0;u1e-6;+i) /* for循環(huán)語句*/ u=u/i; e=e+u; printf(ne=%12.10f,e);,2021/1/12,程序設(shè)計(jì)簡例,例 15】找出兩個(gè)自然數(shù)平方之和的所有三位數(shù),include stdio.h #include math.h main ( ) int k,j
15、,m,n,flag; for (n100;n1000; n) /*第一層(最外層)循環(huán)*/ ksqrt(1.0*n);/*第一層(最外層)循環(huán)復(fù)合句開始*/ flag0; j1; while(jk)&(flag0) /*第二層(中間層)循環(huán)*/ m1; /*第二層(中間層)循環(huán)復(fù)合句開始*/ while(mk)&(m*m!nj*j) mm1;/*第三層(最內(nèi)層)循環(huán)*/ if (m*mj*jn) flag1; printf(%d%d*%d%d*%dn,n,j,j,m,m); jj1; /*第二層(中間層)循環(huán)復(fù)合句結(jié)束*/ /*第一層(最外層)循環(huán)復(fù)合句結(jié)束*/,2021/1/12,3.3.2
16、 當(dāng)型循環(huán)與直到型循環(huán),一“當(dāng)型”循環(huán),在執(zhí)行循環(huán)語句時(shí),首先判斷循環(huán)控制表達(dá)式是否為“真”,若為“真”,則反復(fù)執(zhí)行循環(huán)體。若為“假”,則結(jié)束循環(huán)。如圖 3-10所示,1while語句,格式: while(表達(dá)式) 語句(循環(huán)體部分,功能:當(dāng)表達(dá)式的值為真時(shí),執(zhí)行 while語句中的循環(huán)體,1)循環(huán)體如果包含一個(gè)以上的語句,則必須用花括弧括起來,以復(fù)合語句的形式出現(xiàn),否則 while 語句范圍只到while后面第一個(gè)分號(hào)處,2021/1/12,當(dāng)型循環(huán)與直到型循環(huán),2)在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句,即設(shè)置修改循環(huán)條件的語句,3)while語句先判斷表達(dá)式的值,然后執(zhí)行循環(huán)體中的語句,如
17、果表達(dá)式的值一開始為假 (值為 0),則不執(zhí)行循環(huán)體,直接執(zhí)行循環(huán)體以外的語句。表達(dá)式是控制循環(huán)的條件,它可以是任何類型的表達(dá)式,2for語句,格式:for (表達(dá)式 1;表達(dá)式 2;表達(dá)式 3) 語句,功能:首先計(jì)算表達(dá)式 1 的值;其后檢測表達(dá)式 2 的值,若其值為“真”,則執(zhí)行循環(huán)體語句,執(zhí)行完畢后,再計(jì)算表達(dá)式 3,至此完成了一次循環(huán);然后,再次測試表達(dá)式 2 的值是否為“真”,若為“真”,繼續(xù)執(zhí)行循環(huán)體語句,直到計(jì)算表達(dá)式 2的值為 0,即為“假”,則終止循環(huán),執(zhí)行 for語句下面的一個(gè)語句。如圖 3-11所示,2021/1/12,當(dāng)型循環(huán)與直到型循環(huán),1)for語句中條件測試總是在
18、循環(huán)開始時(shí)進(jìn)行;如果循環(huán)體部分是多個(gè)語句組成的,則必須用左、右花括號(hào)括起來,使其成為一個(gè)復(fù)合語句,2)for語句中,表達(dá)式 1通常是為循環(huán)變量賦初值的表達(dá)式;表達(dá)式2是控制循環(huán)的表達(dá)式;表達(dá)式 3通常是改變循環(huán)變量值的表達(dá)式。表達(dá)式1和表達(dá)式3既可以是一個(gè)簡單的表達(dá)式,也可以是逗號(hào)表達(dá)式,3)for 語句的表示形式相當(dāng)靈活,可以部分或全部省略,但 “;”不能省略,如 for (;,2021/1/12,當(dāng)型循環(huán)與直到型循環(huán),二“直到型”循環(huán),格式: do 語句(循環(huán)體部分) while(表達(dá)式);(分號(hào)必不可少,功能:先執(zhí)行語句,后判斷表達(dá)式的值。它的執(zhí)行過程是:先執(zhí)行一次指定的語句,然后判斷表
19、達(dá)式的值,當(dāng)表達(dá)式的值為非零(“真”)時(shí),返回重新執(zhí)行該語句,如此反復(fù),直到表達(dá)式的值等于 0為止,此時(shí)循環(huán)結(jié)束。如圖 3-12所示,2021/1/12,當(dāng)型循環(huán)與直到型循環(huán),1)do while語句的表達(dá)式是任意表達(dá)式,是控制循環(huán)的條件,2)先執(zhí)行后判斷。因此,循環(huán)體至少執(zhí)行一次,直到表達(dá)式為“假”才退出循環(huán)。因此,在循環(huán)體語句中一定要有改變表達(dá)式的值的操作,最終使其表達(dá)式的值變?yōu)?0,結(jié)束循環(huán)。否則將成為“死”循環(huán),3)如果 do while語句的循環(huán)體部分是多個(gè)語句組成的話,則必須用左右花括號(hào)括起來,使其形成復(fù)合語句,4)在關(guān)鍵字 while 的小括號(hào)的后面,一定要加分號(hào)“;”,千萬不能
20、忘記,它表示 do while語句到此結(jié)束,2021/1/12,當(dāng)型循環(huán)與直到型循環(huán),三goto 語句,格式:goto 語句標(biāo)號(hào),功能:程序執(zhí)行到 goto語句時(shí),轉(zhuǎn)到語句標(biāo)號(hào)指定的語句去執(zhí)行,1)使用goto語句時(shí),需要預(yù)先指定一個(gè)有標(biāo)號(hào)的可執(zhí)行語句作為目的位置,這個(gè)有標(biāo)號(hào)的語句必須與 goto 語句在同一個(gè)函數(shù)內(nèi)。語句標(biāo)號(hào)必須用標(biāo)識(shí)符表示,不能用整數(shù)作為標(biāo)號(hào),2)與 if語句一起構(gòu)成循環(huán)結(jié)構(gòu)。從結(jié)構(gòu)化程序設(shè)計(jì)角度考慮,大多數(shù)現(xiàn)代的編程方法都認(rèn)為 goto 語句是有害的結(jié)構(gòu),因此不提倡使用 if和 goto語句構(gòu)造循環(huán),3)goto語句為無條件轉(zhuǎn)向語句,會(huì)跳過程序中的一段代碼并轉(zhuǎn)到一個(gè)指定的
21、目的位置,2021/1/12,3.3.3 各種循環(huán)語句的比較,1)4種循環(huán)語句均可以用來處理同一問題,一般情況下它們可以互相代替。但一般不提倡用 goto語句和if語句構(gòu)成的循環(huán),2)while和 do while循環(huán),只在 while后面指定循環(huán)條件,在循環(huán)體中包含反復(fù)執(zhí)行的操作語句,包括使循環(huán)趨于結(jié)束的語句 (如 i+ + ,或 i= i+ 1等)。 for循環(huán)可以在表達(dá)式 3中包含使循環(huán)趨于結(jié)束的語句,甚至可以將循環(huán)體中的操作全部放到表達(dá)式 3中。因此 for語句的功能更強(qiáng),凡用 while循環(huán)能完成的,用 for循環(huán)都能實(shí)現(xiàn),3)while語句和do while語句只有一個(gè)表達(dá)式,用于
22、控制循環(huán)是否進(jìn)行。for語句有三個(gè)表達(dá)式,不僅可以控制循環(huán)是否進(jìn)行,而且能為循環(huán)變量賦初值及不斷修改循環(huán)變量的值。 for語句比 while和 do while語句功能更強(qiáng),更靈活。for語句中三個(gè)表達(dá)式可以是任何合法的C語言表達(dá)式,而且可以部分省略或全部省略,但其中的兩個(gè)分號(hào)不能省略,2021/1/12,各種循環(huán)語句的比較,4)用while和 do while循環(huán)時(shí),循環(huán)變量初始化的操作應(yīng)在 while和 do while語句之前完成。for語句可以在表達(dá)式 1中實(shí)現(xiàn)循環(huán)變量的初始化,5)for 循環(huán)和 while 循環(huán)語句結(jié)構(gòu)均是先判斷循環(huán)條件,條件成立,才執(zhí)行循環(huán)體,具有“先判斷,后執(zhí)行
23、”特點(diǎn),for語句和 while語句可能一次也不執(zhí)行循環(huán)體;而 do while 循環(huán)語句則是先執(zhí)行循環(huán)體,然后再判斷循環(huán)條件,具有“先執(zhí)行,后判斷”的特點(diǎn)。do while語句至少執(zhí)行一次循環(huán)體。for和 while循環(huán)屬于“當(dāng)型”循環(huán);而 do while循環(huán)屬于“直到型”循環(huán),6)while語句和do while語句多用于循環(huán)次數(shù)不定的情況。而do while語句更適合于第一次循環(huán)肯定執(zhí)行的場合。在初值、增量控制條件明顯,或循環(huán)次數(shù)已經(jīng)給定的情況下,最好選用for語句,7)對(duì) while循環(huán)、do while循環(huán)和 for循環(huán),可以用 break語句跳出循環(huán),用 continue語句結(jié)束本次循環(huán),而對(duì) goto語句和 if語句構(gòu)成的循環(huán),不能用 break語句和 continue語句進(jìn)行控制,2021/1/12,3.3.4 break語句與continue語句,1break語句,格式:break,功能:在循環(huán)體或 switch 結(jié)構(gòu)中,當(dāng)執(zhí)行到 break 時(shí),它中止當(dāng)前語句的執(zhí)行 ,把流程轉(zhuǎn)移到當(dāng)前語句或 switch 結(jié)構(gòu)的后續(xù)語句繼續(xù)執(zhí)行,1)在幾種循環(huán)結(jié)構(gòu)中,主要是在循環(huán)次數(shù)不能預(yù)先確定的情況下使用 break語句,在循環(huán)體中增加一個(gè)分支結(jié)構(gòu)。當(dāng)某個(gè)條件成立時(shí),由 break語句退出循環(huán)體,從而結(jié)束循環(huán)過程,2)在循環(huán)結(jié)構(gòu)中使用 break語句,可強(qiáng)制結(jié)束
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)境與設(shè)備監(jiān)控系統(tǒng)李偉課件
- 鋼框架結(jié)構(gòu)施工準(zhǔn)備鋼框架結(jié)構(gòu)安裝課件
- 轉(zhuǎn)讓手機(jī)公司合同范本
- 邯鄲幼兒師范高等??茖W(xué)?!锻恋乩靡?guī)劃學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 內(nèi)蒙古美術(shù)職業(yè)學(xué)院《廣告策劃與文案寫作》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東華宇工學(xué)院《管理信息系統(tǒng)實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025河北保定市國控集團(tuán)有限責(zé)任公司公司招聘工作人員8名筆試參考題庫附帶答案詳解
- 2024-2025學(xué)年乾安縣三年級(jí)數(shù)學(xué)第二學(xué)期期末質(zhì)量跟蹤監(jiān)視試題含解析
- 2024-2025學(xué)年成武縣數(shù)學(xué)三下期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含解析
- 2025屆阿壩縣四下數(shù)學(xué)期末達(dá)標(biāo)檢測模擬試題含解析
- 單位下鄉(xiāng)租車方案
- 化工制圖第一章制圖的基本知識(shí)課件
- 《植物學(xué)》練習(xí)(二)根、莖、葉營養(yǎng)器官的聯(lián)系及變態(tài)
- 鼎和財(cái)險(xiǎn)附加意外傷害醫(yī)療保險(xiǎn)A款(互聯(lián)網(wǎng)專屬)條款
- 中暑-紅十字應(yīng)急救護(hù)培訓(xùn)課件
- 聯(lián)儲(chǔ)共備實(shí)施方案
- 光伏工程 危害辨識(shí)風(fēng)險(xiǎn)評(píng)價(jià)表(光伏)
- 高壓電動(dòng)機(jī)試驗(yàn)報(bào)告模板
- 醫(yī)學(xué)課件-主動(dòng)脈夾層ppt
- 氫氧化鈣化學(xué)品安全技術(shù)說明書
- 大眾Polo 2014款說明書
評(píng)論
0/150
提交評(píng)論