C語言程序設(shè)計案例式教程-第4章 結(jié)構(gòu)化程序設(shè)計_第1頁
C語言程序設(shè)計案例式教程-第4章 結(jié)構(gòu)化程序設(shè)計_第2頁
C語言程序設(shè)計案例式教程-第4章 結(jié)構(gòu)化程序設(shè)計_第3頁
C語言程序設(shè)計案例式教程-第4章 結(jié)構(gòu)化程序設(shè)計_第4頁
C語言程序設(shè)計案例式教程-第4章 結(jié)構(gòu)化程序設(shè)計_第5頁
已閱讀5頁,還剩102頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章結(jié)構(gòu)化程序設(shè)計《C語言程序設(shè)計案例式教程(第2版)》學(xué)習(xí)目標(biāo)/Target了解算法,能夠說出算法的概念與特征掌握流程圖的畫法,能夠為程序需求畫出流程圖掌握選擇語句的用法,能夠使用if語句和switch語句解決程序中的條件判斷掌握循環(huán)語句的用法,能夠使用while語句、do…while語句、for循環(huán)語句解決程序中的循環(huán)問題掌握循環(huán)嵌套的用法,能夠使用循環(huán)嵌套解決復(fù)雜的循環(huán)問題章節(jié)概述/Summary前面的章節(jié)一直在介紹C語言的基本語法知識,然而僅僅依靠這些語法知識還不能編寫出完整的程序。在程序中,通常需要加入業(yè)務(wù)邏輯,并根據(jù)業(yè)務(wù)邏輯關(guān)系對程序的流程進(jìn)行控制。本章將針對程序設(shè)計的靈魂——算法以及C語言中最基本的三種程序流程進(jìn)行講解。目錄/Contents案例4-1畫“圖”案例4-2閏年案例4-3安全生產(chǎn)案例4-4計算1到100的和案例4-5物不知數(shù)目錄/Contents案例4-1九九乘法表案例4-2百錢百雞案例4-3完美數(shù)案例4-4回文素數(shù)案例4-5親密數(shù)畫“圖”案例4-1【案例4-1】畫“圖”(1)了解算法,能夠說出算法的概念與特征(2)掌握流程圖的畫法,能夠為程序需求畫出流程圖學(xué)習(xí)目標(biāo)案例描述編程可以完美展現(xiàn)思維邏輯之美。(1)把一件事情抽象出來。(2)用邏輯化的方法表達(dá)出來。通常的做法是,先為要實現(xiàn)的需求設(shè)計一個算法,再根據(jù)算法畫出流程圖,最后根據(jù)流程圖編寫代碼。引言案例描述在本案例中,有三個數(shù)x、y、z,請設(shè)計一個算法找出其中最小的數(shù),并畫出算法流程圖。知識需求本案例要求并不難,從3個數(shù)中找出最小的數(shù),需要設(shè)計一個算法;設(shè)計出算法之后,需要根據(jù)算法畫出流程圖。因此,要想順利實現(xiàn)本案例,需要學(xué)習(xí)算法與流程圖相關(guān)知識。設(shè)計算法√畫流程圖√知識講解算法(Algorithm)是解決特定問題的步驟描述。問題的解決方案就是算法。例如,新學(xué)期開學(xué),從家到學(xué)校的交通方式這個問題,就有很多解決方案。1.算法知識講解1.算法在計算機中,算法也是對某一個問題的求解方法的描述,只是它的表現(xiàn)形式是計算機指令的有序序列,執(zhí)行這些指令就能解決特定的問題。知識講解1.算法一個算法,尤其是一個成熟的算法,應(yīng)該具有以下五個特性。(5)輸出算法至少具有一個或多個輸出。輸出是輸入經(jīng)過信息加工后得到的結(jié)果。(4)輸入算法具有零個或多個輸入。有的輸入在算法執(zhí)行時,有的輸入嵌入在算法之中。(1)確定性算法的每一步都有確定的含義,不會出現(xiàn)二義性。(3)有窮性一個算法必須在執(zhí)行有窮步驟之后結(jié)束,且每一步都可在有窮時間內(nèi)完成。(2)可行性算法的每一步都是可執(zhí)行的,通過執(zhí)行有限次操作來實現(xiàn)其功能。知識講解2.流程圖算法有三種較為常用的表示方法:偽代碼法、N-S結(jié)構(gòu)化流程圖和流程圖法。用的最多的是流程圖法。知識講解2.流程圖流程圖是描述問題處理步驟的一種常用圖形工具,它由一些圖框和流程線組成。特點:使用流程圖描述問題的處理步驟形象直觀、便于閱讀。畫流程圖時必須按照功能選用相應(yīng)的流程圖符號。知識講解2.流程圖流程圖符號01起始框用于表示流程的開始或結(jié)束04處理框處理框用矩形表示,它代表程序中的處理功能,如賦值、算術(shù)運算。02輸入輸出框用平行四邊形表示,在其中可以寫入輸入或輸出的內(nèi)容。06連接點連接點用圓形表示,用于流程圖的延續(xù)。03判斷框用菱形表示,它的作用是對條件進(jìn)行判斷。05流程線用實心單向箭頭表示,指示程序的執(zhí)行流向。起始框輸入輸出框判斷框處理框流程線連接點案例實現(xiàn)1.算法設(shè)計求x、y、z三個數(shù)中的最小值,其步驟如下所示。010203判斷x>y是否成立;如果成立,進(jìn)入第(2)步;如果不成立,進(jìn)入第(3)步。判斷y>z是否成立;如果成立,則z為最小數(shù);如果不成立,則y為最小數(shù)。判斷x>z是否成立;如果成立,則z為最小數(shù);如果不成立,則x為最小數(shù)。案例實現(xiàn)2.流程圖實現(xiàn)(1)程序開始(2)進(jìn)入輸入/輸出框,輸入三個變量值x、y、z。(3)進(jìn)入判斷框。案例實現(xiàn)2.流程圖實現(xiàn)(3)進(jìn)入判斷框。判斷x>y是否成立,如果是成立,則進(jìn)入左邊的判斷框,繼續(xù)判斷y>z是否成立;否則進(jìn)入右邊的判斷框,判斷x>z是否成立。案例實現(xiàn)2.流程圖實現(xiàn)(4)如果進(jìn)入右邊判斷框。(4)如果進(jìn)入左邊判斷框。則判斷x>z是否成立,如果成立,則進(jìn)入左邊的處理框,得出最小值是z;如果不成立,則進(jìn)入右邊的處理框,得出最小值是x。判斷y>z是否成立,如果成立,則進(jìn)入左邊的處理框,得出最小值是z;如果不成立,則進(jìn)入右邊的處理框,得出最小值為y。案例實現(xiàn)2.流程圖實現(xiàn)(4)如果進(jìn)入右邊判斷框。(4)如果進(jìn)入左邊判斷框。則判斷x>z是否成立,如果成立,則進(jìn)入左邊的處理框,得出最小值是z;如果不成立,則進(jìn)入右邊的處理框,得出最小值是x。判斷y>z是否成立,如果成立,則進(jìn)入左邊的處理框,得出最小值是z;如果不成立,則進(jìn)入右邊的處理框,得出最小值為y。(5)進(jìn)入輸出框,輸出結(jié)果。(6)進(jìn)入結(jié)束框,程序運行結(jié)束。閏年案例4-2【案例4-2】閏年掌握選擇語句的用法,能夠使用if語句解決程序中的條件判斷學(xué)習(xí)目標(biāo)案例描述背景知識閏年是歷法中的名詞,它是為了彌補因人為歷法規(guī)定造成的年度天數(shù)與地球公轉(zhuǎn)周期的時間差而設(shè)立的,補上時間差的年份就是閏年。在歷法制定中,閏年的計算規(guī)則比較復(fù)雜,在我國古人的智慧積累中,將閏年的計算歸結(jié)如下:四年一閏,百年不閏,四百年再閏。案例描述背景知識總結(jié)起來就是如下規(guī)則。普通年份:能被4整除,但不能被100整除,該年為閏年,如2004年就是閏年。世紀(jì)年份:能被400整除,該年為閏年,如2000年為閏年,1900年不是閏年。案例描述本案例要求編寫一個程序判斷閏年,具體要求如下所示。(1)從鍵盤輸入一個年份。(2)判斷輸入的年份是否為閏年,如果是閏年,則輸出該年是閏年,否則輸出該年不是閏年。知識需求判斷一個年份是否是閏年,需要判斷兩個條件。能被4整除且不能被100整除,或者能被400整除。這兩個條件滿足任一條件就可以得出該年是閏年。對條件進(jìn)行進(jìn)行判斷,可以使用C語言中的條件語句。知識需求知識講解1.if語句if語句是指如果滿足某種條件,就進(jìn)行相應(yīng)的處理。例如,小明媽媽跟小明說“如果你考試得了100分,星期天就帶你去游樂場玩”。如果小明考試得了100分

