計(jì)算機(jī)基礎(chǔ)-程序結(jié)構(gòu).ppt
《計(jì)算機(jī)基礎(chǔ)-程序結(jié)構(gòu).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《計(jì)算機(jī)基礎(chǔ)-程序結(jié)構(gòu).ppt(77頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第四章 結(jié)構(gòu)化程序設(shè)計(jì)和控制結(jié)構(gòu),,結(jié)構(gòu)化程序設(shè)計(jì),上個(gè)世紀(jì)六十年代末,結(jié)構(gòu)化程序設(shè)計(jì),軟件發(fā)展的一個(gè)重要的里程碑。 結(jié)構(gòu)化程序設(shè)計(jì)的思路 將一個(gè)描述復(fù)雜的問(wèn)題,系統(tǒng)地分解成足夠小的和可管理的單元/模塊,從而最終可以編寫(xiě)成可以正確執(zhí)行的程序。 因?yàn)樵摍C(jī)制是將一個(gè)大規(guī)模的工作,系統(tǒng)地分解為更小的單元/模塊,因此也被稱為“系統(tǒng)分解”。,4-2,系統(tǒng)分解,系統(tǒng)分解實(shí)際上是執(zhí)行任務(wù)的過(guò)程,即:對(duì)于一個(gè)工作單元,將它分解成一組更小的單元,而這組單元可以執(zhí)行與大單元相同的任務(wù)。 這種思想實(shí)際就是:從一個(gè)大的、復(fù)雜的任務(wù)開(kāi)始,逐步將之分解到非常小的單元,對(duì)于這些小單元來(lái)說(shuō),是很容易編寫(xiě)出程序來(lái)執(zhí)行的。 既然
2、該過(guò)程是一步一步被應(yīng)用,而每一步都是將一個(gè)相對(duì)復(fù)雜的任務(wù)精煉成一組更簡(jiǎn)單的子任務(wù),那么這種過(guò)程也可以稱為“逐步求精”。,4-3,三種結(jié)構(gòu):順序,條件,重復(fù),系統(tǒng)分解思想使用三種基本的控制結(jié)構(gòu)來(lái)分解一個(gè)大規(guī)模的任務(wù),這三種基本結(jié)構(gòu)是:順序,條件和重復(fù)。,4-4,順序結(jié)構(gòu),順序結(jié)構(gòu),就是將一個(gè)指定的任務(wù)分解成兩個(gè)子任務(wù),一個(gè)接著一個(gè)。也就是說(shuō),當(dāng)執(zhí)行完第一個(gè)子任務(wù)之后再繼續(xù)執(zhí)行下一個(gè)子任務(wù)而從第二個(gè)子任務(wù)返回第一個(gè)子任務(wù)的情況永遠(yuǎn)不會(huì)發(fā)生。 長(zhǎng)度單位換算的問(wèn)題,4-5,,執(zhí)行第1部分,,(b) 順序,執(zhí)行第2部分,,條件結(jié)構(gòu),條件結(jié)構(gòu),又稱判定結(jié)構(gòu),根據(jù)條件的不同每次只執(zhí)行兩個(gè)子任務(wù)中的其中一個(gè)。
3、 當(dāng)條件為真時(shí),執(zhí)行某一個(gè)子任務(wù),若為假則執(zhí)行另一個(gè)。 任何一個(gè)子任務(wù)都可以為空,也就是說(shuō),它可以“什么都不做”。 但不管結(jié)果如何,當(dāng)正確的子任務(wù)執(zhí)行完后,程序始終向前行進(jìn),永遠(yuǎn)不會(huì)回頭去再次測(cè)試條件。,4-6,,子任務(wù)1,(c) 條件,子任務(wù)2,,測(cè)試 條件,,,,,,真,假,,,重復(fù)結(jié)構(gòu),重復(fù)結(jié)構(gòu),又稱循環(huán)結(jié)構(gòu),只要條件為真就需要將某一個(gè)子任務(wù)多次執(zhí)行時(shí)就將使用這種程序結(jié)構(gòu)。 當(dāng)條件為真,執(zhí)行這一子任務(wù);子任務(wù)執(zhí)行結(jié)束后,回頭再次檢測(cè)條件是否為真。 只要被測(cè)試的條件為真,程序就會(huì)繼續(xù)執(zhí)行這一相同子任務(wù)。一旦條件不為真,程序就向前行進(jìn)。,4-7,,子任務(wù),(d) 重復(fù),,,,,,,測(cè)試 條件
4、,,真,假,4-8,控制結(jié)構(gòu),條件 if if-else switch 重復(fù) while for do-while,4-9,if,if (condition) action;,condition,action,T,F,Condition ,一個(gè)C表達(dá)式, TRUE (non-zero) 或 FALSE (zero). Action ,一條C語(yǔ)句,簡(jiǎn)單語(yǔ)句或復(fù)合語(yǔ)句.,4-10,示例,if (x <= 10) y = x * x + 5; if (x <= 10) y = x * x + 5; z = (2 * y) / 3; if (x <= 10) y = x * x + 5; z = (2
5、 * y) / 3;,復(fù)合語(yǔ)句; 如果 x <= 10,都執(zhí)行,,如果x <= 10,執(zhí)行第一條; 第二條語(yǔ)句總會(huì)執(zhí)行,,換行和縮進(jìn)風(fēng)格,if語(yǔ)句通行的換行和縮進(jìn)風(fēng)格。 這樣的編程風(fēng)格使得閱讀該段代碼的人能夠很快的識(shí)別出如果條件成立將被執(zhí)行的部分。請(qǐng)記住,風(fēng)格只是增強(qiáng)了代碼的可讀性,并不影響程序的執(zhí)行。,4-11,4-12,更多示例,if (temperature<=0) printf (At or below freezing point.n); if (key == K) numK++; if (month= =4 | | month= =6 | | month= =9 | | month
6、= =11) printf (The month has 30 daysn);,4-13,常見(jiàn)錯(cuò)誤,if(18<= age <=25) /*此條件總是為真*/ num++; if (x=2) /*此條件總是為真*/ y=3; /* 變量y總會(huì)被賦值為3*/,4-14,if嵌套,if (x == 3) if (y != 6) z = z + 1; w = w + 2; ,if ((x == 3) ,等價(jià)于,4-15,if-else,if (condition) action_if;else action_else;,condition,T,F,示例,if (tem
7、perature0) printf (Above freeing.n);,4-16,示例,if (x) y++; z--; else y--; z++; ,4-17,成績(jī)等級(jí)換算級(jí)聯(lián)的if-else,#include int main() char grade; /*成績(jī)等級(jí)*/ /*獲得輸入值*/ printf (“Enter the grade: ”); scanf (%c, ,4-18,scanf,讀入一個(gè)字符,格式說(shuō)明“%c”,使得從鍵盤輸入的字符被賦值給grade。,4-19,If與else匹配,語(yǔ)法規(guī)則:else是與最靠近它的未匹配的if相匹配的,if (x != 10) i
8、f (y 3) z = z / 2; else z = z * 2;,if (x != 10) if (y 3) z = z / 2; else z = z * 2; ,等價(jià)于,if (x != 10) if (y 3) z = z / 2; else z = z * 2;,不同于,,使用大括號(hào)結(jié)合語(yǔ)句 條件表達(dá)式:x?y:z,4-20,if-else:錯(cuò)誤檢查,#include int main() int dividend; int divisor; int result; printf (Enter the dividend: ); scanf (%d, ,4-21,4-22,wh
9、ile,while (test) loop_body;,test,loop_body,T,F,在條件為真的情況下重復(fù)執(zhí)行一個(gè)語(yǔ)句。在每次重復(fù)執(zhí)行這個(gè)語(yǔ)句之前,都要先檢查條件。如果條件的值為邏輯真(非零),語(yǔ)句將被再次執(zhí)行。,示例,#include int main() int i=0; while (i<10) printf (%d , i); i=i+1; while語(yǔ)句適用于使用標(biāo)志控制的循環(huán)。 事先并不知道重復(fù)的次數(shù),只知道循環(huán)需要繼續(xù)直到某個(gè)事件(即標(biāo)志)發(fā)生。,4-23,4-24,無(wú)限循環(huán),#include int main() int i=0; while (i<10) prin
10、tf (%d , i); ,4-25,for,for (init; end-test; re-init) statement,init,test,loop_body,re-init,F,T,,for,for循環(huán),適用于記數(shù)器控制的循環(huán)。 for循環(huán)是while循環(huán)的一種特殊情況,它適用于事先知道重復(fù)次數(shù)的情況。 for循環(huán)可以使用while循環(huán)來(lái)構(gòu)造(反之亦然) #include int main() int i; for (i=0;i<10;i++) printf (%d ,i); ,4-26,4-27,示例,/*---這個(gè)循環(huán)會(huì)輸出什么?---*/ for (i=0; i<=10; i++
11、) printf (“%d”, i);,計(jì)算9的階乘,#include int main() int i; int result=1; for (i=9; i1; i--) result = result * i; ,4-28,常見(jiàn)錯(cuò)誤,result = 1; for (i=9; i1; i--) ; result = result * i; printf (result = %dn, result) ; printf (i = %dn, i);,4-29,4-30,循環(huán)嵌套,#include int main() int multiplicand; /*被乘數(shù)*/ int multipl
12、ier; /*乘數(shù)*/ /*外層循環(huán)*/ for (multiplier=1; multiplier<10; multiplier++) /*內(nèi)部循環(huán)*/ for (multiplicand=1; multiplicand<= multiplier; multiplicand++) printf (%d*%d=%dt, multiplicand, multiplier, multiplicand*multiplier); printf (n); “t”,制表符,4-31,do-while,do loop_body; while (test);,loop_body,test,T,F,,在
13、循環(huán)體被執(zhí)行一次之后再計(jì)算條件表達(dá)式的值,示例,i = 0 ; do printf (%dn , i); i = i + 1 ; while ( i < 10 );,4-32,編程風(fēng)格,對(duì)于以上三種類型的重復(fù)結(jié)構(gòu),哪些情況下采用while,哪些情況采用for,哪些情況采用do-while? 在大部分情況下,這三種結(jié)構(gòu)可以互換使用。 區(qū)別在于編程風(fēng)格:為了提高代碼的可讀性,更好的將循環(huán)的目的傳達(dá)給閱讀代碼的人,而選擇恰當(dāng)?shù)慕Y(jié)構(gòu)。,4-33,4-34,switch,switch (expression) case const1: action1; break;case const2: acti
14、on2; break;default: action3; ,evaluateexpression,= const1?,= const2?,action1,action2,action3,T,T,F,F,switch,給編譯器提供一個(gè)可以通過(guò)跳過(guò)一些測(cè)試以優(yōu)化這些代碼的機(jī)會(huì)。 使用switch語(yǔ)句代替級(jí)聯(lián)的if-else語(yǔ)句,4-35,switch語(yǔ)句的一般形式,switch (表達(dá)式) case 常量表達(dá)式1: /*語(yǔ)句1*/ break;/*可選*/ case常量表達(dá)式2: /*語(yǔ)句2*/ break; /*可選*/ case常量表達(dá)式n: /*語(yǔ)句n*/ break; /*可選*/ de
15、fault: /*語(yǔ)句n+1*/ ,4-36,計(jì)算過(guò)程,首先計(jì)算switch后面的表達(dá)式的值,然后判定表達(dá)式的值與下面的哪個(gè)case后面的常量表達(dá)式的值相同。如果與某個(gè)值相同,那么執(zhí)行該case后面的語(yǔ)句。,4-37,注意事項(xiàng),switch后面的表達(dá)式必須是整型(int或char)。 每一個(gè)case都由0條或多條語(yǔ)句組成,不需要用大括號(hào)分隔。 每一個(gè)case后面的常量表達(dá)式都必須是唯一的,不允許有重復(fù)。它還必須是一個(gè)常量表達(dá)式,不能是基于程序執(zhí)行而變化的變量。 break語(yǔ)句是可選的。break語(yǔ)句用于跳出switch結(jié)構(gòu),將控制流直接改變至switch的右括號(hào)之后。如果不使用break語(yǔ)句,
16、那么控制流則從當(dāng)前的case到達(dá)下一個(gè)。 還可以包括一個(gè)default語(yǔ)句。如果switch表達(dá)式與任何一個(gè)case都不匹配的話,將會(huì)選擇這種情況。如果沒(méi)有給出default,并且表達(dá)式與任何一個(gè)常量都不匹配,那么不執(zhí)行任何case。,4-38,編程風(fēng)格,如果不包括default語(yǔ)句,最后一個(gè)case就不需要使用break。 然而,在最后一個(gè)case的后面包括break是一種好的編程習(xí)慣。如果在switch的末尾再添加一個(gè)case的話,就不需要給前面的一個(gè)case加break了。這是一種好的、具有保護(hù)性的編程風(fēng)格。,4-39,4-40,示例switch代替級(jí)聯(lián)的if-else,#include
17、 int main() char grade; /*成績(jī)等級(jí)*/ printf (“Enter the grade: ”); scanf (“%c”, ,4-41,break,switch (a) case 1: printf(“A”);case 2: printf(“B”);default: printf(“C”);,If a is 1, prints “ABC”. If a is 2, prints “BC”.Otherwise, prints “C”.,break,break語(yǔ)句也可以用于循環(huán)結(jié)構(gòu)中。 break語(yǔ)句使編譯器生成提前跳出循環(huán)或者switch語(yǔ)句的代碼。 當(dāng)
18、用于循環(huán)結(jié)構(gòu)時(shí),break通過(guò)將控制跳出包含它的那層循環(huán),使該層循環(huán)終止。 /* 這段代碼產(chǎn)生輸出為:1 2*/ for (i=1; i<10; i++) if (i%3==0) break; printf (%d ,i); ,4-42,continue,用于循環(huán)結(jié)構(gòu)中的continue語(yǔ)句 使編譯器生成結(jié)束當(dāng)前的循環(huán),開(kāi)始下一次重復(fù)的代碼。 /* 這段代碼產(chǎn)生輸出為:1 3 5 7 9*/ for (i=1; i<10; i++) if (i%2==0) continue; printf (%d , i); ,4-43,4-44,使用控制結(jié)構(gòu)解決問(wèn)題,應(yīng)用“自頂向下”方法,解決需要使用控制結(jié)
19、構(gòu)的問(wèn)題。,問(wèn)題1:計(jì)算自然對(duì)數(shù)之底e的近似值,級(jí)數(shù)展開(kāi)式來(lái)計(jì)算的e的值。,4-45,,步驟0,為計(jì)算中要包括的數(shù)據(jù)選擇一個(gè)恰當(dāng)?shù)谋硎痉椒ā?既然級(jí)數(shù)處理的是小數(shù),需要采用double型浮點(diǎn)數(shù)來(lái)表示在級(jí)數(shù)計(jì)算中調(diào)用的變量。,4-46,步驟1,問(wèn)題的最初設(shè)計(jì)。 包含四個(gè)階段:初始化,獲取輸入,計(jì)算,輸出結(jié)果。 首先把所有需要初始化的數(shù)據(jù)初始化(一個(gè)程序必須要有正確的初始值才能真正解決問(wèn)題。因此,每個(gè)算法的第一步是:初始化變量。) 然后要求用戶輸入要計(jì)算的級(jí)數(shù)的項(xiàng)數(shù) 之后計(jì)算出給定項(xiàng)數(shù)的級(jí)數(shù) 最后,打印出結(jié)果。 分解為包含多項(xiàng)子任務(wù)的順序結(jié)構(gòu)。,4-47,開(kāi)始,,初始化,結(jié)束,獲得輸入n,計(jì)算級(jí)數(shù)
20、,輸出結(jié)果,,,,,步驟2,分解“計(jì)算級(jí)數(shù)”:對(duì)級(jí)數(shù)逐項(xiàng)進(jìn)行計(jì)算,直到計(jì)算出用戶指定的項(xiàng)數(shù)。 注意:與for循環(huán)的流程圖一致。,4-48,開(kāi)始,,初始化,結(jié)束,獲得輸入n,計(jì)算級(jí)數(shù),輸出結(jié)果,,,,初始化 循環(huán)計(jì)數(shù)器i,,i<= n?,再計(jì)算一項(xiàng),i遞增,,,,,真,,,,,假,,計(jì)算級(jí)數(shù),,,,,,,步驟3,分解“再計(jì)算一項(xiàng)”一個(gè)重要的子任務(wù):計(jì)算一個(gè)數(shù)的階乘,取階乘結(jié)果的倒數(shù),再加到當(dāng)前的近似值上。,4-49,,,再計(jì)算一項(xiàng),,,,,再計(jì)算一項(xiàng),初始化 階乘結(jié)果result、循環(huán)計(jì)數(shù)器j,,j<=i?,,result=result*j,j遞增,,,,,,假,,真,加上1/result,,,
21、,C程序,#include int main() double e=1; /*e的近似值*/ int result; /*階乘計(jì)算結(jié)果*/ int i, j; /*重復(fù)變量*/ int numOfTerms;/*計(jì)算的項(xiàng)數(shù)*/ printf(Number of terms (must be 1 or larger): ); scanf(%d, ,4-50,,可以一次聲明多個(gè)相同類型的變量,變量之間以逗號(hào)隔開(kāi) 例如, int i, j;,4-51,問(wèn)題2:找出100200之間的素?cái)?shù),步驟0 選擇一個(gè)合適的數(shù)據(jù)類型來(lái)表示和這個(gè)問(wèn)題有關(guān)的各種數(shù)據(jù)。 因?yàn)樗財(cái)?shù)的特點(diǎn)只適用
22、于整數(shù),因此在計(jì)算中選擇整數(shù)數(shù)據(jù)類型。,4-52,步驟1,問(wèn)題的最初設(shè)計(jì)。 包含一個(gè)任務(wù):顯示100200之間的素?cái)?shù)。,4-53,開(kāi)始,,結(jié)束,,顯示位于100200之間的素?cái)?shù),步驟2,分解子任務(wù):檢查每個(gè)位于100到200之間的整數(shù),如果是素?cái)?shù)則顯示出來(lái)。 計(jì)數(shù)器控制的循環(huán),4-54,開(kāi)始,,結(jié)束,,顯示位于100200之間的素?cái)?shù),,初始化 num=100,,num<=200?,,顯示素?cái)?shù),num=num+1,,,,,真,,,,,假,,,,,步驟3,分解“顯示素?cái)?shù)”子任務(wù):判定當(dāng)前的數(shù)字是否是素?cái)?shù),如果是素?cái)?shù)就顯示出來(lái)。 任何位于100到200之間不是素?cái)?shù)的數(shù),至少有一個(gè)從2到14之間的除數(shù)
23、。,4-55,,,顯示素?cái)?shù),,,,沒(méi)有除數(shù)?,,num是素?cái)?shù),將其顯示,真,,,假,,顯示素?cái)?shù),,用2到14之間的 整數(shù)去除num,,步驟3,,步驟4,精煉“用2到14之間的整數(shù)去除一個(gè)數(shù)” 子任務(wù):用2到14之間的所有整數(shù)去除當(dāng)前的數(shù),并且判斷是否可以整除。 計(jì)數(shù)器控制的循環(huán)結(jié)構(gòu)。,4-56,,divisor<=14?,,計(jì)算num/divisor,真,,,假,,,初始化除數(shù) divisor=2,,,divisor= divisor+1,,,,,,用2到14之間的 整數(shù)去除num,,,,,標(biāo)志變量,如何記錄某個(gè)數(shù)可以被2到14之間的整數(shù)整除? 在內(nèi)部循環(huán)開(kāi)始之前,設(shè)標(biāo)志變量prime為TRU
24、E。如果在2到14之間找到了一個(gè)除數(shù),設(shè)標(biāo)志為FALSE,并跳出內(nèi)部循環(huán)。 內(nèi)部循環(huán)結(jié)束后,如果prime保持為TRUE,就說(shuō)明由外部循環(huán)產(chǎn)生的數(shù)沒(méi)有除數(shù),是素?cái)?shù)。 利用宏替換,定義兩個(gè)符號(hào)名TRUE和FALSE,分別映射為1和0。,4-57,C程序,#include #define FALSE 0 #define TRUE 1 int main() int num; int divisor; int prime; /*從100開(kāi)始直到200*/ for (num=100; num<=200; num++) prime=TRUE; /*假設(shè)該數(shù)是素?cái)?shù)*/ /*測(cè)試num是否是素?cái)?shù)*/
25、for (divisor=2; divisor<=14; divisor++) if ((num%divisor)==0) prime=FALSE; break; if (prime) printf (The number %d is primen, num); ,4-58,問(wèn)題3:計(jì)算字符串“int”出現(xiàn)的次數(shù),由鍵盤鍵入一行字符,計(jì)算這行字符包含多少個(gè)字符組合“int”。 步驟0:需要處理由用戶輸入的字符數(shù)據(jù)。最適合的類型是字符類型,即char。 實(shí)際上,對(duì)于輸入一行字符,最好的表示方法是字符數(shù)組,或字符串。,4-59,步驟1,包括兩個(gè)子任務(wù):處理輸入和輸出結(jié)果,4-60,開(kāi)始,,處理輸入
26、,,結(jié)束,,輸出結(jié)果,步驟2,分解“處理輸入”子任務(wù)中 由于一次只能讀入用戶輸入的一個(gè)字符,并進(jìn)行處理。 該子任務(wù)需要一個(gè)字符接一個(gè)字符處理,直到到達(dá)一行字符的末尾 采用標(biāo)志控制的循環(huán)。末尾是換新行字符,即“n”。,4-61,,處理輸入,,,處理下一個(gè)字符,,更多字符?,,假,,,,真,,,,處理輸入,步驟3,細(xì)化“處理下一個(gè)字符”。 檢查輸入的字符,記錄下是否連續(xù)出現(xiàn)了“int”字符組合。,4-62,處理下一個(gè)字符,,,,,,,獲得下一個(gè)字符,,遇到i?,假,遇到n?,假,,,遇到t?,假,GotI=0, GotIN=0.,,,真,GotI=1. GotIN=0.,真,if GotIN, G
27、otIN=0. if GotI, GotIN=1. GotI=0.,真,if GotIN, count++. GotI=0. GotIN=0.,,,GotI和GotIN:記錄可能出現(xiàn)的3種狀態(tài) 在遇到字符i后,狀態(tài)為GotI=1,GotIN=0; 在遇到字符組合in后,狀態(tài)為GotI=0,GotIN=1; 在遇到字符組合int后,計(jì)數(shù)器count加1,且狀態(tài)為GotI=0,GotIN=0;遇到其他字符組合,狀態(tài)為GotI=0,GotIN=0。,4-63,C程序,#include #define FALSE 0 #define TRUE 1 int main() char nextChar;
28、/*字符串中的下一個(gè)字符*/ int gotI=FALSE; /*表明i是否被找到*/ int gotIN=FALSE; /*表明in是否被找到*/ int count=0; /*記錄次數(shù)*/ printf (Enter your string: ); do scanf (%c, ,4-64,,switch (nextChar) case i: gotI=TRUE; gotIN=FALSE; break; case n: if (gotIN) gotIN=FALSE; if (gotI) gotIN=TRUE; gotI=FALSE; break; case t: if (gotIN) cou
29、nt++; gotI=FALSE; gotIN=FALSE; break; default: gotI=FALSE; gotIN=FALSE; while (nextChar !=n); printf(count = %dn, count); ,4-65,小結(jié),一般不可能從一開(kāi)始就知道所有的情況。 當(dāng)發(fā)現(xiàn)有困難的時(shí)候,不要輕易放棄。 在碰到問(wèn)題時(shí)(實(shí)際上這是大部分問(wèn)題都會(huì)遇到的情況),應(yīng)該看看是否能夠理解問(wèn)題中的某一部分,然后從這一點(diǎn)擴(kuò)展出去。問(wèn)題就像一道謎題,起初含糊,但是研究得越多,問(wèn)題越容易被“擊破”。一旦明白了這個(gè)問(wèn)題提供了什么條件,要求做什么,以及如何運(yùn)行,就可以回到第一步重新開(kāi)始系
30、統(tǒng)的分解過(guò)程。,4-66,【一個(gè)小題目】,下面是一個(gè)C程序,其想要輸出20個(gè)減號(hào),不過(guò),粗心的程序員把代碼寫(xiě)錯(cuò) 了,你需要把下面的代碼修改正確,不過(guò),你只能增加或是修改其中的一個(gè)字符,請(qǐng)你給 出三種答案。 int n=20; for(int i=0; i 31、習(xí)題書(shū)面作業(yè),4.1 當(dāng)x等于0、1和2時(shí),下列代碼片段的輸出各是什么? 1)if (1=x=0) printf (“True. ”); else printf (False. ); 2)if (1=x ,4-69,,4)if (x==0) printf (x equals 0n); else if(x==1) printf (x equals 1n); else printf (x does not equal 0 or 1n ); 5)switch (x) case 0: printf (x equals 0n); case 1: printf (x equals 1n); 32、 break; default: printf (x does not equal 0 or 1n ); break; ,4-70,,4.2 下列代碼片段的輸出是什么? 1)int i; int sum=0; for(i=1;i0) i--; printf (%d , i);,4-71,4)int i=1; int sum=0; do if(i%7==0) sum=sum+i; i++; while(sum0); printf (%d , i);,,4.3 如下代碼的輸出是什么? int input; int i; int j; int sum=0; scanf (%d, ,4 33、-72,,4.4 如下代碼的輸出是什么? 1)int i; int j; for (i=4; i=1; i--) for (j=1; j<=i; j++) printf (#); for (j=1; j<=4-i; j++) printf (*); printf (n); ,4-73,2)int i; for(i=1;i<=5;i++) switch(i%5) case 0: printf(“*”); break; case 1: printf(“#”); break; default: printf(“n”); case 2: printf(“ ,,4.5 改寫(xiě)如下代碼片段,要求不 34、使用continue語(yǔ)句,仍然實(shí)現(xiàn)這段代碼的功能。 for (i=1; i<10; i++) if (i%2==0) continue; printf (%d , i); ,4-74,習(xí)題上機(jī)作業(yè),4.6 使用if-else語(yǔ)句,完成第三章習(xí)題:判斷某個(gè)整數(shù)是否可以被7整除。 4.7 改寫(xiě)第三章圖3.2中的程序,將條件表達(dá)式改為if-else語(yǔ)句:從鍵盤讀入兩個(gè)整數(shù),將兩個(gè)整數(shù)中較大的數(shù)輸出。 4.8 使用if-else語(yǔ)句,編寫(xiě)一個(gè)C程序:根據(jù)輸入的月份數(shù),輸出該月份的天數(shù)。注意,2月的天數(shù)問(wèn)題。 4.9 編寫(xiě)一個(gè)C程序,計(jì)算如下函數(shù): f (n) = f (n-1) + f (n-2) 35、初始條件為:f (0)=1, f (1)=1 4.10 編寫(xiě)一個(gè)C程序,計(jì)算計(jì)算9的階乘。要求使用while循環(huán)。,4-75,,4.11 編寫(xiě)一個(gè)C程序:根據(jù)鍵盤輸入的整數(shù)n,在第一行輸出一個(gè)1,第二行輸出2個(gè)2,第三行輸出3個(gè)3,直到第n行輸出n個(gè)n結(jié)束。 例如,如果輸入為4,則輸出如下: 1 22 33 3 44 4 4,4-76,,4.12 編寫(xiě)C程序:計(jì)算的近似值??梢允褂萌缦录?jí)數(shù)展開(kāi)式來(lái)計(jì)算的值。( 要求項(xiàng)數(shù)n從鍵盤輸入。) 4.13 選做題編寫(xiě)C程序:從鍵盤輸入一行字符,判斷這行字符是否是合法的e-mail地址。合法的e-mail地址為:在前至少需要出現(xiàn)一個(gè)字母,在和句點(diǎn)之間至少一個(gè)字母,在句點(diǎn)后至少一個(gè)字母。,4-77,
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 110中國(guó)人民警察節(jié)(筑牢忠誠(chéng)警魂感受別樣警彩)
- 2025正字當(dāng)頭廉字入心爭(zhēng)當(dāng)公安隊(duì)伍鐵軍
- XX國(guó)企干部警示教育片觀后感筑牢信仰之基堅(jiān)守廉潔底線
- 2025做擔(dān)當(dāng)時(shí)代大任的中國(guó)青年P(guān)PT青年思想教育微黨課
- 2025新年工作部署會(huì)圍繞六個(gè)干字提要求
- XX地區(qū)中小學(xué)期末考試經(jīng)驗(yàn)總結(jié)(認(rèn)真復(fù)習(xí)輕松應(yīng)考)
- 支部書(shū)記上黨課筑牢清廉信念為高質(zhì)量發(fā)展?fàn)I造風(fēng)清氣正的環(huán)境
- 冬季消防安全知識(shí)培訓(xùn)冬季用電防火安全
- 2025加強(qiáng)政治引領(lǐng)(政治引領(lǐng)是現(xiàn)代政黨的重要功能)
- 主播直播培訓(xùn)直播技巧與方法
- 2025六廉六進(jìn)持續(xù)涵養(yǎng)良好政治生態(tài)
- 員工職業(yè)生涯規(guī)劃方案制定個(gè)人職業(yè)生涯規(guī)劃
- 2024年XX地區(qū)黨建引領(lǐng)鄉(xiāng)村振興工作總結(jié)
- XX中小學(xué)期末考試經(jīng)驗(yàn)總結(jié)(認(rèn)真復(fù)習(xí)輕松應(yīng)考)
- 幼兒園期末家長(zhǎng)會(huì)長(zhǎng)長(zhǎng)的路慢慢地走