lh循環(huán)結構程序設計_第1頁
lh循環(huán)結構程序設計_第2頁
lh循環(huán)結構程序設計_第3頁
lh循環(huán)結構程序設計_第4頁
lh循環(huán)結構程序設計_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、西安電子科技大學 - Xidian University 1 設有兩個正整數(shù)m和n,如何求其最大公約數(shù)?有多種方法,例如:令有多種方法,例如:令k等于從等于從m和和n中較小的數(shù),用中較小的數(shù),用k去除去除m和和n,若不能整除,則令,若不能整除,則令k的值減去的值減去1,直到某,直到某個值能同時將個值能同時將m和和n整除。整除。求最大公約數(shù)求最大公約數(shù)西安電子科技大學 - Xidian University 2求最大公約數(shù)求最大公約數(shù)( (笨辦法笨辦法) )NYk能同時整除能同時整除m和和n?輸出輸出k的值的值輸入正整數(shù)輸入正整數(shù)m和和n結束結束k k-1準備準備K MIN(m,n)#inclu

2、de int main( ) int m, n, k; scanf(%d%d,&m,&n); if (m1|n1) return 0; k = mn?m:n; while (m%k!=0 | n%k!=0) k-; printf(gcd=%dn,k); return 0;西安電子科技大學 - Xidian University 3 設有兩個正整數(shù)m和n,如何求其最大公約數(shù)?有多種方法,例如:令有多種方法,例如:令k等于等于m和和n中的較小者,用中的較小者,用k去除去除m和和n,若不能整除,則令,若不能整除,則令k的值減去的值減去1,直到某,直到某個值能同時將個值能同時將m和和n

3、整除。整除。求解速度最快的方法是輾轉相除法求解速度最快的方法是輾轉相除法輾轉相除法輾轉相除法( (歐幾里得算法歐幾里得算法) ):給定兩個正整數(shù)給定兩個正整數(shù)m m和和n n,求它們的最大公約數(shù),求它們的最大公約數(shù)( (公因子公因子) )。步驟步驟1:1:【求余數(shù)求余數(shù)】以以n n除除m m并令并令r r為所得余數(shù)為所得余數(shù)(0r(0rn)n)步驟步驟2:2:【余數(shù)為余數(shù)為0?0?】若若r=0r=0,則算法結束;,則算法結束;n n即為答案即為答案步驟步驟3:3:【互換互換】置置mnmn, nrnr,轉向步驟,轉向步驟1 1。求最大公約數(shù)求最大公約數(shù)西安電子科技大學 - Xidian Univ

4、ersity 4求最大公約數(shù)求最大公約數(shù)YNrm被被n除的余數(shù)除的余數(shù)r不等于不等于0?n r輸出輸出n的值的值輸入正整數(shù)輸入正整數(shù)m和和n結束結束m n準備準備西安電子科技大學 - Xidian University 5ABCD求最大公約數(shù)流程圖求最大公約數(shù)流程圖YNr不等于不等于0?輸出輸出n的值的值輸入正整數(shù)輸入正整數(shù)m和和n開始開始結束結束m n; n rr m % nABCDr m % n西安電子科技大學 - Xidian University 6求最大公約數(shù)程序求最大公約數(shù)程序#include int main( ) return 0;YNr不等于不等于0?輸出輸出n的值的值輸入正

5、整數(shù)輸入正整數(shù)m和和n開始開始結束結束m n; n rr m % nr m % nwhile (r != 0) m = n; n = r; r = m % n;printf(input two integers:);scanf(%d%d,&m,&n); r = m % n; int m, n, r;printf(ngcd = %dn ,n);西安電子科技大學 - Xidian University 7while (c = getchar() != EOF) switch (c) case : nb+; break; case1: case2: case3: case4: cas