媽媽星期天帶小明去游樂場if(小明考試得了100分){

媽媽星期天帶小明去游樂場}知識講解1.if語句由上述偽代碼推導(dǎo)出if語句的格式。if(判斷條件){

代碼塊}流程圖知識講解2.if┄else語句if…else語句是指如果滿足某種條件,就進(jìn)行相應(yīng)的處理,否則就進(jìn)行另一種處理。if(判斷條件){

執(zhí)行語句1}else{

執(zhí)行語句2}流程圖知識講解3.if┄elseif┄else語句if…elseif…else語句適用于需對多個條件進(jìn)行判斷,進(jìn)而執(zhí)行不同操作的情景中。if(判斷條件1){

執(zhí)行語句1

}elseif(判斷條件2){

執(zhí)行語句2

}……elseif(判斷條件n){

執(zhí)行語句n

}else{

執(zhí)行語句n+1}流程圖知識實現(xiàn)1.案例設(shè)計在程序中定義int類型的變量year,對變量year執(zhí)行以下運算。0102year%4==0&&year%100!=0。year%400==0。上述兩個條件有一個成立,則year表示的年份就是閏年。案例實現(xiàn)2.完整代碼本案例中可以實現(xiàn)的效果圖如下。intmain(){請參考案例4-2完整代碼}代碼實現(xiàn)安全生產(chǎn)案例4-3【案例4-3】安全生產(chǎn)掌握選擇語句的用法,能夠使用switch語句解決程序中的條件判斷學(xué)習(xí)目標(biāo)案例描述安全生產(chǎn)在我國非常重要,關(guān)系人民的切身安全。對于個人來說,安全是人類最重要、最基本的需求,是人的生命與健康的基本保證。對于企業(yè)來說,安全生產(chǎn)是企業(yè)發(fā)展的重要保障,這是我們在生產(chǎn)經(jīng)營中貫徹的一個重要理念。企業(yè)是社會大家庭中的一個細(xì)胞,只有抓好自身安全生產(chǎn),才能促進(jìn)大環(huán)境的穩(wěn)定,進(jìn)而為企業(yè)創(chuàng)造良好的發(fā)展環(huán)境。案例描述在本案例中,要求為企業(yè)生產(chǎn)編寫一個安全監(jiān)控程序,企業(yè)的安全級別系數(shù)有4個,用1~4整數(shù)表示。1:正常2:警告3:危險4:立即停產(chǎn)當(dāng)程序監(jiān)測到1~2數(shù)字時,在屏幕輸出相應(yīng)信息;當(dāng)監(jiān)測到3時,在屏幕輸出危險,并提示工作人員查看;當(dāng)監(jiān)控到4時,自動切斷機器運行,并在屏幕提示危險操作,已經(jīng)自動停產(chǎn)。知識需求使用if…elseif…else語句可以實現(xiàn),但實現(xiàn)起來代碼過長,不宜閱讀,不太合適。C語言還提供了另外一個選擇語句:switch語句。switch語句用于數(shù)字或字符的判斷。知識講解1.switch語句switch條件語句也是一種很常用的選擇結(jié)構(gòu)語句,和if條件語句不同,它針對某個表達(dá)式的值做出判斷,從而決定程序執(zhí)行哪一段代碼。在switch語句中,switch關(guān)鍵字后面有一個表達(dá)式,case關(guān)鍵字后面有目標(biāo)值,當(dāng)表達(dá)式的值和某個目標(biāo)值匹配時,會執(zhí)行對應(yīng)case下的語句。知識講解1.switch語句例如,在程序中使用數(shù)字1~7來表示星期一到星期天,如果想根據(jù)某個輸入的數(shù)字來輸出對應(yīng)中文格式的星期值。

