




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C語言程序設(shè)計(jì)技術(shù)根底太原理工大學(xué)計(jì)算機(jī)學(xué)院計(jì)算機(jī)根底部第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.1 while 循環(huán)語句5.2 do while循環(huán)語句5.3 for循環(huán)語句 5.4 多重循環(huán) 5.5 break語句與continue語句5.6 幾種循環(huán)語句的比較5.7 循環(huán)結(jié)構(gòu)程序舉例第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)思考一個(gè)問題:如何編程來計(jì)算1 + 2 + 3 + + 100?程序如下:int s = 0; s = s + 1; s = s + 2; s = s + 3; s = s + 100; printf (“s = %d, s);重復(fù)100次,暈!有沒有更好的方法來計(jì)算呢?有!就是用循環(huán)來編程。 第3
2、章已討論程序結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)本章討論第4章已討論在許多問題中需要用到循環(huán)控制。循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的根本結(jié)構(gòu)之一,它和順序結(jié)構(gòu)、選擇結(jié)構(gòu)共同作為各種復(fù)雜程序的根本構(gòu)造單元。5.1 while 循環(huán)語句一般格式while(循環(huán)繼續(xù)條件) 循環(huán)體語句組;執(zhí)行過程先判斷“循環(huán)繼續(xù)條件表達(dá)式,再執(zhí)行“循環(huán)體語句組說明: (1) while循環(huán)對應(yīng)當(dāng)型循環(huán)結(jié)構(gòu)。 (2)“循環(huán)繼續(xù)條件也稱為循環(huán)條件表達(dá)式,構(gòu)成循環(huán)的結(jié)束條件由“循環(huán)繼續(xù)條件決定。循環(huán)體內(nèi)應(yīng)該包括使條件為“假的計(jì)算來終止循環(huán)。(3)“循環(huán)體語句組可以是一條語句,也可以是復(fù)合語句。#include void main ( )
3、int i = 1, sum = 0; while ( i = 100 ) sum += i; i+; printf (sum = %dn, sum);循環(huán)控制變量初值循環(huán)終值循環(huán)繼續(xù) 條件循環(huán)體循環(huán)控制變量增值運(yùn)行結(jié)果:sum = 5050例5-1 用while語句求1 + 2 + 3 + + 100分析:n!=n*(n1)*(n2)*2*1 此題特點(diǎn)是重復(fù)的乘法操作,可以用循環(huán)實(shí)現(xiàn)。 計(jì)算機(jī)在計(jì)算階乘時(shí),是從1開始計(jì)算直到n為止。 用i代表循環(huán)控制變量,s代表n!的結(jié)果值,循環(huán)繼續(xù)條件為計(jì)算表達(dá)式:s=s*i,即可求得n!。例5-2 求n的階乘n!(n!=1*2*n) #include v
4、oid main() int i,n; long s; printf(please enter a integer:n); scanf(%d,&n); if(n=0) s=1; i=1; while(i=n) s=s*i; /*實(shí)現(xiàn)累乘*/ i+; printf(%d!=%ldn,n,s);elseprintf(Sorry! You enter a wrong number.n);運(yùn)行結(jié)果:please enter a integer: 55 !=120例5-3 統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù)。 分析:此題需要執(zhí)行重復(fù)計(jì)數(shù)的操作,顯然可以用循環(huán)來實(shí)現(xiàn)。設(shè)置一個(gè)累加器 n (初值為0),每次只要輸
5、入字符不是換行符,累加器的值就加1。循環(huán)計(jì)算n+,可統(tǒng)計(jì)出從鍵盤輸入的字符數(shù)。n=0n+輸出nFT開始結(jié)束 (getchar()!= n#include void main() int n=0; printf(input a string:n); while(getchar()!=n) n+; printf(%d,n);運(yùn)行結(jié)果:input a string:hello5分析:此題需執(zhí)行重復(fù)的輸入操作,用循環(huán)實(shí)現(xiàn)。本例的特點(diǎn)是“循環(huán)次數(shù)不確定,循環(huán)結(jié)束的條件。 例5-4輸入某班一門課的成績并計(jì)算其平均成績(人數(shù)不定,輸入成績?yōu)?1時(shí)結(jié)束)#include void main() float s
6、core,sum=0; int n=0; printf(n enter a score(-1 for end):); scanf(%f,&score); /*循環(huán)變量賦初值*/ while(score!=-1) sum+=score; n+; printf(n enter a score(-1 for end):); scanf(%f,&score); /*改變循環(huán)變量的值*/ printf(n n=%d,aver=%f,n,sum/n);運(yùn)行結(jié)果:80 90 100 70 60 59 -15.2 do -while循環(huán)語句 一般格式do 循環(huán)體語句組; while(循環(huán)繼續(xù)條件);執(zhí)行過程先
7、執(zhí)行“循環(huán)體語句組,再判斷“循環(huán)繼續(xù)條件表達(dá)式說明:(1) while(循環(huán)繼續(xù)條件);本行的分號不能省略。(2) do -while循環(huán)對應(yīng)直到型循環(huán)結(jié)構(gòu)。 (3) “循環(huán)繼續(xù)條件也稱為循環(huán)條件表達(dá)式,循環(huán)體內(nèi)應(yīng)該包括使條件為“假的計(jì)算來終止循環(huán)。(4) do -while循環(huán)至少要執(zhí)行一次循環(huán)語句。#include void main() int i=1,sum=0; /*初始化循環(huán)控制變量i和累計(jì)器sum*/ do sum=sum+i; /*實(shí)現(xiàn)累加*/ i+; /*循環(huán)控制變量i增1*/ while(i=100); printf(%dn,sum);例5-5 用do -while語句求1
8、 + 2 + 3 + + 100運(yùn)行結(jié)果:sum = 5050while語句和用do-while語句的比較: 一般情況,用while循環(huán)語句和用do -while循環(huán)語句處理問題時(shí),假設(shè)循環(huán)體局部一樣,結(jié)果也一樣。但是如果while循環(huán)語句循環(huán)條件一開始為“假,那么循環(huán)結(jié)果不同。while循環(huán)語句一次也不執(zhí)行,而do -while循環(huán)語句不管條件是否成立,先執(zhí)行一次循環(huán)體語句。例5-6 while和do-while循環(huán)語句的比較 (1) #include (2) #include void main ( ) void main( ) int sum=0,i; int sum=0,i; scan
9、f(“%d,&i); scanf(%d,&i); while (i=10) do sum=sum+i; sum=sum+i; i+; i+; while (i=10); printf(“sum=%dn ,sum); printf(“sum=%dn,sum); 運(yùn)行結(jié)果:1 sum=55 再運(yùn)行一次: 11sum=0運(yùn)行結(jié)果:1 sum=55 再運(yùn)行一次: 11sum=11說明:(1)當(dāng)while后面的表達(dá)式的第一次的值為“真時(shí),兩種循環(huán)得到的結(jié)果相同。否那么,二者結(jié)果不相同。5.3 for循環(huán)語句 一般格式for(變量賦初值;循環(huán)繼續(xù)條件;循環(huán)變量增值) 循環(huán)體語句組;執(zhí)行過程(1) 求解“變
10、量賦初值表達(dá)式。(2) 求解“循環(huán)繼續(xù)條件表達(dá)式。如果其值非0,執(zhí)行(3);否那么,轉(zhuǎn)至(4)。(3) 執(zhí)行循環(huán)體語句組,并求解“循環(huán)變量增值表達(dá)式,然后轉(zhuǎn)向(2)。(4) 執(zhí)行for語句的下一條語句。 C語言中的for語句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確 定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替while語句。例如: for(i=1;i=100;i+) sum=sum+i; 它相當(dāng)于以下語句: i=1; while(i=100) sum=sum+i;i+; 顯然,用for語句簡單、方便。 說明:(1) “變量賦初值表達(dá)式,既可以是給循環(huán)變量賦初值
11、的賦值表達(dá)式,也可以是與此無關(guān)的其他表達(dá)式(如逗號表達(dá)式)。如: for(sum=0;i=100;i+) sum += i; for(sum=0,i=1;i=100;i+) sum += i; “循環(huán)繼續(xù)條件局部是一個(gè)邏輯量,除一般的關(guān)系(或邏輯)表達(dá)式外,也允許是數(shù)值(或字符)表達(dá)式,它決定什么時(shí)候退出循環(huán)。例如: for(i=0;(c=getchar()!=n;i+=c); “循環(huán)變量增值定義循環(huán)控制變量每循環(huán)一次后按什么方式變化。例如: for(i=1; i=100; i+)sum=sum+i; 說明:(2) 省略了“循環(huán)變量賦初值, 表示不對循環(huán)控制變量賦初值。 例如: for(; i
12、=100; i+)sum=sum+i; 這種情況可以在for語句執(zhí)行前確定循環(huán)的初始值。例如: i=1; for(; i=100; i+)sum=sum+i; 執(zhí)行過程:先判定循環(huán)繼續(xù)條件,執(zhí)行循環(huán)體語句,然后使循環(huán)變量增值,使循環(huán)變量變化,再判定循環(huán)繼續(xù)條件。說明:(3) 省略了“循環(huán)繼續(xù)條件, 相當(dāng)于恒為“真,如果不做其他處理,會成為死循環(huán)。執(zhí)行過程: 先執(zhí)行變量賦初值,由于循環(huán)繼續(xù)條件恒為“真,故執(zhí)行循環(huán)體語句,再使循環(huán)變量增值,然后不停地重復(fù)判定循環(huán)繼續(xù)條件(恒為“真),循環(huán)結(jié)束不了,除非循環(huán)體中參加判定循環(huán)結(jié)束條件的指令。例如: for(i=1;i+)sum=sum+i; 相當(dāng)于:
13、i=1; while(1) sum=sum+i;i+; 說明:(4)省略了“循環(huán)變量增量, 那么不對循環(huán)控制變量進(jìn)行操作,這時(shí)可在語句體中參加修改循環(huán)控制變量的語句。執(zhí)行過程: 先執(zhí)行變量賦初值,然后判定循環(huán)繼續(xù)條件,為“真,執(zhí)行循環(huán)體語句,因沒有循環(huán)變量增值,故再次判定循環(huán)繼續(xù)條件是否為“真。例如: for(i=1;i=100;) sum=sum+i;i+; 說明:(5)省略了“循環(huán)變量賦初值和“循環(huán)變量增量。先判定循環(huán)繼續(xù)條件,為“真,執(zhí)行循環(huán)體語句,再次判定循環(huán)繼續(xù)條件,為“真,再執(zhí)行循環(huán)體語句,循環(huán)要結(jié)束也得使循環(huán)體語句中有使循環(huán)結(jié)束的趨勢條件。例如: for(;i=100;) sum
14、=sum+i; i+; 相當(dāng)于: while(i=100) sum=sum+i; i+; 在這種情況下,完全等同于while語句可見for語句比while語句功能強(qiáng),除了可以給出循環(huán)條件外,還可 以賦初值,使循環(huán)變量自動增值等。 說明:(6) 3個(gè)都可以省略,但是“;不能省略。例如: for(;)語句 相當(dāng)于: while(1) 即不設(shè)初值,不判斷條件(認(rèn)為循環(huán)繼續(xù)條件為真值), 循環(huán)變量不增值。無終止地執(zhí)行循環(huán)體。 #include void main() int i,sum=0; /*將累加器sum初始化為0*/ for(i=1; i=100; i+) sum += i;/*實(shí)現(xiàn)累加*/
15、printf(sum=%dn,sum);程序運(yùn)行的結(jié)果為:sum=5050 解析:先執(zhí)行變量賦初值,然后判定循環(huán)繼續(xù)條件,如果為“真,執(zhí)行循環(huán)體語句,i 為運(yùn)算工程和循環(huán)變量,執(zhí)行完一次,增加一次,最后累加和。例5-7用for語句求1 + 2 + 3 + + 100例5-8輸出50100之間不能被3整除的數(shù)。 分析: 設(shè)變量n表示每次待處理的數(shù),n不能被3整除的條件是“n%3!=0。循環(huán)結(jié)構(gòu)的組成為: 循環(huán)體:判斷n能否被3整除并進(jìn)行相應(yīng)的操作; 循環(huán)繼續(xù)條件:n=100(循環(huán)變量n); 循環(huán)變量的初值:50; 循環(huán)變量的增值:n+。 #include void main() int n; /
16、*循環(huán)變量*/ for(n=50;n=100;n+) if(n%3!=0) /*循環(huán)體*/ printf(%5d,n); 運(yùn)行結(jié)果:50 52 53 55 56 58 59 61 62 64 65 67 68 70 71 73 74 76 77 79 80 82 83 85 86 88 89 91 92 94 95 97 98 100當(dāng)循環(huán)中的內(nèi)嵌語句是循環(huán)語句時(shí),稱為循環(huán)的嵌套使用。內(nèi)嵌的循環(huán)中嵌套循環(huán),稱為多重循環(huán)。3種循環(huán)可互相嵌套,只要符合C語言的語法即可。5.4 多重循環(huán) 輸出下三角形乘法九九表。 1 2 3 4 5 6 7 8 9- 1 2 4 3 6 9 4 8 12 16 5
17、10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81例5-9輸出下三角形乘法九九表分析: 下三角形乘法九九表顯示為9行, 由循環(huán)控制變量控制行的變化, 假設(shè)行號為i(1=i=9) 假設(shè)列號為j(1=j=i) i=9i=1j=1jiprintfj+i+NNYY#include void main () int i=1, j; /*i:行計(jì)數(shù)器 j:列計(jì)數(shù)器*/ while( i= 9 ) /*控制打印表頭*/ printf ( %4d, i+); prin
18、tf (n-n); i=1; while ( i= 9 ) /*行控制*/ j=1; /*列計(jì)數(shù)器置1*/ while ( j = i )/*嵌套的二重循環(huán)。輸出第i行*/ printf (%4d, i*j ); j+; /*列計(jì)數(shù)器加1*/ printf (n);/*一行輸出結(jié)束后,輸出n*/ i+; /*行計(jì)數(shù)器加1*/ 5.5 break語句和continue語句 break語句用來結(jié)束循環(huán)或結(jié)束switch語句執(zhí)行。 語法:break; 說明:(1) 在循環(huán)或switch語句中執(zhí)行break語句,可使程序轉(zhuǎn)到該塊結(jié)束處繼續(xù)運(yùn)行,從而使得循環(huán)結(jié)束或switch語句結(jié)束。 (2) 假設(shè)是在
19、循環(huán)或switch語句的嵌套中執(zhí)行break語句,那么程序轉(zhuǎn)到外層的循環(huán)或switch語句嵌套中。 外循環(huán)或switch塊 內(nèi)循環(huán)或switch塊 最內(nèi)循環(huán)或switch塊 break; 例5-10 將用戶輸入的小寫字母轉(zhuǎn)換成大寫字母,直到輸入非小寫字母字符。分析:小寫字母轉(zhuǎn)換成大寫字母,通過它的ASCII碼值減去32得到。每次從鍵盤輸入一個(gè)字符,只要該字符是小寫字母那么進(jìn)行轉(zhuǎn)換,然后輸出大寫字母。如果不是小寫字母,結(jié)束循環(huán) c=getchar()c a & c zputchar(c - a + A)FT開始break結(jié)束#include void main () char c; while
20、( 1 ) c=getchar (); if ( c = a & c = z) putchar (c a + A); else break; 程序運(yùn)行的結(jié)果為:howareyouHOWAREYOU continue語句的作用是結(jié)束本次循環(huán),進(jìn)行下一次循環(huán)判定。語法:continue;說明:(1)在循環(huán)中執(zhí)行continue語句,程序?qū)⑥D(zhuǎn)到循環(huán)判定條件處繼續(xù)運(yùn)行,從而使程序跳過循環(huán)體中剩余的語句而強(qiáng)行執(zhí)行下一次循環(huán)。(2) continue語句用在while、do -while、for等循環(huán)體中,常與if條件語句一起使用,用來加速循環(huán)。例5-11 求輸入的10個(gè)整數(shù)中正數(shù)的個(gè)數(shù)及其平均值。分析:
21、 假設(shè)從鍵盤輸入的整數(shù)為a, 數(shù)據(jù)的個(gè)數(shù)為num,數(shù)據(jù)的 總和為sum。如果a0,那么 計(jì)數(shù)num的值不增加,不計(jì) 入總和,得重新輸入數(shù)據(jù); 否那么num的值加1,總和由 sum= sum+a得到。最后的 算術(shù)平均值為sum/num。 F 輸出個(gè)數(shù),和,平均值int i,a,num=0; float sum=0 開始 scanf (%d, &a)num+; sum += a; a0 i10TTF i+ 結(jié)束#include void main () int i, a, num=0; float sum=0; for (i=0; i 10; i+) scanf (%d, &a); if (a =
22、 0) continue; num+; sum += a; printf (%d plus integers sum: %.0fn, num, sum); printf (average value: %.2fn, sum / num);程序運(yùn)行的結(jié)果為:假設(shè)輸入的10個(gè)整數(shù)為: 2 3 4 5 6 7 8 9 108 plus integers sum: 45例5-12 打印出數(shù)字010,但跳過(即不輸出)數(shù)字7。#include void main () int i; for (i=0;i=10;i+) if (i=7) continue; printf (%5d,i) ; 程序運(yùn)行的結(jié)果
23、為:0 1 2 3 4 5 6 8 9 10(1) 當(dāng)i=7時(shí)執(zhí)行continue語句,它的作用是終止本次循環(huán),即跳過printf語句,故不輸出7。(2) 如果在本例中將“continue;語句改為“break;語句,那么輸出結(jié)果為:0 1 2 3 4 5 6continue語句與break語句不同,它不終止循環(huán)的運(yùn)行,而只是結(jié)束本次循環(huán)。break語句那么是強(qiáng)制終止整個(gè)循環(huán)過程。在嵌套循環(huán)的情況下,continue語句只對包含它的最內(nèi)層的循環(huán)體語句起作用。break語句也只能終止并跳出最近一層的結(jié)構(gòu)。 5.6 幾種循環(huán)語句的比較共同點(diǎn)(1) while、do -while、for循環(huán)在邏輯上
24、是相同的,一般可以互相代替。(2) while、do -while、for循環(huán)一般都需要設(shè)置循環(huán)的初始值、循環(huán)結(jié)束條件的判定、循環(huán)增量(或減量)的計(jì)算。(3) while、do -while、for循環(huán)都可以用break語句來結(jié)束循環(huán),用continue語句來結(jié)束一次循環(huán)。不同點(diǎn)while、do -while、for循環(huán)的不同點(diǎn)主要是設(shè)置循環(huán)的初始值、循環(huán)結(jié)束條件的判定、循環(huán)增量(或減量)的計(jì)算的程序順序不同whiledo-whilefor設(shè)置循環(huán)的初始值語句前語句前語句前或變量賦初值循環(huán)結(jié)束條件的判定先判后執(zhí)行先執(zhí)行后判先判后執(zhí)行循環(huán)控制計(jì)算循環(huán)體內(nèi)循環(huán)體內(nèi)循環(huán)體內(nèi)或循環(huán)變量增值(1) do
25、 -while循環(huán)至少執(zhí)行循環(huán)體一次,while、for循環(huán)可能一次也不執(zhí)行。(2) for循環(huán)的循環(huán)功能處理功能最強(qiáng),while、do -while均可用for循環(huán)實(shí)現(xiàn)。 例5-13 判斷輸入的整數(shù)是否是素?cái)?shù)。分析:素?cái)?shù)又稱為質(zhì)數(shù),是指除了能被1和它本身整除外,不能被其他任何整數(shù)整除的數(shù)。判斷一個(gè)數(shù)m(m3)是否是素?cái)?shù)的方法:把m作為被除數(shù),把2m/2間整數(shù)除,或被2 (取整數(shù))之間的整數(shù)除,判斷被除數(shù)與除數(shù)相除的結(jié)果,假設(shè)都除不盡,那么說明m是素?cái)?shù)。計(jì)算機(jī)解決此類問題采用“窮舉法。窮舉法的根本原理是:根據(jù)條件,在給定的范圍內(nèi)對所有可能的答案按某種順序進(jìn)行逐一枚舉和檢驗(yàn),從中找出那些符合要求
26、的答案。窮舉法的關(guān)鍵是列舉所有可能情況和條件判斷,列舉可能情況用循環(huán)語句實(shí)現(xiàn),條件判斷用條件語句實(shí)現(xiàn)。 #include #include void main () int m, i, k; printf (input a number: ); scanf (%d, &m); k=sqrt (m); i=2; while (i k) printf (%d is a prime numbern,m); else printf (%d is not a prime numbern,m);程序運(yùn)行的結(jié)果為:input a number:1919 is a prime numberk=真 輸入mi=2
27、當(dāng)ik假m被i整除用break結(jié)束循環(huán)真假輸出 : m“是素?cái)?shù)”輸出 : m“不是素?cái)?shù)”ik+1i=i+1goto語句構(gòu)成循環(huán) 一般格式為: goto 標(biāo)號;goto語句是一種無條件轉(zhuǎn)移語句。其中標(biāo)號是一個(gè)有效的標(biāo)識符,這個(gè)標(biāo)識符加上一個(gè)“:一起出現(xiàn)在函數(shù)內(nèi)某處, 執(zhí)行g(shù)oto語句后,程序?qū)⑻D(zhuǎn)到該標(biāo)號處并執(zhí)行其后的語句。goto語句的作用是在不需要任何條件的情況下直接使程序跳轉(zhuǎn)到該語句標(biāo)號所標(biāo)識的語句去執(zhí)行,在多層嵌套退出時(shí), 用goto語句那么比較合理。由于goto語句是非結(jié)構(gòu)化的語句,不恰當(dāng)?shù)氖褂脮茐某绦虻倪壿嫿Y(jié)構(gòu),所以在結(jié)構(gòu)化程序設(shè)計(jì)中一般不主張使用goto語句。例5-14 goto
28、語句計(jì)算1 + 2 + 3 + + 100 #include void main() int i,sum=0; i=1;loop: if(i=1e-7;循環(huán)控制變量:n;進(jìn)入循環(huán)前給n賦初值:1;改變循環(huán)變量的值:n+2。 #include #include void main()double s,t,x;int n=1;scanf(%lf,&x);t=x;s=x;do n=n+2; t=t*(-x*x)/(n*(n-1); s=s+t;while(fabs(t)=1e-7);printf(sin(%lf)=%lfn,x,s); 程序運(yùn)行的結(jié)果為:sin(1.570000)=1.000000
29、例5-16 百錢百雞問題。中國古代數(shù)學(xué)家張丘建在他的?算經(jīng)?中提出了著名的“百錢百雞問題:雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一;百錢買百雞,雞翁、雞母、雞雛各幾何?分析:設(shè):要買x只公雞,y只母雞,z只小雞,可得到方程: x + y + z=100 5 x + 3 y + z / 3=100這是個(gè)不定方程中三元一次方程組問題(三個(gè)變量,兩個(gè)方程),可以采用“窮舉法求解,把所有可能的情況一一測試,篩選出符合條件的各種結(jié)果進(jìn)行輸出。窮舉法的實(shí)現(xiàn)用循環(huán)??梢圆捎萌厍短椎难h(huán)對變量x、y、z 進(jìn)行組合。對于不同的組合,如果滿足上面的兩個(gè)方程,就是問題的一個(gè)解。如果不滿足,就不是問題的解。根
30、據(jù)題目,可以確定x和y的取值范圍:0 x、y、z 100。#include void main() int x, y, z, j=0; /*j為計(jì)數(shù)器,記錄解的數(shù)量*/ for (x=0; x=100; x+) /*窮舉變量x*/ for (y=0; y=100; y+) /*窮舉變量y*/ for (z=0; z=100; z+) /*窮舉變量z*/ if ( x+y+z=100 & 5*x+3*y+z/3=100 ) /*判斷是否滿足兩個(gè)方程*/ printf(%2d:cock=%2d hen=%2d chicken=%2dn, +j, x, y, z);此為“最笨之法#include v
31、oid main() int x, y, z, j=0; /*j為計(jì)數(shù)器,記錄解的數(shù)量*/ for (x=0; x=20; x+) for ( y=0; y=(100-5*x)/3; y+ )/*減少變量y的窮舉范圍*/ z=100-x-y; if ( z%3=0 & 5*x+3*y+z/3=100 ) printf(%2d:cock=%2d hen=%2d chicken=%2dn, +j, x, y, z ) ; 程序運(yùn)行的結(jié)果為:1: cock= 0 hen=25 chicken=752: cock= 4 hen=18 chicken=783: cock= 8 hen=11 chicken=814: cock=12 hen= 4 chicken=84例5-17 求Fibonacci數(shù)列(斐波那契數(shù)列)的前20項(xiàng)。這個(gè)數(shù)列有如下的規(guī)律:第一項(xiàng)和第二項(xiàng)都為1,從第三項(xiàng)開始,每一項(xiàng)都等于前兩項(xiàng)之和。F(1)=1 (n=1)F(2)=1 (n=2)F(n)=F(n-1)+F(n-2) (n3) 分析:斐波那契數(shù)列是一個(gè)關(guān)于加法算法的典型實(shí)例。由Fn=Fn-1+Fn-2 ,得到數(shù)列Fn=1,1,2,3,5,8,13,21,34,。計(jì)算機(jī)善于利用循環(huán)處理這種遞推問題,方法是重復(fù)利用變量名,一個(gè)變量名在不同的時(shí)間代表不同的項(xiàng)。假設(shè)用變量f代表Fn,f 1,f
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇州市重點(diǎn)中學(xué)2024-2025學(xué)年高三第一次聯(lián)考?xì)v史試題理試題含解析
- 唐山工業(yè)職業(yè)技術(shù)學(xué)院《環(huán)境生態(tài)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 贛南師范大學(xué)科技學(xué)院《陳設(shè)藝術(shù)品設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 寧夏銀川市金鳳區(qū)六盤山高級中學(xué)2025屆高三第二次(4月)月考數(shù)學(xué)試題試卷含解析
- 遼寧石化職業(yè)技術(shù)學(xué)院《工廠化育苗原理與技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 棗莊職業(yè)學(xué)院《人力資源專業(yè)英語》2023-2024學(xué)年第二學(xué)期期末試卷
- 宿遷職業(yè)技術(shù)學(xué)院《病理學(xué)(含病理生理學(xué))》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南省安陽市滑縣2025屆下學(xué)期高三四月考?xì)v史試題試卷含解析
- 西安交通工程學(xué)院《乒乓球Ⅳ》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西電力職業(yè)技術(shù)學(xué)院《系統(tǒng)架構(gòu)》2023-2024學(xué)年第二學(xué)期期末試卷
- 光伏補(bǔ)貼申請流程
- 小數(shù)與單位換算(說課稿)-2023-2024學(xué)年四年級下冊數(shù)學(xué)人教版
- 《張愛玲傾城之戀》課件
- 實(shí)驗(yàn)診斷學(xué)練習(xí)題庫(附參考答案)
- 無錫網(wǎng)格員考試題庫
- 第9課 改變世界的工業(yè)革命
- 《供應(yīng)商選擇與評估》課件
- 新版申請銀行減免利息的申請書
- QC課題提高金剛砂地面施工一次合格率
- 保潔服務(wù)質(zhì)量保障及措施
- 《電子銀行安全評估過程實(shí)施指南》征求意見稿
評論
0/150
提交評論