6、e5: case6: case7: case8: case9: case0: nd+; break; case n: nl+; break; case : case : nc+; break; default: nn+; break;whilewhile和和switchswitch綜合運用示例綜合運用示例西安電子科技大學 - Xidian University 8主要內(nèi)容主要內(nèi)容西安電子科技大學 - Xidian University 9C C的循環(huán)語句的循環(huán)語句lC C語言提供了描述循環(huán)計算的語句:語言提供了描述循環(huán)計算的語句: whilewhile語句語句 forfor語句語句 do.wh

7、iledo.while語句語句l學習循環(huán)結構程序設計就是掌握以上語學習循環(huán)結構程序設計就是掌握以上語句的使用方法句的使用方法西安電子科技大學 - Xidian University 10q分析問題,在求解過程中:分析問題,在求解過程中:存在一個(些)運算(動作)需要重復進行(循存在一個(些)運算(動作)需要重復進行(循環(huán))若干次。環(huán))若干次。重復的次數(shù)是事先確定的,或者是根據(jù)條件確定重復的次數(shù)是事先確定的,或者是根據(jù)條件確定的。的。q處理循環(huán)計算需要明確的三個問題:處理循環(huán)計算需要明確的三個問題:循環(huán)體:循環(huán)體:哪些運算(動作)是需要重復進行的;哪些運算(動作)是需要重復進行的;循環(huán)條件:循環(huán)

8、條件:重復這些運算的條件是什么,即在什重復這些運算的條件是什么,即在什么情況下終止么情況下終止/ /繼續(xù)這個重復的過程。繼續(xù)這個重復的過程。循環(huán)準備:循環(huán)準備:在進行重復的運算處理之前,需要進在進行重復的運算處理之前,需要進行的準備工作是什么;行的準備工作是什么;循環(huán)結構程序的編寫要點循環(huán)結構程序的編寫要點西安電子科技大學 - Xidian University 11for語句語句西安電子科技大學 - Xidian University 12forfor語句的格式和含義語句的格式和含義lforfor語句的基本格式:語句的基本格式:for(for(表達式表達式1;1;表達式表達式2;2;表達式表

9、達式3)3) 循環(huán)體語句循環(huán)體語句A Alforfor語句的含義:語句的含義:1)1) 計算表達式計算表達式1 1;2) 2) 計算表達式計算表達式2,2,若表達式若表達式2 2的值為的值為“假假”,則結束,則結束forfor語句語句的執(zhí)行的執(zhí)行, ,轉轉4)4);否則,執(zhí)行循環(huán)體語句;否則,執(zhí)行循環(huán)體語句A;A;3) 3) 計算表達式計算表達式3, 3, 然后轉然后轉2)2);4) 4) 執(zhí)行執(zhí)行forfor語句之后的第一條語句;語句之后的第一條語句;表達式表達式2 2?A真真 假假表達式表達式1 1表達式表達式3 3西安電子科技大學 - Xidian University 13forfor

10、語句語句:1+2+.+100:1+2+.+100#include main( ) int i, s; printf( %dn ,s);BYNI 1S 0I=100?S S+I輸出輸出S的值的值開始開始結束結束I I+1ACfor(i = 1,s = 0; i = 100;i+) s += i;#include int main( ) int i, s; i = 1; s = 0; while (i = 100) s += i; i+; printf( %dn ,s); return 0;西安電子科技大學 - Xidian University 14forfor語句中的表達式語句中的表達式lfo

11、rfor語句的基本格式:語句的基本格式:for(for(表達式表達式1;1;表達式表達式2;2;表達式表達式3)3) 循環(huán)體語句循環(huán)體語句A Al一般情況下一般情況下表達式表達式1 1進行循環(huán)計算的初始化進行循環(huán)計算的初始化處理處理表達式表達式2 2是循環(huán)的條件是循環(huán)的條件表達式表達式3 3進行的計算能夠對表達進行的計算能夠對表達式式2 2的值產(chǎn)生影響的值產(chǎn)生影響表達式表達式2 2?A真真 假假表達式表達式1 1表達式表達式3 3西安電子科技大學 - Xidian University 15求最大公約數(shù)程序求最大公約數(shù)程序(for)(for)#include main( ) int m, n,