用于表示星期的數(shù)字

如果等于1,則輸出星期一

如果等于2,則輸出星期二

如果等于3,則輸出星期三

如果等于4,則輸出星期四

如果等于5,則輸出星期五

如果等于6,則輸出星期六

如果等于7,則輸出星期天

如果不是1~7,則輸出此數(shù)字為非法數(shù)字知識講解1.switch語句根據(jù)上述偽代碼總結(jié)出switch語句格式。

switch(表達(dá)式) {

case

目標(biāo)值1:

執(zhí)行語句1;

break; …

case

目標(biāo)值n:

執(zhí)行語句n;

break;

default:

執(zhí)行語句n+1;

break; }知識講解1.switch語句switch語句應(yīng)用示例:根據(jù)數(shù)值判斷星期幾。switch(week){case1:

case2:

case3:

case4:

case5:

printf("今天是工作日\n"); break;case6:

case7:

printf("今天是休息日\n"); break;default: printf("輸入的數(shù)字不正確..."); break;}當(dāng)變量week的值為1、2、3、4、5中任意值時,處理方式相同。知識講解1.switch語句switch語句應(yīng)用示例:根據(jù)數(shù)值判斷星期幾。switch(week){case1:

case2:

case3:

case4:

case5:

printf("今天是工作日\n"); break;case6:

case7:

printf("今天是休息日\n"); break;default: printf("輸入的數(shù)字不正確..."); break;}當(dāng)變量week的值為6、7中任意值時,處理方式相同。知識講解2.跳轉(zhuǎn)語句跳轉(zhuǎn)語句的作用是使程序跳轉(zhuǎn)到其他部分執(zhí)行,在C語言中,常用的跳轉(zhuǎn)語句有兩種:break和continue。breakbreak出現(xiàn)在switch條件語句中時,作用是終止某個case并跳出switch結(jié)構(gòu)。當(dāng)它出現(xiàn)在循環(huán)語句中,作用是結(jié)束循環(huán),執(zhí)行循環(huán)后面的代碼。continuecontinue語句的作用也是使程序完成跳轉(zhuǎn)知識講解2.跳轉(zhuǎn)語句continue語句與break語句的區(qū)別有以下兩點。VSbreak終止當(dāng)前循環(huán),執(zhí)行循環(huán)體外的語句??梢杂糜趕witch語句。continue終止本次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)。不可以用于switch語句。案例實現(xiàn)1.案例設(shè)計01020304定義一個變量num用于記錄生產(chǎn)安全級別系數(shù)。調(diào)用scanf()函數(shù)從鍵盤輸入安全級別系數(shù)。使用switch語句判斷安全級別系數(shù)的值。根據(jù)判斷結(jié)果輸出相應(yīng)提示信息。案例實現(xiàn)2.完整代碼本案例中可以實現(xiàn)的效果圖如下。intmain(){請參考案例4-3完整代碼}代碼實現(xiàn)計算1到100的和案例4-4【案例4-4】計算1到100的和掌握循環(huán)語句的用法,能夠使用while語句、do…while語句解決程序中的循環(huán)問題學(xué)習(xí)目標(biāo)案例描述數(shù)學(xué)家高斯有一個趣事:在他10歲時,數(shù)學(xué)老師出了一道算術(shù)題:1+2+3+…+100的和是多少。在同學(xué)們都費心計算時,高斯沒到1分鐘就公布了答案為5050。老師對于高斯這樣快速計算出結(jié)果而感到吃驚,問其算法,原來高斯經(jīng)過仔細(xì)觀察,找了一個規(guī)律,他發(fā)現(xiàn)一頭一尾兩個數(shù)相加,每次相加的和都為101,100個數(shù)正好50組101,于他得出101*50=5050,而高斯發(fā)現(xiàn)的這個規(guī)律正是等差級數(shù)的對稱性。背景故事案例描述本案例要求編寫一個程序,計算1+2+3+…+100的和。知識需求知識需求計算1到100的整數(shù)和,就需要逐個獲取1~100的所有整數(shù),即遍歷1~100。需要用到循環(huán)語句,C語言提供了while、do···while、for語句,先學(xué)習(xí)while、do···while語句。知識講解1.while語句while循環(huán)語句類似if條件判斷語句,都是根據(jù)判斷條件來決定是否執(zhí)行大括號內(nèi)的執(zhí)行語句。區(qū)別在于,while語句會反復(fù)地進(jìn)行條件判斷,只要條件成立,{}中的語句就會一直執(zhí)行。while(循環(huán)條件){

執(zhí)行語句}知識講解1.while語句while循環(huán)語句的流程圖如下。條件成立,循環(huán)會一直執(zhí)行。知識講解2.do┄while語句do···while循環(huán)語句和while循環(huán)語句功能類似,只是do···while循環(huán)語句會先執(zhí)行一次循環(huán),再判斷循環(huán)條件,根據(jù)循環(huán)條件結(jié)果決定是否再執(zhí)行循環(huán)體。do{

執(zhí)行語句

…}while(循環(huán)條件);知識講解2.do┄while語句do···while循環(huán)語句流程圖如下。先執(zhí)行一次循環(huán)體知識講解2.do┄while語句do···while循環(huán)語句與while循環(huán)語句區(qū)別如下。VSdo···while先執(zhí)行一次循環(huán)體的語句再判斷循環(huán)條件。會無條件執(zhí)行一次循環(huán)體。while先判斷循環(huán)條件,再執(zhí)行循環(huán)體。條件不成立,一次循環(huán)體也不會執(zhí)行。案例實現(xiàn)1.案例設(shè)計案例設(shè)計步驟如下。1在程序中定義int類型的變量num,初始化值為1,num用于遍歷時記錄1到100的整數(shù)。定義int類型的變量sum,用于存儲1到100的整數(shù)和。使用while循環(huán)遍歷1~100,將遍歷到數(shù)據(jù)加到sum變量中,循環(huán)條件為num<=100。23注意:每循環(huán)一次,num需要自增,以進(jìn)行下一次條件判斷。案例實現(xiàn)2.完整代碼本案例中可以實現(xiàn)的效果圖如下。intmain(){請參考案例4-4完整代碼}代碼實現(xiàn)物不知數(shù)案例4-5【案例4-5】物不知數(shù)掌握循環(huán)語句的用法,能夠使用for語句解決程序中的循環(huán)問題學(xué)習(xí)目標(biāo)案例描述《孫子算經(jīng)》有題目:今有物不知其數(shù),三三數(shù)之剩二,五五數(shù)之剩三,七七數(shù)之剩二,問物幾何。答曰:二十三。術(shù)曰:三三數(shù)之剩二,置一百四十;五五數(shù)之剩三,置六十三;七七數(shù)之剩二,置三十。并之得二百三十三,以二百一十減之即得。物不知數(shù)案例描述上述題目的含義為,有一個數(shù),用3除余數(shù)為2,用5除余數(shù)為3,用7除余數(shù)為2,問這個數(shù)是多少。答案是23,解法如下:用3除余數(shù)為2,則為140;用5除余數(shù)為3,則為63;用7除余數(shù)為2,則為30。總和為233,再減去210就得到結(jié)果23。本案例要求編寫一個程序,查找1000以內(nèi)滿足“物不知數(shù)”條件的所有數(shù)。知識需求對3取模余數(shù)為2。對5取模余數(shù)為3。對7取模余數(shù)為2。if條件語句for循環(huán)語句知識需求根據(jù)數(shù)據(jù)需要滿足的條件,推導(dǎo)出案例實現(xiàn)所需要的知識。知識講解1.for循環(huán)for循環(huán)通常用于循環(huán)次數(shù)已知的情況。for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){

執(zhí)行語句}執(zhí)行順序:循環(huán)條件執(zhí)行語句(循環(huán)體)操作表達(dá)式知識講解1.for循環(huán)對于初學(xué)者來說,for循環(huán)執(zhí)行過程難以理解,分別用“①”表示初始化表達(dá)式、“②”表示循環(huán)條件、“③”表示操作表達(dá)式、“④”表示循環(huán)體,通過序號來分析for循環(huán)的執(zhí)行流程。for(①;②;③){

④}知識講解1.for循環(huán)for循環(huán)執(zhí)行步驟如下。1執(zhí)行①。退出循環(huán)。執(zhí)行②,如果判斷條件的值非0,執(zhí)行第3步;如果判斷條件的值為0,退出循環(huán)。23執(zhí)行④。執(zhí)行③,然后繼續(xù)執(zhí)行第2步。num<=100。45案例實現(xiàn)1.案例設(shè)計步驟定義int類型變量num,表示滿足條件的數(shù)據(jù)。使用for循環(huán)遍歷1~1000的數(shù)據(jù),初始化表達(dá)式為num=1,循環(huán)條件為num<=1000,操作表達(dá)式為num++。使用if語句判斷“物不知數(shù)”的3個條件是否滿足。案例實現(xiàn)2.完整代碼本案例中可以實現(xiàn)的效果圖如下。intmain(){請參考案例4-5完整代碼}代碼實現(xiàn)九九乘法表案例4-6【案例4-6】九九乘法表掌握循環(huán)嵌套的用法,能夠使用循環(huán)嵌套解決復(fù)雜的循環(huán)問題學(xué)習(xí)目標(biāo)案例描述由我國傳誦下來的九九乘法表,到現(xiàn)代已經(jīng)普及,本案例要求編寫一個程序,在控制臺打印出九九乘法表。案例描述知識需求分析九九乘法表,可得出如下規(guī)律。(1)九九乘法表一共有9行9列。(2)第1行有1列…第9行有9列,則行與列有相互作用的關(guān)系,即第n行,需要循環(huán)輸出n列。(3)行列都需要遍歷,因此需要使用兩次循環(huán)。(4)由于列與行有對應(yīng)關(guān)系,所以列的遍歷受到行的限制,列循環(huán)需要嵌套在行循環(huán)之內(nèi)。九九乘法表規(guī)律由上面規(guī)律可以推斷出,實現(xiàn)九九乘法表需要使用循環(huán)嵌套。知識講解循環(huán)嵌套循環(huán)嵌套是指在一個循環(huán)中再定義一個循環(huán),while、do…while、for循環(huán)語句都可以進(jìn)行嵌套,其中,for循環(huán)嵌套是最常見的循環(huán)嵌套。for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){ for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式) {

執(zhí)行語句; }}知識講解循環(huán)嵌套for循環(huán)嵌套應(yīng)用示例:for(inti=1;i<=3;i++){

for(intj=1;j<=4;j++)

{

//…

}}知識講解循環(huán)嵌套上述示例的循環(huán)過程如下圖。案例實現(xiàn)1.案例設(shè)計案例設(shè)計步驟如下。123456九九乘法表一共有9行9列。設(shè)定外層為行,內(nèi)層為列,則內(nèi)外層循環(huán)都是1~9,可以用for循環(huán)嵌套實現(xiàn)。使用變量i控制行數(shù),則i的初始值為1,循環(huán)條件為i<=9。使用變量j控制列數(shù),由于每一行中,列數(shù)小于行數(shù),因此其循環(huán)條件應(yīng)當(dāng)為j<=i。為了讓九九乘法表呈現(xiàn)三角形狀,在每一次內(nèi)層循環(huán)結(jié)束時換行。為讓每列之間保持間距,在每一個輸出語句后加上'\t'調(diào)整列間距。案例實現(xiàn)2.完整代碼本案例中可以實現(xiàn)的效果圖如下。intmain(){請參考案例4-6完整代碼}代碼實現(xiàn)百錢百雞案例4-7【案例4-7】百錢百雞掌握循環(huán)嵌套的用法,能夠使用循環(huán)嵌套實現(xiàn)案例4-7學(xué)習(xí)目標(biāo)案例描述張丘建《算經(jīng)》有題目如下:雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一;百錢買百雞,則翁、母、雛各幾何?題目含義:公雞五塊錢一只,母雞三塊錢一只,小雞雛一塊錢三只,100塊錢買100只雞,則公雞、母雞、小雞雛各多少只?百錢百雞案例描述針對百錢百雞問題,算經(jīng)使用了三元一次不定方程進(jìn)行解答,而本案例要求,編寫一個程序求解百錢百雞問題。案例實現(xiàn)如果把公雞,母雞和小雞的數(shù)量分別設(shè)為cock、hen、chicken,則它們滿足以下條件。01020304050<=cock<=20;0<=hen<=33;0<=chicken<=100;cock+hen+chicken=100;5*cock+3*hen+chicken/3=100。1.案例設(shè)計知識需求由于母雞、小雞和公雞的數(shù)量相互限制,所以可以使用三層循環(huán)嵌套來解決此問題。案例設(shè)計步驟如下。案例設(shè)計

