![第3章 程序流程控制_第1頁](http://file3.renrendoc.com/fileroot3/2021-11/28/2c78597a-e8d6-4918-9a33-251de980e987/2c78597a-e8d6-4918-9a33-251de980e9871.gif)
![第3章 程序流程控制_第2頁](http://file3.renrendoc.com/fileroot3/2021-11/28/2c78597a-e8d6-4918-9a33-251de980e987/2c78597a-e8d6-4918-9a33-251de980e9872.gif)
![第3章 程序流程控制_第3頁](http://file3.renrendoc.com/fileroot3/2021-11/28/2c78597a-e8d6-4918-9a33-251de980e987/2c78597a-e8d6-4918-9a33-251de980e9873.gif)
![第3章 程序流程控制_第4頁](http://file3.renrendoc.com/fileroot3/2021-11/28/2c78597a-e8d6-4918-9a33-251de980e987/2c78597a-e8d6-4918-9a33-251de980e9874.gif)
![第3章 程序流程控制_第5頁](http://file3.renrendoc.com/fileroot3/2021-11/28/2c78597a-e8d6-4918-9a33-251de980e987/2c78597a-e8d6-4918-9a33-251de980e9875.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/32 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/33 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/34 第3章 程序流程控制 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/35N-S結(jié)結(jié)構(gòu)構(gòu)圖圖流流程程圖圖ABABYNABP成立成立? P T F A B3.1 程序的三種基本結(jié)構(gòu)程序的三種基本結(jié)構(gòu) 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/36NYP成立成立?A當(dāng)當(dāng)P成立時(shí)成立時(shí) A A當(dāng)P成立時(shí)YNAP成立成立?N-S結(jié)結(jié)構(gòu)構(gòu)圖圖流流程程圖圖3.1 程序的
2、三種基本結(jié)構(gòu)程序的三種基本結(jié)構(gòu) 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/373.2 順序結(jié)構(gòu) 3.2.1 賦值語句 賦值語句是由賦值表達(dá)式再加上分號構(gòu)成的表達(dá)式語句。 其一般形式為: 變量=表達(dá)式; 【例3.1】賦值語句舉例 #include”stdio.h” main( ) int a=10,x=5,y=6; a+=a*=6; x=y+; y=+x ; printf(“%d,%d,%d”,a,x,y); 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/38賦值語句的使用中需要注意以下幾點(diǎn)賦值語句的使用中需要注意以下幾點(diǎn) 1. 由于在賦值符“=”右邊的表達(dá)式
3、也可以又是一個(gè)賦值表達(dá)式, 下述形式 : 變量=(變量=表達(dá)式);是成立的,從而形成嵌套的情形。例如: a=b=c=d=e=5;按照賦值運(yùn)算符的右接合性,等效于: e=5; d=e; c=d; b=c; a=b;2. 在變量說明中給變量賦初值和賦值語句的區(qū)別。給變量賦初值是變量說明的一部分,賦初值后的變量與其后的其它同類變量之間仍必須用逗號間隔,而賦值語句則必須用分號結(jié)尾。 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/393. 在變量說明中,不允許連續(xù)給多個(gè)變量賦初值。 如int a=b=c=5 ;是錯(cuò)誤的;必須寫為 int a=5,b=5,c=5; 而賦值語句允許連續(xù)賦值
4、a=b=c=5;4. 賦值表達(dá)式和賦值語句的區(qū)別。賦值表達(dá)式是一種表達(dá)式,它可以出現(xiàn)在任何允許表達(dá)式出現(xiàn)的地方,而賦值語句則不能。下述語句是合法的: if (x=y+5)0) z=x; 語句的功能是,若表達(dá)式x=y+5大于0則z=x下述語句是非法的: if (x=y+5; )0) z=x;因?yàn)閤 =y+5; 是語句,不能出現(xiàn)在表達(dá)式中。賦值語句的使用中需要注意以下幾點(diǎn)賦值語句的使用中需要注意以下幾點(diǎn) 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/310 5.賦值語句的作用是計(jì)算表達(dá)式的值,并賦給變量。(1)對于任何一個(gè)變量必須先賦值,然后才能引用,否則,未賦初值的變量將以一個(gè)隨
5、機(jī)值參與運(yùn)算。(2) 賦值號兩邊的類型必須一致,但表達(dá)式值為整數(shù)時(shí),它可自動(dòng)轉(zhuǎn)化為實(shí)型后賦給該實(shí)型變量。 賦值語句的使用中需要注意以下幾點(diǎn)賦值語句的使用中需要注意以下幾點(diǎn) 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/311 printf函數(shù)一般形式 printf(格式控制, 參數(shù)2,參數(shù)n) 功能:按格式控制所指定的格式,在標(biāo)準(zhǔn)輸出設(shè)備上輸出參數(shù)2、參數(shù)n的值。 例如有程序段 :int a=123,b=100; printf(%d %d %dn,a,b,a+b); printf (c = %d + %d = %dn,a,b,a+b ); 3.2.2 格式輸出與輸入格式輸出與輸
6、入 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/312格式輸出函數(shù)的一般形式printf(“格式控制字符串格式控制字符串”,輸出參數(shù)表輸出參數(shù)表);用雙引號括起來,控制輸出項(xiàng)的格式和輸出一些提示信息 可以是一個(gè)或多個(gè)輸出項(xiàng). 可以是常量或變量表達(dá)式,用逗號分隔。類型可以是整型,實(shí)型,字符型和字符串型.具體的講,具體的講,printf語句,就是把輸出參數(shù)表中的表達(dá)語句,就是把輸出參數(shù)表中的表達(dá)式的值,按照格式控制字符串的格式,依次在指定的式的值,按照格式控制字符串的格式,依次在指定的位置輸出,如果輸出位置不夠,從左到右依次輸出前位置輸出,如果輸出位置不夠,從左到右依次輸出前幾個(gè)
7、的值。幾個(gè)的值。 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/313格式控制格式控制 用雙引號括起的字符串,用于指定輸出數(shù)據(jù)的類型、格式、個(gè)數(shù) 包括:普通字符和格式說明符 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/314在在printf語句的格式控制字符串中,有三類字符:語句的格式控制字符串中,有三類字符:普通字符:按原樣輸出,主要起提示作用。普通字符:按原樣輸出,主要起提示作用。轉(zhuǎn)義字符:指明特定的操作,如轉(zhuǎn)義字符:指明特定的操作,如n換行、換行、t橫向跳格橫向跳格格式說明部分:由格式說明部分:由%引導(dǎo)的格式字符串組成引導(dǎo)的格式字符串組成 輸出參數(shù)表中的
8、表達(dá)式,就是按照格式說明輸出參數(shù)表中的表達(dá)式,就是按照格式說明部分指定的格式,在格式控制字符串中的相應(yīng)位部分指定的格式,在格式控制字符串中的相應(yīng)位置輸出的。置輸出的。 格式說明部分的一般格式為:格式說明部分的一般格式為: %flagswidth.precF|N|h|Ltype在這里,我們對常用的幾種形式進(jìn)行介紹!在這里,我們對常用的幾種形式進(jìn)行介紹! 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/315輸出格式說明符輸出格式說明符整型數(shù)據(jù) %d以有符號十進(jìn)制形式輸出整型數(shù)%o以無符號八進(jìn)制形式輸出整型數(shù)%x以無符號十六進(jìn)制形式輸出整型數(shù)%u以無符號十進(jìn)制形式輸出整型數(shù)實(shí)型數(shù)據(jù)
9、%f以小數(shù)形式輸出實(shí)型數(shù)%e以指數(shù)形式輸出實(shí)型數(shù)%g按數(shù)值寬度最小的形式輸出實(shí)型數(shù)字符型數(shù)據(jù) %c輸出一個(gè)字符%s輸出字符串其他 %輸出字符 % 本身 在和格式符之間可以使用附加說明符 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/316附加格式說明符附加格式說明符 l輸出長整型數(shù)(只可與d、o、x、u結(jié)合用)m指定數(shù)據(jù)輸出的寬度(即域?qū)挘?n對實(shí)型數(shù)據(jù),指定輸出 n 位小數(shù);對字符串,指定左端截取n 個(gè)字符輸出+使輸出的數(shù)值數(shù)據(jù)無論正負(fù)都帶符號輸出-使數(shù)據(jù)在輸出域內(nèi)按左對齊方式輸出例如:%ld 輸出十進(jìn)制長整型數(shù) %m.nf 右對齊,m位域?qū)?,n位小數(shù)或n個(gè)字符%-m.nf
10、左對齊 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/317格式輸出格式輸出printf函數(shù)運(yùn)用示例:函數(shù)運(yùn)用示例:1. printf(“Its fun!”);輸出:輸出: Its fun!2. int a=1,b=2; printf(“%d,%d”,a,b);輸出:輸出:1,23. int a=1,b=2; printf(“a=%dnb=%d”,a,b);輸出:輸出:a=1 b=24. int a=1,b=2; printf(“%d”,a+b);輸出:輸出:35. int a=1,b=2; printf(“a+b”); 輸出:輸出:a+b 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院
11、計(jì)算機(jī)科學(xué)系2022/7/318【例例3.2】整型數(shù)據(jù)的輸出整型數(shù)據(jù)的輸出main( ) int a=11,b=22; int m=-1; long n=123456789; printf(%d %dn,a,b); printf(a=%d, b=%dn,a,b); printf(m: %d, %o, %x, %un,m,m,m,m); printf(n=%dn,n); printf(n=%ldn,n);1122a=11, b=22m: -1, 177777, ffff, 65535n=123456789n=123456789例jc1_a 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022
12、/7/319【例例3.3】實(shí)型數(shù)據(jù)的輸出實(shí)型數(shù)據(jù)的輸出main( ) float x=1234.56,y=1.23456789; double z=1234567.123456789; printf(x=%f, y=%f n,x,y); printf(z=%fn,z); printf(z=%en,z); printf(z=%gn,z); printf(z=%18.8fn,z); printf(x=%10.3fn,x); printf(x=%-10.3fn,x); printf(x=%4.3fnn,x); x=1234.560059, y=1.234568z=1234567.123457z=1.
13、23457e+06z=1234570z= 1234567.12345679x= 1234.560 x=1234.560 x=1234.560例jc2_b 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/320【例例3.4】字符型數(shù)據(jù)的輸出字符型數(shù)據(jù)的輸出main( ) int m=97; char ch=B; printf(m: %d %cn,m,m); printf(ch: %d %cn,ch,ch); printf(%sn,student); printf(%10sn,student); printf(%-10sn,student); printf(%10.3sn,stude
14、nt); printf(%.3snn,student); 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/321【例3.5】 #include main( ) int a=65,i= -2;char c=a; float b=1.34576;double d=4.65; unsigned j=65535; printf(“n%s”,”hello”); printf(“n%d,%c,%d,%u,%u,%d”,a,a,i,i,j,j); printf(“n%.3f,%.4lf”,b,d); printf(“n%d,%d”,a+i,i+); 例jc4_c 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文
15、理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/322注意:注意: printf函數(shù)格式控制中的格式說明符與輸出參數(shù)的個(gè)數(shù)和類型必須一一對應(yīng)。 格式說明符的 % 和后面的描述符之間不能有空格。除 %X、%E、%G外類型描述符必須是小寫字母。 長整型數(shù)應(yīng)該用ld(或lo、lx、lu)格式輸出,否則會(huì)出現(xiàn)輸出錯(cuò)誤。 printf函數(shù)的參數(shù)可以是常量、變量或表達(dá)式。在計(jì)算各參數(shù)值時(shí),Turbo C采用從右至左的順序求值。 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/3232 格式輸入函數(shù)格式輸入函數(shù) scanf 函數(shù)調(diào)用的一般形式 scanf(格式控制, 地址參數(shù)2,地址參數(shù)n); 功能:按格式控
16、制指定的格式,從標(biāo)準(zhǔn)輸入設(shè)備(即鍵盤)交互輸入數(shù)據(jù),并依次存放到對應(yīng)地址參數(shù)指定的變量中(即將輸入值賦給變量)。 例如: scanf (%d%f,&a, &f); scanf (%o, %f , &b,&x); scanf (a=%d, b=%d,&a,&b); 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/324格式控制格式控制 用雙引號括起的字符串,用于指定輸入數(shù)據(jù)的類型、格式、個(gè)數(shù)以及輸入的形式 包括:普通字符和格式說明符 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/325輸入格式說明符輸入格式說明符整型數(shù)據(jù) %d輸入十進(jìn)制整型數(shù)%u輸入無符號的十進(jìn)制整
17、型數(shù)%o輸入八進(jìn)制整型數(shù)%x輸入十六進(jìn)制整型數(shù)實(shí)型數(shù)據(jù) %f輸入小數(shù)形式的單精度實(shí)型數(shù)%e輸入指數(shù)形式的單精度實(shí)型數(shù)字符型數(shù)據(jù) %c輸入單個(gè)字符%s輸入一個(gè)字符串 在和格式符之間可以使用附加說明符 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/326附加格式說明符附加格式說明符 l與d、o、x、u結(jié)合輸入長整型數(shù)與 f 結(jié)合輸入double型數(shù)m指定數(shù)據(jù)輸入的寬度(即域?qū)挘?忽略讀入的數(shù)據(jù)(即不將讀入數(shù)據(jù)賦給相應(yīng)變量)例如:%ld、%lo輸入十進(jìn)制、八進(jìn)制長整型數(shù)%lf、%le輸入雙精度實(shí)型數(shù)%mf輸入m位數(shù)(域?qū)挘?*d忽略輸入的一個(gè)整型數(shù) 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)
18、院計(jì)算機(jī)科學(xué)系2022/7/327 輸入數(shù)據(jù)時(shí)要嚴(yán)格按照輸入數(shù)據(jù)時(shí)要嚴(yán)格按照scanf語句中格式控制字語句中格式控制字符串的形式輸入。看下面的例子:符串的形式輸入。看下面的例子:1. scanf(“%d%d”,&a,&b);輸入:輸入:1 2回車回車 或者或者 1回車回車2回車回車2. scanf(“%d,%d”,&a,&b);輸入:輸入:1,2回車回車3. Scanf(“a=%d,b=%d”,&a,&b);輸入:輸入:a=1,b=2回車回車 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/328例如:例如: scanf (%d%d%d, &a, &b, &c); 輸入3個(gè)整型十
19、進(jìn)制數(shù),以空白符(空格、tab鍵或回車鍵)分隔 scanf (%d, %o, %f , &a, &b, &x); 輸入3個(gè)數(shù),以“,”分隔 scanf (a=%d, b=%d, &a, &b); 輸入的形式是:a=32, b=28 (普通字符要照原樣輸入) 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/329【例例3.6】main( ) int a,b,c; long m; float x; double y; char ch, string20; printf(input a,b,c,m: ); scanf(%d %o %x %ld,&a,&b,&c,&m); printf(
20、a=%d,b=%d,c=%d,m=%ldn,a,b,c,m); printf(input x,y: ); scanf(%f %lf,&x,&y); getchar(); printf(x=%f, y=%fn,x,y); printf(input ch,string: ); scanf(%c %s,&ch, string); printf(ch=%c, string=%snn,ch,string);運(yùn)行運(yùn)行jc5 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/330使用使用scanf函數(shù)應(yīng)注意:函數(shù)應(yīng)注意: 要求在程序運(yùn)行中輸入數(shù)據(jù),輸入的數(shù)據(jù)個(gè)數(shù)和類型必須與要求在程序運(yùn)行中輸入
21、數(shù)據(jù),輸入的數(shù)據(jù)個(gè)數(shù)和類型必須與格式說明符一一對應(yīng)。格式說明符一一對應(yīng)。 地址參數(shù)形式:地址參數(shù)形式:& &變量名(除數(shù)組或指針變量)即:變量名(除數(shù)組或指針變量)即:參數(shù)的參數(shù)的第二部分一定是地址列表第二部分一定是地址列表, ,不能是表達(dá)式,請記得在變量前不能是表達(dá)式,請記得在變量前加上加上& &。 格式控制中有普通字符時(shí),必須照原樣輸入。格式控制中有普通字符時(shí),必須照原樣輸入。 格式控制中無普通字符時(shí),輸入的數(shù)值型數(shù)據(jù)和字符串用格式控制中無普通字符時(shí),輸入的數(shù)值型數(shù)據(jù)和字符串用空空格間隔,也可以用回車鍵、格間隔,也可以用回車鍵、tabtab鍵分隔鍵分隔,字符型數(shù)據(jù)不必分,字符型數(shù)據(jù)不必分隔
22、。隔。 doubledouble型數(shù)據(jù)輸入時(shí),必須用型數(shù)據(jù)輸入時(shí),必須用%lf%lf或或%le%le格式格式 實(shí)型數(shù)輸入時(shí)域?qū)挷荒苡脤?shí)型數(shù)輸入時(shí)域?qū)挷荒苡胢.nm.n形式的附加說明即:形式的附加說明即:實(shí)數(shù)不許實(shí)數(shù)不許規(guī)定精度,像規(guī)定精度,像%10.4f%10.4f是不合法是不合法的。的。 為了減少不必要的輸入量,除了逗號、分號、空格符以外,為了減少不必要的輸入量,除了逗號、分號、空格符以外,格式控制中盡量不要出現(xiàn)普通字符,也不要使用格式控制中盡量不要出現(xiàn)普通字符,也不要使用 nn 、tt 等轉(zhuǎn)義字符等轉(zhuǎn)義字符 % %后面有數(shù)字,可以自動(dòng)截取該長度的數(shù)據(jù)作為輸入值。后面有數(shù)字,可以自動(dòng)截取該長
23、度的數(shù)據(jù)作為輸入值。 如果輸入時(shí)類型不匹配則停止處理,返回如果輸入時(shí)類型不匹配則停止處理,返回0 0。 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/331注意(續(xù))注意(續(xù)) : 格式符之間若無普通字符,則: 輸入的數(shù)值型數(shù)據(jù)用空白符分隔 輸入的 char型數(shù)據(jù)不必分隔 scanf (%d%d, &m, &n);scanf (%c, &ch); 錯(cuò)誤輸入:錯(cuò)誤輸入:32 28 a 正確輸入:正確輸入:32 28a 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/332int putchar(int) 向標(biāo)準(zhǔn)輸出設(shè)備向標(biāo)準(zhǔn)輸出設(shè)備(一般為顯示器一般為顯示器)輸出一
24、個(gè)字輸出一個(gè)字符,并返回該字母的符,并返回該字母的ASCII碼值。參數(shù)可以是碼值。參數(shù)可以是字字符常量、變量符常量、變量或或整型常量、變量整型常量、變量。如:如:#include main() int a=65; char c=d; putchar(a); putchar(97); putchar(n);putchar(c); 3.2.3 字符輸入輸出函數(shù)1.字符輸出函數(shù)字符輸出函數(shù)輸出為:輸出為: Aa d 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/3332.字符輸入函數(shù)int getchar(void) 從輸入設(shè)備從輸入設(shè)備( (一般為鍵盤一般為鍵盤) )上輸入一個(gè)字符
25、。它每上輸入一個(gè)字符。它每被調(diào)用一次,就從標(biāo)準(zhǔn)輸入設(shè)備上取一個(gè)字符,返回被調(diào)用一次,就從標(biāo)準(zhǔn)輸入設(shè)備上取一個(gè)字符,返回值是該字符的值是該字符的ASCIIASCII編碼值,可以賦給字符變量或整編碼值,可以賦給字符變量或整型變量。型變量。例:例:#include main( ) int i, j; char c; i=getchar( ); putchar(i); j=getchar( ); putchar(j); c=getchar( ); putchar(c); 思考思考:以下三種不同的輸入,以下三種不同的輸入,輸出情況如何?輸出情況如何? 1.abcdefg 2.ab 3.a bcdefg
26、執(zhí)行執(zhí)行g(shù)etchar()getchar()時(shí)輸入字符以時(shí)輸入字符以回車結(jié)束,同時(shí)回車字符也可以回車結(jié)束,同時(shí)回車字符也可以做為輸入的字符。做為輸入的字符。 注意注意Ch3_1 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/3343.2順序結(jié)構(gòu)程序設(shè)計(jì)順序結(jié)構(gòu)程序設(shè)計(jì)4. 順序結(jié)構(gòu)程序的一般算法描述變量定義變量定義變量賦值變量賦值運(yùn)算處理運(yùn)算處理輸出輸出結(jié)果結(jié)果可用:可用: 變量初始化變量初始化 賦值語句賦值語句 輸入函數(shù)調(diào)用語句輸入函數(shù)調(diào)用語句 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/335順序結(jié)構(gòu)程序設(shè)計(jì)舉例順序結(jié)構(gòu)程序設(shè)計(jì)舉例 【例3.7】數(shù)據(jù)交換。
27、從鍵盤輸入a、b的值,輸出交換以后的值。 思路:在計(jì)算機(jī)中交換變量a和b的值,不能只寫下面兩個(gè)賦值語句a=b ; b=a ; 正確的交換方法:正確的交換方法:c=a ; a=b ; b=c; 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/336程序:程序:main( ) int a,b,c; printf(ninput a, b: ); scanf(%d,%d,&a,&b); printf(nbefore exchange:a=%d b=%dn,a,b); c=a; a=b; b=c; printf(after exchange: a=%d b=%dn,a,b);程序運(yùn)行情況如
28、下:程序運(yùn)行情況如下:input a, b: 32, 57 before exchange: a=32 b=57 after exchange: a=57 b=32 運(yùn)行運(yùn)行jc6 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/337舉例:舉例: 【例3.8】已知三條邊a、b、c,求三角形面積。計(jì)算三角形面積的海倫公式: ) cs)(bs)(as ( sarea) cba (21s 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/338程序如下:程序如下: #include math.hmain( ) int a,b,c; float s,area ; scanf
29、(%d, %d, %d,&a,&b,&c); s =1.0/2*(a+b+c) ; area = sqrt(s*(s-a)*(s-b)*(s-c) ; printf(area = %8.3f n,area) ;程序運(yùn)行情況如下:程序運(yùn)行情況如下:3,4,5 area = 6.000 運(yùn)行運(yùn)行jc3_16 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/3393.3 選擇結(jié)構(gòu)選擇結(jié)構(gòu)3.3.1 if語句(1) if語句的一般形式(2) if語句的嵌套3.3.2 switch語句(1) switch語句的一般形式(2) break語句 選擇結(jié)構(gòu)程序設(shè)計(jì)舉例 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶
30、雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/340簡單分支語句簡單分支語句 語句一般格式 if (表達(dá)式) 語句內(nèi)嵌語句,可為:內(nèi)嵌語句,可為: 賦值語句賦值語句 函數(shù)調(diào)用語句函數(shù)調(diào)用語句 控制語句控制語句 復(fù)合語句復(fù)合語句 空語句空語句可為算術(shù)、關(guān)系、邏輯、賦值可為算術(shù)、關(guān)系、邏輯、賦值等表達(dá)式等表達(dá)式 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/341簡單分支語句的算法:簡單分支語句的算法: 例如: if (x0) m+; if ( ab ) c=a; a=b; b=c; 表達(dá)式非表達(dá)式非0 T F 語句語句N-S結(jié)構(gòu)圖結(jié)構(gòu)圖語句語句流程圖流程圖NY表達(dá)式非表達(dá)式非0? 寶雞文理
31、學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/342雙重分支語句雙重分支語句 語句一般格式if (表達(dá)式) 語句1 else 語句2 功能: 計(jì)算表達(dá)式的值,如果它的值是一個(gè)非0值(邏輯真),就執(zhí)行內(nèi)嵌語句1,之后跳過內(nèi)嵌語句2,執(zhí)行后續(xù)語句;否則跳過內(nèi)嵌語句1,執(zhí)行內(nèi)嵌語句2,之后執(zhí)行后續(xù)語句。 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/343雙重分支語句的算法:雙重分支語句的算法: 例如: if (x0) m+; else m-; if ( ch= a & ch=A & ch=A & ch=Z ? ch+32:ch);putchar ( n) 寶雞文理學(xué)院計(jì)算機(jī)
32、科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/349if語句的嵌套語句的嵌套 如果if的內(nèi)嵌語句中又使用了一個(gè)if語句,則構(gòu)成if語句的嵌套。 【例例3.10】比較兩個(gè)整數(shù)的關(guān)系。比較兩個(gè)整數(shù)的關(guān)系。#include main( ) int x, y; printf (Enter integer X and Y:); scanf (%d%d, &x, &y); if ( x != y ) if ( x y ) printf (XYn); else printf (XYn); else printf (X=Yn);運(yùn)行運(yùn)行jc4_2有利于閱讀程序有利于閱讀程序 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院
33、計(jì)算機(jī)科學(xué)系2022/7/350 if語句嵌套的形式語句嵌套的形式 簡單if語句的嵌套形式 if (表達(dá)式) if 語句 雙重(或多重)分支if語句的嵌套形式 if (表達(dá)式) if 語句 else if 語句 可以是各種形式的可以是各種形式的if語句語句可以是各種形式的可以是各種形式的if語句語句如果是簡單如果是簡單if語句,語句,必須用必須用“ ”括起括起 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/351例如:例如: if (c=50) printf(50=c=100n); if (c=50) printf(50=c=100n);else printf(c50n);el
34、se if (c=150) printf(100c150n); if (c=50) printf(50=c=100n);else printf(cb) if(ac)if(ad) m=1; else m=2; else m=3; 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/353舉例舉例 【例3.11】輸入一個(gè)數(shù),判斷它是奇數(shù)還是偶數(shù),如果是奇數(shù)則進(jìn)一步判斷它是否為5的倍數(shù)。 定義變量定義變量x輸入輸入x的值的值 x是奇數(shù)是奇數(shù) T F 輸出輸出“odd” x是是5的倍數(shù)的倍數(shù) 輸出輸出“even” T F是是5的倍數(shù)的倍數(shù) 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系20
35、22/7/354程序:程序:main( ) int x; scanf (%d,&x); if (x%2 != 0) printf(%d is an odd n,x) ; if (x%5=0) printf(%d is the times of 5 n,x) ; else printf(%d is an even n,x) ;運(yùn)行運(yùn)行jc4_4 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/355學(xué)習(xí)學(xué)習(xí)if語句的難點(diǎn)語句的難點(diǎn) if else 語句的配對 正確用表達(dá)式描述條件例如:當(dāng)x大于5小于10時(shí)令x自增 if ( 5x10 ) x+; 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院
36、計(jì)算機(jī)科學(xué)系2022/7/356熟悉常用的熟悉常用的if 表達(dá)式形式表達(dá)式形式例如有定義:int a,b=0;a等于什么值時(shí),執(zhí)行b=2 ;語句?if (a=0) b=2;if (a=1) b=2;if (a!=0) b=2; if (a=1) b=2;if (a=0) b=2;if (a) b=2;if (!a) b=2; 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/3573.3.2 switch語句語句 switch語句的一般形式 switch (表達(dá)式) case 常量表達(dá)式1: 語句序列1 case 常量表達(dá)式2: 語句序列2 case 常量表達(dá)式n: 語句序列n d
37、efault : 語句序列n+1 功能: 計(jì)算表達(dá)式的值,與常量表達(dá)式的值比較,等于第i個(gè)值時(shí),順序執(zhí)行語句序列i、i+1、 、 n+1 若與所有常量表達(dá)式值都不相等,執(zhí)行語句序列n+1。 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/358switch語句的算法描述語句的算法描述 N-S結(jié)構(gòu)圖計(jì)算表達(dá)式常量表達(dá)式1語句序列1常量表達(dá)式2語句序列2 常量表達(dá)式n語句序列ndefault語句序列n+1switch (a) case 5: printf(&); case 2: printf(#); default:printf($); 當(dāng)當(dāng)a等于等于5,輸出:,輸出:當(dāng)當(dāng)a等于等于
38、2,輸出:,輸出:當(dāng)當(dāng)a是其他值,輸出:是其他值,輸出: 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/359說明:說明:“case 常量表達(dá)式i:”等價(jià)于語句標(biāo)號,計(jì)算出的表達(dá)式值等于哪個(gè)語句標(biāo)號,就從哪個(gè)位置開始順序向下執(zhí)行語句序列。 語句位置影響運(yùn)行結(jié)果switch (a) case 2: printf(#); default: printf($); case 5: printf(&);break;break; break; 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/360switch語句的簡單應(yīng)用語句的簡單應(yīng)用【例3.12】已知x=100,y=15,
39、要求輸入一個(gè)算術(shù)運(yùn)算符(+、-、* 或 / ),并對x和y進(jìn)行指定的算術(shù)運(yùn)算。 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/361 實(shí)型數(shù)通常不使用實(shí)型數(shù)通常不使用z=0或或z!=0的比較的比較 可用可用代替代替程序:程序:#include stdio.hmain( ) float x=100,y=15,z; char op; op=getchar( ); switch (op) case +: z=x+y; break; case -: z=x-y; break; case *: z=x*y; break; case /: z=x/y; break; default: z=
40、0; if(int)z!=0) printf(%f%c%f=%fn,x,op,y,z); else printf (%c is not an operatorn,op);運(yùn)行運(yùn)行jc4_4 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/362注意:注意: switch語句的書寫格式:語句體本身必須用花括號括起;case和default后面如果有多條語句,則可以不必使用花括號;case和常量表達(dá)式之間必須有空格;default可以寫在語句體的任何位置,也可以省略不寫 break語句可以改變case的語句標(biāo)號作用,終止后續(xù)case語句序列的執(zhí)行。 switch語句和break語句結(jié)
41、合,可以實(shí)現(xiàn)程序的選擇控制(break語句還可以在循環(huán)語句中使用) 允許switch嵌套使用,但同一個(gè)switch語句中,任意兩個(gè)case的常量表達(dá)式值不能相同。 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/363選擇結(jié)構(gòu)程序設(shè)計(jì)舉例選擇結(jié)構(gòu)程序設(shè)計(jì)舉例【例3.13】求一元二次方程ax2+bx+c=0的根。 aacbbx2422, 1 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/364算法:算法: 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/365程序:程序:#include math.hmain( ) float a,b,c,d,x1,x
42、2,lp,ip; scanf(%f%f%f,&a,&b,&c); printf(the equation ); if (fabs(a)1e-6) printf(is not quadratic); else d=b*b-4*a*c; if (fabs(d)1e-6) /* 不相等的實(shí)根 */ x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(has two real roots:n) ; printf(x1=%8.4f, x2=%8.4fn,x1,x2); else /* 虛根 */ lp=-b/(2*a);ip=sqrt(-d)/(2*a)
43、; printf(has two complex roots: n); printf(x1=%8.4f+%8.4fin,lp,ip); printf(x2=%8.4f-%8.4fin,lp,ip); 運(yùn)行運(yùn)行jc4_6 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/367舉例(續(xù)):舉例(續(xù)):【例3.14】輸入年份,判別該年是否為閏年。 設(shè)定標(biāo)志變量設(shè)定標(biāo)志變量,只要符合其中一個(gè)條件的就,只要符合其中一個(gè)條件的就是閏年,令是閏年,令 ;否則令;否則令 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/368算法:算法:定義變量定義變量year、leap 輸入年份輸
44、入年份year T F leap=1 T F leap = 1 leap = 0 leap=1? T F 是閏年是閏年 不是閏年不是閏年year%4=0 & year%100 !=0 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/369程序:程序:main( ) int year, leap ; scanf(%d, &year); if (year%4=0 & year%100!=0) leap=1; else if (year%400=0) leap=1; else leap=0; if (leap = 1) printf(%d is a leap year n, year)
45、; else printf(%d is not a leap year n, year); 運(yùn)行運(yùn)行jc4_b 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/3703.4 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 本節(jié)主要內(nèi)容本節(jié)主要內(nèi)容while循環(huán)控制do-while循環(huán)控制for循環(huán)控制用goto語句實(shí)現(xiàn)循環(huán)控制循環(huán)結(jié)構(gòu)中的跳轉(zhuǎn)語句循環(huán)的嵌套循環(huán)結(jié)構(gòu)程序設(shè)計(jì)舉例 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/371本節(jié)教學(xué)目的和基本要求:本節(jié)教學(xué)目的和基本要求:要求學(xué)生了解循環(huán)結(jié)構(gòu)程序設(shè)計(jì),掌握各種循環(huán)語句應(yīng)用的特點(diǎn)及異同點(diǎn),掌握循環(huán)嵌套及復(fù)合結(jié)構(gòu)。 本節(jié)教學(xué)重點(diǎn):本節(jié)教學(xué)重點(diǎn):
46、各種循環(huán)語句應(yīng)用的特點(diǎn)及異同點(diǎn)。 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/372 scanf(“%f”,&a); s=s+a; scanf(“%f”,&a); s=s+a; . 這樣重復(fù)一百次,然后這樣重復(fù)一百次,然后 輸出輸出s的值。的值。這樣寫顯然非常麻煩。我們注意到程序中的 scanf(“%f”,&a); s=s+a;兩句話是一直重復(fù)的,如果能用一種語句,使這兩句話能自動(dòng)的重復(fù)執(zhí)行一百次,就可以簡化了書寫的麻煩,這就是循環(huán)語句。編程解決這樣的一個(gè)問題:編程解決這樣的一個(gè)問題:從鍵盤輸入一百個(gè)學(xué)生的成績,求總成績。從鍵盤輸入一百個(gè)學(xué)生的成績,求總成績。從前面所學(xué),有兩
47、種解決方法。從前面所學(xué),有兩種解決方法。1.設(shè)一百個(gè)變量,分別輸入學(xué)生的成績,然后求和。設(shè)一百個(gè)變量,分別輸入學(xué)生的成績,然后求和。 這種方法浪費(fèi)內(nèi)存空間,顯然不實(shí)際。這種方法浪費(fèi)內(nèi)存空間,顯然不實(shí)際。2.設(shè)一個(gè)變量,每次輸入一個(gè)學(xué)生成績,累加后再輸入下一個(gè)學(xué)生成設(shè)一個(gè)變量,每次輸入一個(gè)學(xué)生成績,累加后再輸入下一個(gè)學(xué)生成績,如下:績,如下: 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/3733.4.1 while循環(huán)循環(huán) 語句一般格式 while (表達(dá)式) 語句 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/374功能:功能: 計(jì)算表達(dá)式的值,為非0(邏輯真
48、)時(shí),重復(fù)執(zhí)行內(nèi)嵌語句,每執(zhí)行一次,就判斷一次表達(dá)式的值,直到表達(dá)式的值為0 時(shí)結(jié)束循環(huán),轉(zhuǎn)去執(zhí)行while后面的語句。 當(dāng)表達(dá)式為真當(dāng)表達(dá)式為真 語句語句表 達(dá) 式 非表 達(dá) 式 非0?語句語句 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/375例如:例如:【例3.15】編寫程序,求100個(gè)自然數(shù)的和即: s=1+2+3+ +100 思路:尋找思路:尋找加數(shù)加數(shù)與與求和求和的規(guī)律的規(guī)律 加數(shù)加數(shù) 從從1變到變到100,每循環(huán)一次,使,每循環(huán)一次,使i增增1,直到直到i的值超過的值超過100。 的的設(shè)為設(shè)為1。求和求和設(shè)變量設(shè)變量 存放和存放和,循環(huán)求,循環(huán)求,直至,直至i超
49、過超過100。 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/376算法和程序:算法和程序:main( ) int i,sum; i=1; sum=0; while (i=100) sum=sum+i; i+; printf(sum=%dn,sum);運(yùn)行運(yùn)行jc5_1程序輸出結(jié)果:程序輸出結(jié)果:sum=5050 i=1,sum=0 當(dāng)當(dāng)i = 100 sum=sum+i i+輸出輸出sum 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/377注意:注意: 如果while的 (表達(dá)式) 值為0,則循環(huán)體一次也不執(zhí)行 (例如當(dāng)i的初值=101) 。 在循環(huán)體中必須
50、有使循環(huán)趨向結(jié)束的操作,否則循環(huán)將無限進(jìn)行(死循環(huán))。 在循環(huán)體中,語句的先后位置必須符合邏輯,否則會(huì)影響運(yùn)算結(jié)果。 while (i=100) i+; sum=sum+i; 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/378注意(續(xù)):注意(續(xù)): 為了保證循環(huán)正常運(yùn)行,應(yīng)該特別注意: 循環(huán)控制條件的描述 控制條件的初始狀態(tài)(初始值) 循環(huán)體內(nèi)部對控制條件的影響 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/3795.2 do-while語句語句 語句一般格式 do 語句 while (表達(dá)式); 功能: 先執(zhí)行內(nèi)嵌語句(循環(huán)體),之后計(jì)算表達(dá)式的值,不為0
51、(邏輯真)時(shí),再執(zhí)行循環(huán)體并判斷條件,直到表達(dá)式的值為 0 結(jié)束循環(huán),轉(zhuǎn)去執(zhí)行while下面的語句。 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/380 do-while循環(huán)的算法循環(huán)的算法 循環(huán)體循環(huán)體當(dāng)表達(dá)式為真當(dāng)表達(dá)式為真N-S結(jié)構(gòu)圖結(jié)構(gòu)圖NY循環(huán)體循環(huán)體表達(dá)式非表達(dá)式非0?流程圖流程圖main( ) int i=1,sum=0; do sum=sum+i; i+; while (i=100); printf(%dn,sum); 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/381說明:說明: while和do-while都能實(shí)現(xiàn)循環(huán)控制,while結(jié)構(gòu)
52、程序通常都可以轉(zhuǎn)換成do-while結(jié)構(gòu) 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/382do-while語句的簡單應(yīng)用語句的簡單應(yīng)用 【例3.16】用輾轉(zhuǎn)相除法求m和n的最大公約數(shù)定義定義m、n、rmnT F m和和n交換交換r=m%nm=nn=r 當(dāng)當(dāng)r != 0時(shí)時(shí)輸出最大公約數(shù)輸出最大公約數(shù)m 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/383算法和程序:算法和程序:main( ) int m,n,r; scanf(%d, %d,&m,&n); if (mn) r=m; m=n; n=r; do r=m%n; m=n; n=r; while(r!=
53、0); printf(%dn,m); 運(yùn)行運(yùn)行jc5_3 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/3843.4.3 for語句語句 語句一般格式 for (表達(dá)式1;表達(dá)式2;表達(dá)式3) 語句 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/385for語句的算法語句的算法N-S結(jié)構(gòu)圖結(jié)構(gòu)圖for (表達(dá)式表達(dá)式1;表達(dá)式表達(dá)式2;表達(dá)式表達(dá)式3) 語句語句NY流程圖流程圖計(jì)算表達(dá)式計(jì)算表達(dá)式1 語句語句計(jì)算表達(dá)式計(jì)算表達(dá)式3表達(dá)式表達(dá)式2為真為真?例如:main( ) int i,sum; sum=0; for ( i=1; i=100; i+) sum=
54、sum+i; printf(sum=%dn,sum); 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/386省略省略for語句的表達(dá)式語句的表達(dá)式 表達(dá)式1、2、3全省略,即: for ( ; ; ) 就等同于:while (1),會(huì)無限循環(huán)(死循環(huán))注意:在省略某個(gè)表達(dá)式時(shí),應(yīng)在適當(dāng)位置進(jìn)行循注意:在省略某個(gè)表達(dá)式時(shí),應(yīng)在適當(dāng)位置進(jìn)行循環(huán)控制的必要操作,以保證循環(huán)的正確執(zhí)行環(huán)控制的必要操作,以保證循環(huán)的正確執(zhí)行 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/387例如:例如: i=1; for ( ; i100) for (i=1; i100) i+; 寶雞文
55、理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/388說明:說明:所有用 while 語句實(shí)現(xiàn)的循環(huán)都可以用for 語句實(shí)現(xiàn)。 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/389for語句的簡單應(yīng)用語句的簡單應(yīng)用【例3.17】求n! ,即計(jì)算p=123n的值。 思路:求階乘與求累加的運(yùn)算處理過程類似,只要思路:求階乘與求累加的運(yùn)算處理過程類似,只要將將“ ”變?yōu)樽優(yōu)椤?”。設(shè)置:設(shè)置: ,初值為,初值為1,終值為,終值為n(n是循環(huán)控制終是循環(huán)控制終值,需要從鍵盤輸入)值,需要從鍵盤輸入) ,每次循環(huán)令,每次循環(huán)令p = p*i 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)
56、算機(jī)科學(xué)系2022/7/390程序:程序:main( ) int i, n; long p; p=1; printf(Enter n:); scanf(%d,&n); for (i=1; i=n; i+) p = p * i; printf(p = %ld n,p);運(yùn)行運(yùn)行jc5_4 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/391熟悉幾個(gè)循環(huán)語句熟悉幾個(gè)循環(huán)語句 while (!x) x+; 當(dāng) x=0 時(shí),執(zhí)行循環(huán)體x+; 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/392幾種循環(huán)語句的比較幾種循環(huán)語句的比較while和do-while語句的表達(dá)式只
57、有一個(gè),for語句有三個(gè)。while 和for先判斷循環(huán)條件后執(zhí)行循環(huán)體,do-while語句先執(zhí)行循環(huán)體后判斷循環(huán)條件。 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/3933.4.4 循環(huán)結(jié)構(gòu)中的跳轉(zhuǎn)語句循環(huán)結(jié)構(gòu)中的跳轉(zhuǎn)語句continue & break 有如下三種語句實(shí)現(xiàn)跳轉(zhuǎn): continue語句 break語句 goto語句 在循環(huán)語句的循環(huán)體中使用,可以進(jìn)行循環(huán)的流程控制 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/394后續(xù)語句后續(xù)語句 后續(xù)語句后續(xù)語句continue語句及應(yīng)用語句及應(yīng)用 功能: 中斷循環(huán)體的本次執(zhí)行(即跳過循環(huán)體中尚未執(zhí)行的
58、語句),立即開始執(zhí)行下一次循環(huán)。后續(xù)語句后續(xù)語句 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/395例如:例如: int x,n=0,s=0;while (n10) scanf(%d,&x); if (x0) continue; s+=x; n+; ; 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/396應(yīng)用舉例應(yīng)用舉例 【例3.18】把100200之間能被7整除的數(shù),以十個(gè)數(shù)為一行的形式輸出,最后輸出一共有多少個(gè)這樣的數(shù)。 for (n=100; n=200; n+) n能被能被7整除整除 T F 終止本次循環(huán)終止本次循環(huán) 輸出輸出n 輸出輸出10個(gè)數(shù)個(gè)數(shù)
59、T F 換行換行 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/397算法和程序算法和程序main( ) int n,j=0; for(n=100;n=200;n+) if (n%7!=0) continue; printf(%6d,n); j+; if (j%10=0) printf(n); printf( n j=%dn,j); 運(yùn)行運(yùn)行jc5_7 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/398后續(xù)語句后續(xù)語句后續(xù)語句后續(xù)語句循環(huán)中循環(huán)中break的應(yīng)用的應(yīng)用 功能: 利用break語句能夠強(qiáng)迫終止本層循環(huán),轉(zhuǎn)到后續(xù)語句執(zhí)行。后續(xù)語句后續(xù)語句 寶雞文理
60、學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/399例如:例如: int x,n=0,s=0;while (n10) scanf(%d,&x); if (x0) break; s+=x; n+; ; 寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系寶雞文理學(xué)院計(jì)算機(jī)科學(xué)系2022/7/31003.4.5 循環(huán)的嵌套循環(huán)的嵌套 如果循環(huán)語句的循環(huán)體內(nèi)又包含了另一條循環(huán)語句,則稱為循環(huán)的嵌套 【例3.19】#include main( ) int i, j; for ( i=1; i10; i+ ) for ( j=1; j=i; j+ ) printf (j=i)?%4dn:%4d,i*j); 運(yùn)行運(yùn)行jc5_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代收美金合同范本
- 2025年度新型環(huán)保混凝土材料購銷合同范本集錦
- 勞動(dòng)生產(chǎn)合同范例
- 喬木修剪合同范本
- 公司投資電影合同范例
- 個(gè)人外貿(mào)合同范例
- 2014家裝合同范例
- 信息資產(chǎn)安全合同范本
- 借用合同范例 英文
- 旅游業(yè)個(gè)性化旅游定制服務(wù)方案
- 酒店春節(jié)營銷方案
- 營銷管理方案中的定價(jià)策略與盈利模式
- 2024年西寧城市職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 2024年臨沂市高三一模(學(xué)業(yè)水平等級考試模擬試題)物理試卷
- 廣州獵德大橋三維曲面塔清水混凝土施工技術(shù)
- 我國糖尿病視網(wǎng)膜病變臨床診療指南2022解讀
- 高級茶藝師技能鑒定(協(xié)會(huì)版)備考題庫-下(多選、判斷題匯總)
- 特種設(shè)備作業(yè)人員體檢表(叉車)
- c30混凝土路面施工方案
- 加強(qiáng)師德師風(fēng)建設(shè)學(xué)校師德師風(fēng)警示教育講座培訓(xùn)課件
- 豬飼料購銷合同書
評論
0/150
提交評論