12、 r; printf(input two integers:); scanf(%d%d,&m,&n); printf(ngcd = %dn ,n);YNr不等于不等于0?輸出輸出n的值的值輸入正整數(shù)輸入正整數(shù)m和和n開始開始結束結束m n; n rrm被被n除的余數(shù)除的余數(shù)rm被被n除的余數(shù)除的余數(shù)for(r = m % n; r != 0; r = m % n) m = n; n = r;西安電子科技大學 - Xidian University 16forfor語句與語句與whilewhile語句的等價關系語句的等價關系lforfor語句的基本格式:語句的基本格式:for(f

13、or(表達式表達式1;1;表達式表達式2;2;表達式表達式3)3) 循環(huán)體語句循環(huán)體語句A A表達式表達式2 2?A真真 假假表達式表達式1 1表達式表達式3 3表達式表達式1 1;while (while (表達式表達式2) 2) 循環(huán)體語句循環(huán)體語句A A; 表達式表達式3 3; 西安電子科技大學 - Xidian University 17Y N K 2K不能整除不能整除n?K K+1輸出輸出n是素數(shù)是素數(shù) 輸入輸入n的值的值開始開始結束結束YNK等于等于n?輸出輸出n不是素數(shù)不是素數(shù)判斷素數(shù)算法及程序判斷素數(shù)算法及程序#include main ( ) int k, n; printf

14、(input an integer:); scanf(%d,&n); k = 2; while (n % k != 0) k+; if ( k = n) printf(%d is a prime.n,n); else printf(%d is not a prime.n,n);#include main ( ) int k, n; printf(input an integer:); scanf(%d,&n); if ( k = n) printf(%d is a prime.n,n); else printf(%d is not a prime.n,n);for(k = 2;

15、 n % k !=0; k+);西安電子科技大學 - Xidian University 18forfor語句小結語句小結l表達式表達式1 1可放置在可放置在forfor語句之前語句之前for(for(表達式表達式1;1;表達式表達式2;2;表達式表達式3)3) 循環(huán)體語句循環(huán)體語句A A表達式表達式1;1;for(;for(;表達式表達式2;2;表達式表達式3)3) 循環(huán)體語句循環(huán)體語句A Al表達式表達式3 3可放置在可放置在forfor語句的循環(huán)體中語句的循環(huán)體中for(for(表達式表達式1;1;表達式表達式2;)2;) 循環(huán)體語句循環(huán)體語句A;A; 表達式表達式3;3; lforfo

16、r語句中的表達式可以是語句中的表達式可以是C C語言允許的任何表達式語言允許的任何表達式西安電子科技大學 - Xidian University 19forfor語句小結語句小結( (續(xù)續(xù)) )l進一步,表達式進一步,表達式2 2可以沒有,可以沒有,表示無休止地循環(huán)表示無休止地循環(huán)for(for(表達式表達式1;1;表達式表達式3)3) 循環(huán)體語句循環(huán)體語句A Al三個表達式都省略三個表達式都省略for(;)for(;) 循環(huán)體語句循環(huán)體語句A AAA表達式表達式1表達式表達式3西安電子科技大學 - Xidian University 20break語句語句西安電子科技大學 - Xidian

17、University 21breakbreak語句的作用語句的作用l在在switchswitch語句中使用語句中使用 grade = score / 10; /*百分制成績百分制成績score轉換為等級分制轉換為等級分制*/ switch (grade) case 10: case 9: printf( grade = An ); break; case 8: printf( grade = Bn ); break; case 7: printf( grade = Cn ); break; case 6: printf( grade = Dn ); break; case 5: case 4:

18、 case 3: case 2: case 1: case 0: printf( grade = En ); break; default: printf( Invalid data!n ); 西安電子科技大學 - Xidian University 22breakbreak語句的作用語句的作用( (續(xù)續(xù)) )l在循環(huán)語句中使用,強行中止循環(huán)在循環(huán)語句中使用,強行中止循環(huán)pA成立成立不成立不成立循環(huán)結構循環(huán)結構 (while)BbreakpA成立成立不成立不成立BbreakpA成立成立不成立不成立循環(huán)結構循環(huán)結構 (while)B西安電子科技大學 - Xidian University 23b

19、reakbreak語句的作用語句的作用( (續(xù)續(xù)) )l在循環(huán)語句中使用,強行中止循環(huán)在循環(huán)語句中使用,強行中止循環(huán)/*計算正整數(shù)計算正整數(shù)m和和n的最大公約數(shù)的最大公約數(shù)*/ for(k = m; k=1; k-) if ( n % k = 0 & m % k = 0) break; printf(Gcd = %dn,k);k = 1?成立成立不成立不成立breakn % k = 0且且m % k =0?k = m否否是是k = k - 1printf(k)西安電子科技大學 - Xidian University 24continue語句語句西安電子科技大學 - Xidian Uni

20、versity 25continuecontinue語句的作用語句的作用l執(zhí)行流程到達執(zhí)行流程到達continuecontinue語句時,結束本輪循語句時,結束本輪循環(huán),開始下一輪循環(huán)環(huán),開始下一輪循環(huán)pA成立成立不成立不成立循環(huán)結構循環(huán)結構 (while)BpA成立成立不成立不成立循環(huán)結構循環(huán)結構 (while)BcontinuepA成立成立不成立不成立循環(huán)結構循環(huán)結構 (while)Bcontinue西安電子科技大學 - Xidian University 26continuecontinue語句的應用舉例語句的應用舉例a輸出輸出100100200200之間所有不能被之間所有不能被3 3整

21、除的整數(shù)。整除的整數(shù)。#include main( ) int n; for(n = 100; n = 200; n+) if (n % 3 = 0) continue; printf(%dt, n); /*end of for*/n = 200?成立成立不成立不成立printf(%dt, n)continuen % 3 = 0?n = 100否否是是n +西安電子科技大學 - Xidian University 27循環(huán)語句應用舉例循環(huán)語句應用舉例l已知雞兔共籠,頭共已知雞兔共籠,頭共4545個,腳共個,腳共120120只,問雞、只,問雞、兔各幾何?兔各幾何?#include int mai

22、n( ) int chicken, rabbits; for (chicken = 0; chicken = 45; chicken+) rabbits = 45 chicken; if (chicken * 2 + rabbits * 4 = 120) break; /*end of for*/ printf(chicken: %dt rabbits: %dn , chicken, rabbits); return 0;a = 0; b = 45;while (2*a+4*b != 120) a+; b-;西安電子科技大學 - Xidian University 28單重循環(huán)和多重循環(huán)單重循

23、環(huán)和多重循環(huán)西安電子科技大學 - Xidian University 29forfor語句和語句和whilewhile語句語句lforfor語句的基本格式:語句的基本格式:for(for(表達式表達式1;1;表達式表達式2;2;表達式表達式3)3) 循環(huán)體語句循環(huán)體語句A A表達式表達式2 2?A真真 假假表達式表達式1 1表達式表達式3 3lwhilewhile語句的格式:語句的格式:while (while (表達式表達式p)p) 循環(huán)體語句循環(huán)體語句A ApA真真 假假循環(huán)結構循環(huán)結構西安電子科技大學 - Xidian University 30循環(huán)語句應用舉例循環(huán)語句應用舉例l已知雞兔

24、共籠,頭共已知雞兔共籠,頭共4545個,腳共個,腳共120120只,問雞、只,問雞、兔各幾何?兔各幾何?#include int main( ) int chicken, rabbits; for (chicken = 0; chicken = 45; chicken+) rabbits = 45 chicken; if (chicken * 2 + rabbits * 4 = 120) break; /*end of for*/ printf(chicken: %dt rabbits: %dn , chicken, rabbits); return 0;循環(huán)體語句可以是循環(huán)體語句可以是語言允