步驟定義三個整型變量cock、hen、chicken分別表示公雞、母雞和小雞的數(shù)量。第一層for循環(huán)控制公雞的數(shù)量,第二層for循環(huán)控制母雞的數(shù)量,第三層for循環(huán)控制小雞的數(shù)量。在三層for循環(huán)中,cock、hen和chicken需要滿足2個條件。cock+hen+chicken=100。5*cock+3*hen+chicken/3=100。1.案例設(shè)計案例實現(xiàn)2.完整代碼本案例中可以實現(xiàn)的效果圖如下。intmain(){請參考案例4-7完整代碼}代碼實現(xiàn)完美數(shù)案例4-8【案例4-8】完美數(shù)鞏固前面所學(xué)知識,能夠利用前面所學(xué)知識實現(xiàn)案例4-8學(xué)習(xí)目標(biāo)案例描述完美數(shù)是一些特殊的自然數(shù),一個自然數(shù),如果它所有真因子(除了自身之外的約數(shù))之和等于它本身,這個數(shù)就是完美數(shù)。例如,6=1+2+3、28=1+2+4+7+14,則6和28就是完美數(shù)。本案例要求編寫一個程序查找完美數(shù)。案例實現(xiàn)1.案例設(shè)計1遍歷數(shù)據(jù)查找完美數(shù),則需要遍歷某個范圍內(nèi)的自然數(shù),遍歷自然數(shù)需要使用循環(huán)。2判斷是否是完美數(shù)由于完美數(shù)是所有真因子的和等于其自身的數(shù),在遍歷時,需要使用當(dāng)前遍歷到數(shù)除以比它小的所有自然數(shù),這也需要使用循環(huán)實現(xiàn),因此本案例要使用循環(huán)嵌套實現(xiàn)。案例實現(xiàn)1.案例設(shè)計(1)定義longint類型的變量num,表示自然數(shù);定義longint類型的變量sum,用于存儲完美數(shù)所有真因子之和。(2)從鍵盤輸入數(shù)據(jù)為num賦值。(3)定義循環(huán)嵌套,外層循環(huán),使用循環(huán)變量i遍歷1~num的自然數(shù);內(nèi)層循環(huán),使用循環(huán)變量j遍歷小i的所有自然數(shù),即內(nèi)層循環(huán)條件為j<i。(4)在循環(huán)內(nèi)部,判斷i%j是否等于0,如果等于0,則將j相加到sum。(5)循環(huán)結(jié)束之后,如果sum==i成立,則i為完美數(shù),否則i不是完美數(shù)。案例實現(xiàn)2.完整代碼本案例中可以實現(xiàn)的效果圖如下。intmain(){請參考案例4-8完整代碼}代碼實現(xiàn)回文素數(shù)案例4-9【案例4-9】回文素數(shù)鞏固前面所學(xué)知識,能夠利用前面所學(xué)知識實現(xiàn)案例4-9學(xué)習(xí)目標(biāo)案例描述素數(shù):只有1和它本身兩個因子的自然數(shù)?;匚臄?shù):從左至右讀起來與從右至左讀起來相同的數(shù)據(jù),如11、202、333等?;匚乃財?shù):從左至右讀起來與從右至左讀起來相同的素數(shù)。背景知識案例描述2位數(shù)的回文素數(shù)只有11,所有的4位整數(shù)、6位整數(shù)、8位整數(shù)中也不存在回文素數(shù)。但是三位回文素數(shù)有很多,本案例要求通過編程求出所有小于1000的回文素數(shù)。案例實現(xiàn)1.案例設(shè)計要對所有1000以內(nèi)的整數(shù)進(jìn)行判斷

循環(huán)結(jié)構(gòu)語句要判斷是否為素數(shù)以及判斷是否為回文素數(shù)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論