25、許的任何語語言允許的任何語句,多于一條語句句,多于一條語句時必須用時必須用括起來括起來西安電子科技大學 - Xidian University 31例如,例如,艱難旅程(浮點誤差)。烏龜要去環(huán)球。第艱難旅程(浮點誤差)。烏龜要去環(huán)球。第1秒爬秒爬1米,第米,第2秒爬秒爬1/2米,第米,第3秒爬秒爬1/3米,第米,第4秒爬秒爬1/4米,米,。問一小時能爬出多遠?爬。問一小時能爬出多遠?爬20米需多少秒?米需多少秒? 這里只考慮爬這里只考慮爬20米需要多少時間。寫出下面的代碼:米需要多少時間。寫出下面的代碼:#include #include int main() long i; float x

26、= 0.0; /路程路程 for (i=1; x20; +i) x = x+ 1.0/i; printf(%ldn,i - 1); return 0;運行開始運行后,很長運行開始運行后,很長時間看不到輸出時間看不到輸出西安電子科技大學 - Xidian University 32例如,艱難旅程(浮點誤差)。烏龜要去環(huán)球。第例如,艱難旅程(浮點誤差)。烏龜要去環(huán)球。第1秒爬秒爬1米,米,第第2秒爬秒爬1/2米,第米,第3秒爬秒爬1/3米,第米,第4秒爬秒爬1/4米,米,。問一小時能。問一小時能爬出多遠?爬爬出多遠?爬20米需多少秒?米需多少秒? #include #include int mai

27、n()long i=1;float x = 0.0, a=0.0;for (x=10.0; x20.0; x+=1.0)for(; ax; i+)a += 1.0/i;printf(%ld s, %lf m n, i-1, a);return 0;分別觀察:分別觀察: 爬爬10米所用的時間米所用的時間爬爬11米所用的時間米所用的時間爬爬20米所用的時間米所用的時間輸出:輸出:12367s, 10.000000m33617s, 11.000000m91328s, 12.000000m248695s, 13.000000m662167s, 14.000000m1673859s, 15.000000

28、m之后有一會兒沒反應,然后輸出錯誤的數(shù)之后有一會兒沒反應,然后輸出錯誤的數(shù)據(jù)(因為溢出)。據(jù)(因為溢出)。西安電子科技大學 - Xidian University 33例如,艱難旅程(浮點誤差)。烏龜要去環(huán)球。第例如,艱難旅程(浮點誤差)。烏龜要去環(huán)球。第1秒爬秒爬1米,米,第第2秒爬秒爬1/2米,第米,第3秒爬秒爬1/3米,第米,第4秒爬秒爬1/4米,米,。問一小時能。問一小時能爬出多遠?爬爬出多遠?爬20米需多少秒?米需多少秒? #include #include int main()long i=1;double x = 0.0, a=0.0;for (x=10.0; x20.0; x+

29、=1.0)for(; ax; i+)a += 1.0/i;printf(%ld s, %lf m n, i-1, a);return 0;很快就輸出:很快就輸出:12367s, 10.000043m33617s, 11.000018m91380s, 12.000003m248397s, 13.000001m675214s, 14.000001m1835421s, 15.000000m4989191s, 16.000000m13562027s, 17.000000m36865412s, 18.000000m100210581s, 19.000000m272400600s, 20.000000m西

30、安電子科技大學 - Xidian University 34l將上面代碼中的將上面代碼中的float改為改為double,20億秒時還增長,輸出:億秒時還增長,輸出: 2000000000s, 21.993629ml經(jīng)過大約經(jīng)過大約63年半,烏龜爬了近年半,烏龜爬了近22米。在大約米。在大約2億億5千萬秒(約千萬秒(約8年)爬過了年)爬過了20米,這是題目第二部分的答案。米,這是題目第二部分的答案。l由于由于long為為32位表示,在此范圍內(nèi)沒找到用位表示,在此范圍內(nèi)沒找到用double類型的類型的增長結束點。但一定比用增長結束點。但一定比用float大得多。大得多。 l特殊情況中浮點誤差積累

31、可能更迅速。有兩個重要情況:特殊情況中浮點誤差積累可能更迅速。有兩個重要情況:將一批小的數(shù)加到很大的數(shù)上,會導致丟掉小的數(shù)的重要將一批小的數(shù)加到很大的數(shù)上,會導致丟掉小的數(shù)的重要部分,甚至小數(shù)整個被丟掉(例中情況)部分,甚至小數(shù)整個被丟掉(例中情況)兩個值接近的數(shù)相減,可能導致精度大大下降兩個值接近的數(shù)相減,可能導致精度大大下降西安電子科技大學 - Xidian University 35百錢百雞問題百錢百雞問題 中國古代數(shù)學家張丘建在他的中國古代數(shù)學家張丘建在他的算經(jīng)算經(jīng)中曾提出中曾提出著名的著名的“百錢百雞問題百錢百雞問題”,其題目如下:,其題目如下: 雞翁雞翁一,值錢五;雞母一,值錢三;

32、雞雛三,值錢一;一,值錢五;雞母一,值錢三;雞雛三,值錢一;百錢買百雞,翁、母、雛各幾何?百錢買百雞,翁、母、雛各幾何? 西安電子科技大學 - Xidian University 36百錢百雞問題百錢百雞問題1003kj3i5100kji解:設解:設i i、j j、k k分別代表公雞、母雞、小雞的數(shù)分別代表公雞、母雞、小雞的數(shù)量,根據(jù)題意列方程:量,根據(jù)題意列方程: 根據(jù)題意可知,根據(jù)題意可知,i i、j j、k k的范圍一定是的范圍一定是0 0到到100100的正的正整數(shù)整數(shù),那么,最簡單的解題方法是:窮舉,那么,最簡單的解題方法是:窮舉i i、j j、k k每一種可能的取值組合,直接代入方

33、程組,若滿每一種可能的取值組合,直接代入方程組,若滿足該方程組則是一組解。這樣即可得到問題的全足該方程組則是一組解。這樣即可得到問題的全部解。部解。 西安電子科技大學 - Xidian University 37百錢百雞問題百錢百雞問題i 0i 20?買母雞和買母雞和小雞小雞NY開始開始結束結束i i + 1YNj 34?j j + 1j 0買小雞買小雞YNk 100?k k + 1k 0將將i、j、k的值代入的值代入i+j+k和和i+3j+k/3,若都為若都為100,則是一,則是一種買法種買法西安電子科技大學 - Xidian University 38i = 0;while (i 20 )

34、 i+; int i, j, k; /*i、j、k分別表示公雞、母雞和小雞的數(shù)目分別表示公雞、母雞和小雞的數(shù)目*/ j = 0;while (j 34) j+;k = 0;while ( k 100) if ( i + j + k = 100 & i*5 + j*3 + k/3 = 100) printf(%d %d %dn,i,j,k); k+;百錢百雞問題百錢百雞問題(while)(while)輸出:輸出:0 25 753 20 774 18 787 13 808 11 8111 6 8312 4 84西安電子科技大學 - Xidian University 39for(i = 0

35、; i 20; i+ ) /*設定公雞的數(shù)目設定公雞的數(shù)目*/ int main( ) int i, j, k; /*i、j、k分別表示公雞、母雞和小雞的數(shù)目分別表示公雞、母雞和小雞的數(shù)目*/ return 0; for(j = 0; j 34; j+) /*設定母雞的數(shù)目設定母雞的數(shù)目*/ for(k = 0; k 100; k+) /*設定小雞的數(shù)目設定小雞的數(shù)目*/ if ( i + j + k = 100 & i*15 + j*9 + k = 300) printf(%d %d %dn,i,j,k);百錢百雞問題(百錢百雞問題(forfor)輸出:輸出:0 25 754 18

36、788 11 8112 4 84西安電子科技大學 - Xidian University 40for(i = 0; i 20; i+ ) /*設定公雞的數(shù)目設定公雞的數(shù)目*/ int main( ) int i, j, k; /*i、j、k分別表示公雞、母雞和小雞的數(shù)目分別表示公雞、母雞和小雞的數(shù)目*/ return 0; for(j = 0; j 34; j+) /*設定母雞的數(shù)目設定母雞的數(shù)目*/ k = 100 i j ;if (i*15 + j*9 + k = 300) printf(%d %d %dn,i,j,k);百錢百雞問題(百錢百雞問題(forfor續(xù))續(xù))西安電子科技大學 -

37、 Xidian University 41直到型循環(huán)結構和直到型循環(huán)結構和do-while語句語句西安電子科技大學 - Xidian University 42pAab循環(huán)結構循環(huán)結構2(until)pA成立成立不成立不成立ab循環(huán)結構循環(huán)結構1(while)untiluntil循環(huán)結構循環(huán)結構l循環(huán)結構循環(huán)結構當型循環(huán)結構當型循環(huán)結構(while(while型循環(huán))型循環(huán))重復地判斷條件重復地判斷條件p p,若成立,則執(zhí)行計算,若成立,則執(zhí)行計算A A;條件;條件p p不成立不成立時,終止該重復過程,如圖循環(huán)結構時,終止該重復過程,如圖循環(huán)結構1 1所示所示直到型循環(huán)結構直到型循環(huán)結構(Un

38、til(Until型循環(huán)型循環(huán)) ) 先執(zhí)行計算先執(zhí)行計算A A,然后判斷條件,然后判斷條件p p是否成立,如圖循環(huán)結構是否成立,如圖循環(huán)結構2 2所示所示西安電子科技大學 - Xidian University 43do-whiledo-while語句的格式和含義語句的格式和含義ldo-whiledo-while語句的使用格式:語句的使用格式:dodo 循環(huán)體語句循環(huán)體語句A Awhile (while (表達式表達式p);p);ldo-whiledo-while語句的含義:語句的含義:1) 1) 執(zhí)行循環(huán)體語句執(zhí)行循環(huán)體語句A A;2) 2) 計算表達式計算表達式p,p,若表達式的值為若表

39、達式的值為“假假”,則結束,則結束do-whiledo-while語句的執(zhí)行;否則,執(zhí)行循環(huán)體語句語句的執(zhí)行;否則,執(zhí)行循環(huán)體語句A A,然后,然后轉轉1)1);pAab循環(huán)結構循環(huán)結構西安電子科技大學 - Xidian University 44求最大公約數(shù)程序求最大公約數(shù)程序#include main( ) int m, n, r; printf(input two integers:); scanf(%d%d,&m,&n); printf(ngcd = %dn,m);YNr不等于不等于0?輸出輸出m的值的值輸入正整數(shù)輸入正整數(shù)m和和n開始開始結束結束rm被被n除的余數(shù)除的

40、余數(shù)m n; n rdo r = m % n; m = n; n = r; while (r != 0); 西安電子科技大學 - Xidian University 45Y N K 2K不能整除不能整除n?K K+1輸出輸出n是素數(shù)是素數(shù) 輸入輸入n的值的值開始開始結束結束YNK等于等于n?BEGIN input n; /*輸入正整數(shù)輸入正整數(shù)n*/ k2; while (n mod k 0) do k k+1; if (k=n) then print “n是素數(shù)是素數(shù)” else print “n不是素數(shù)不是素數(shù)” END輸出輸出n不是素數(shù)不是素數(shù)判斷素數(shù)算法及程序判斷素數(shù)算法及程序#include main ( ) int k, n; printf(input an integer:); scanf(%d,&n); k = 2; while (n % k != 0) k+; if ( k = n) printf(%d is a prime.n,n); else printf(%d is not a prime.n,n);西安電子科技大學 - Xidian University

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論