武漢理工大學(xué)C語言課件 c5第五章 循環(huán)結(jié)構(gòu)1_第1頁
武漢理工大學(xué)C語言課件 c5第五章 循環(huán)結(jié)構(gòu)1_第2頁
武漢理工大學(xué)C語言課件 c5第五章 循環(huán)結(jié)構(gòu)1_第3頁
武漢理工大學(xué)C語言課件 c5第五章 循環(huán)結(jié)構(gòu)1_第4頁
武漢理工大學(xué)C語言課件 c5第五章 循環(huán)結(jié)構(gòu)1_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、循環(huán)結(jié)構(gòu)(jigu)程序設(shè)計C 語言(yyn)程序設(shè)計 Lecture 51共七十七頁循環(huán)(xnhun)結(jié)構(gòu) 循環(huán):就是在給定的條件成立時反復(fù)執(zhí)行某一程序段,被反復(fù)執(zhí)行的程序段稱為循環(huán)體。 在C語言中可以用以下(yxi)語句來實現(xiàn)循環(huán):1、用while語句;(“當(dāng)”循環(huán))2、用do-while語句;(“直到”循環(huán))3、用for語句;(計數(shù)循環(huán))4、用goto語句和if語句構(gòu)成循環(huán)。2共七十七頁5.1 while語句(yj) 1、while 語句 常稱為(chn wi)“當(dāng)型”循環(huán)語句。 循環(huán)體非零零表達(dá)式3共七十七頁 2 、while 語句的形式: while (表達(dá)式) 循環(huán)體;特點(diǎn):先判斷

2、表達(dá)式,后執(zhí)行語句。說明:循環(huán)體有可能(knng)一次也不執(zhí)行循環(huán)體可為任意類型語句下列情況,退出while循環(huán)條件表達(dá)式不成立(為零)循環(huán)體內(nèi)遇break,return,goto無限循環(huán): while(1) 循環(huán)體;4共七十七頁例 (ch5_01.c)求1+2+3+4+5+100。#include main() int i=1,sum=0; while(i=100) sum+=i; i+; printf(%d,sum);循環(huán)(xnhun)初值循環(huán)(xnhun)終值循環(huán)變量增值 循環(huán)條件循環(huán)體5共七十七頁break語句一般形式: break;功能(gngnng):跳出所在的多分支switch語

3、句跳出所在的while、do-while、for循環(huán)語句(提前結(jié)束循環(huán))。continue語句一般形式: continue;功能:提前結(jié)束本次(本輪)循環(huán)體的執(zhí)行,接著進(jìn)行下一次循環(huán)條件的判別。6共七十七頁for( e1;e2;e3) if(e) continue; break與continue的區(qū)別(qbi)for( e1;e2;e3) if(e) break; 計算e1e2語句非00e非0語句計算e30break語句0計算e1e2語句非00e非0語句計算e3continue語句循環(huán)體7共七十七頁例 (ch5_02.c)顯示(xinsh)110的平方 #include main() int

4、i=1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+; (total.c;totalb.c;total5w.c;fib.c;calc3.c)運(yùn)行(ynxng)結(jié)果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=1008共七十七頁5.2 do-while語句(yj)1、do-while語句(yj) 常稱為“直到型”循環(huán)語句。 循環(huán)體非00表達(dá)式9共七十七頁2、do-while的形式: do 循環(huán)體; while (表達(dá)式);特點(diǎn)(tdin):先執(zhí)行,后判斷。說明:至少執(zhí)行一次循環(huán)體dowh

5、ile可轉(zhuǎn)化成while結(jié)構(gòu)例:用dowhile求 1+2+3+4+5+100。 (ch5_03.c) #include main() int i,sum=0; i=1; do sum+=i; i+; while(i=100); printf(%d,sum); 10共七十七頁 1. 循環(huán)體如果包含一個以上的語句,應(yīng)該用花括號括起來(q li),以復(fù)合語句形式出現(xiàn)。 2. 循環(huán)體中應(yīng)有使循環(huán)趨于結(jié)束的語句。例:分析下列三個程序段 使用循環(huán)(xnhun)結(jié)構(gòu)要注意:i=1; while(i=100) putchar(*); i+; i=1; putchar(*);i+; i=1;while(i=1

6、00);putchar(*); i+;11共七十七頁 當(dāng)循環(huán)(xnhun)結(jié)構(gòu):main () int i,sum=0;i=1; while(i=100) sum=sum+i; i+ ; printf(“%dn”,sum); 直到(zhdo)循環(huán)結(jié)構(gòu):main()int i,sum=0;i=1; do sum=sum+i;i+; while(i=100);printf(“%dn”,sum);12共七十七頁5.3 for語句(yj)1、C語言(yyn)中最靈活、最復(fù)雜的循環(huán)語句;表達(dá)式1表達(dá)式2循環(huán)體語句表達(dá)式3 可以用于循環(huán)次數(shù)確定的情況; 可以用于循環(huán)次數(shù)不確定的情況; 可實現(xiàn)while和d

7、o-while語句所有功能。非0013共七十七頁2、for的形式:for (表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體 說明:for語句中expr1, expr2 ,expr3 類型任意,都可省略,但分號不可省.無限(wxin)循環(huán): for ( ; ; )for語句可以轉(zhuǎn)換成while結(jié)構(gòu) 循環(huán)變量賦初值循環(huán)終止條件循環(huán)變量控制14共七十七頁 sum=0; for(i=1;i=100;i+) sum=sum+i; 它相當(dāng)于以下(yxi)語句:i=1; while (i=100) sum=sum+i; i+; 表達(dá)式1;while(表達(dá)式2) 語句(yj); 表達(dá)式3; 15共七十七頁 3、for

8、語句(yj)中表達(dá)式的省略(1)for語句一般形式中的“表達(dá)式1”可以省略;如: sum=0;i=1; for ( ; i100) break;16共七十七頁(3)表達(dá)式3也可以省略(shngl),但此時保證循環(huán)能正常結(jié)束。如:for(sum=0,i=1;i=100;) sum=sum+i; i+; (4) 可以省略表達(dá)式1和表達(dá)式3,只有表達(dá)式2。如:i=1; sum=0;i=1;sum=0; for (;i=100;) while (i100) break; sum=sum+i; i+; 18共七十七頁(6)循環(huán)體為空語句 對for語句,循環(huán)體為空語句的一般形式(xngsh)為: for

9、(表達(dá)式1;表達(dá)式2;表達(dá)式3) ;如:for(sum=0,i=1;i=100;sum+=i, i+) ;又如: 要在顯示器上復(fù)制輸入的字符,輸入的字符為.時, 結(jié)束循環(huán)。 while(putchar(getchar( ) )!=. ) ;輸入(shr)abcdefg.輸出abcdefg.19共七十七頁例:#include main( ) int i=0; for(;i10;putchar(a+i),i+); 例:#include main( ) int i=0; for(;i10;) putchar(a+(i+); 例:#include main( ) int i; for(i=0;i10;

10、i+) putchar(a+i); 運(yùn)行(ynxng)結(jié)果:abcdefghij例:#include main( ) int i=0; for(;i10;i+) putchar(a+i); 20共七十七頁#includemain() char c; for(;(c=getchar()!=n;) printf(%c ,c);main() int i,j,k; for(i=1,j=100;ib & xy ;)3.字符表達(dá)式: for (; (c=getchar() != n;) printf(“%c”,c);(cal8.c;totl5f.c;cent.c)22共七十七頁解題思路 每當(dāng)我們讀入一張選

11、票,只有6種情況,將它們加到相應(yīng)的人選上。 -1結(jié)束循環(huán) case語句(yj)作為開關(guān)。例 統(tǒng)計選票。現(xiàn)有選票如下3,1,2,1,1,3,3,2,1,2,3,3,2,1,1, 3,2,0,1,4,-1. -1是結(jié)束標(biāo)志(biozh)。設(shè)1選李, 2選張,3選王,0和4為廢票,誰會當(dāng)選?23共七十七頁main() int vote,l_vote,z_vote,w_vote, invalidvote; l_vote=0; z_vote=0; w_vote=0; invalidvote=0; scanf(“%d”,&vote); while (vote!=-1) switch (vote) case

12、 1: l_vote+;break; case 2: z_vote+;break; case 3: w_vote+;break; case 0: case 4: invalidvote+;break; scanf(“%d”,&vote); printf(Li%2d,zhang%d2d,wang%2d,invalid%2d”, l_vote,z_vote,w_vote,invalidvote);24共七十七頁例 輸入一個整數(shù),計算它的位數(shù).并反向輸出.分析:設(shè)一個數(shù)13579,一位一位地切下末位循環(huán)結(jié)束條件: num=0;同時(tngsh)計數(shù) count=count+1;135 1357 13

13、579 7bitbit 9 5bit13bit1 bitbit=num%10num=num/101357 9135 713 5count=0;輸入numnum!=0輸出num%10count+num=num/10輸出count 31 325共七十七頁main() long int num; int count = 0; printf(“Please enter an integer:n”); scanf(“%ld”,&num); do printf(“%d”,num%10);num = num /10;count + +; while (num !=0 ); printf(“ %d digit

14、s.”, count); Please enter an integer: 3829 9283 4 digits.26共七十七頁5.4 goto語句(yj)1、 無條件轉(zhuǎn)移語句; 形式(xngsh):goto 標(biāo)號;2、有標(biāo)號的語句稱為標(biāo)號語句; 形式: 標(biāo)號:語句;3、 goto語句在使用時只能轉(zhuǎn)移到goto所在的函數(shù)內(nèi)的標(biāo)號處,不能轉(zhuǎn)移到該函數(shù)外;4、 可以從多重循環(huán)的內(nèi)層轉(zhuǎn)移到最外層,而break只能跳出一層循環(huán)。滿足標(biāo)識符的規(guī)定27共七十七頁 main() int i=1,sum=0; loop: if (i101) sum=sum +i; i+; goto loop; printf(

15、“SUM = %fn”,sum); loop: sum=sum+i; i+; if(i101) goto loop;28共七十七頁(1) while() while() . (2) do do while( ); . while( );(3) while() do while( ); . 5.6 循環(huán)(xnhun)的嵌套三種循環(huán)可互相嵌套,層數(shù)不限外層循環(huán)可包含兩個以上內(nèi)循環(huán)嵌套循環(huán)的執(zhí)行流程(lichng)嵌套循環(huán)的跳轉(zhuǎn)禁止:從外層跳入內(nèi)層跳入同層的另一循環(huán)(4) for( ; ;) do while(); while() .內(nèi)循環(huán)外循環(huán)內(nèi)循環(huán)29共七十七頁()當(dāng)外層循環(huán)結(jié)構(gòu)每執(zhí)行一次循環(huán)時

16、,內(nèi)層循環(huán)結(jié)構(gòu)在一般情況下要從循環(huán)的開始到循環(huán)的正常結(jié)束從頭到尾執(zhí)行一遍。 例1 ()在內(nèi)層循環(huán)結(jié)構(gòu)中使用break語句可以提前結(jié)束本次內(nèi)層循環(huán)結(jié)構(gòu)的執(zhí)行,而不影響外層循環(huán)結(jié)構(gòu)的繼續(xù)執(zhí)行。例2 ()如果程序因某種原因需要從內(nèi)層循環(huán)體跳出(tio ch)整個循環(huán)結(jié)構(gòu),此時才可考慮使用 goto 語句。例3 ()對于并列的循環(huán)結(jié)構(gòu),控制循環(huán)執(zhí)行的變量名字可以相同。在嵌套循環(huán)結(jié)構(gòu)中,內(nèi)、外層控制循環(huán)執(zhí)行的變量名字不能相同。 例4(nestfor.c) 對于(duy)嵌套循環(huán)結(jié)構(gòu)的幾點(diǎn)說明:30共七十七頁例1:main() int i,j; for(i=0; i3;i+) for(j=1;j=4;j+

17、) printf( %d,j); printf(n); 運(yùn)行(ynxng)后輸出: 1 2 3 4 1 2 3 4 1 2 3 4例2:main() int i,j; for(i=0; i3;i+) for(j=1;j=4;j+) printf( %d,j); if( ! (j%3) ) break; printf(n); 運(yùn)行(ynxng)后輸出: 1 2 3 1 2 3 1 2 3 31共七十七頁例4: main() int i, j; for( i=0; i3; i+) printf( %d, i ); printf(n ) ; for( i=1; i=4; i+) printf(%d,

18、 i ) ; 運(yùn)行(ynxng)后輸出:例3:main() int i, j; for( i=0; i3; i+) for( j=1;j=4;j+) printf( %d,j); if( ! (j%3) ) goto K; printf(n); K: ;運(yùn)行(ynxng)后輸出: 1 2 3 0 1 2 123432共七十七頁分析(fnx):求累加和ss=0for(k=1;k=n;k+) 求累乘積tk s=s+tk求累乘積tk=k!tk =1for(i=1;i=k;i+) tk=tk*imain( )int i,k;long s, t; printf(nInput n:);scanf(%d,&

19、n);s=0;for(k=1;k=n;k+) t=1; for(i=1;i=k;i+) t=t*i; s=s+t;printf(ns=%ld,s);Input n:5s=153 例 求1!+2!+n! (ch5_07.c) 內(nèi)外層循環(huán)控制變量不要同名。33共七十七頁12345678912436991827364554637281.例(ch5_08.c)循環(huán)(xnhun)嵌套,輸出九九表。ij34共七十七頁i=9輸出i*j假(0)真(非0)i=1j+j=1j=i真(非0)假(0)i+外循環(huán)內(nèi)循環(huán)35共七十七頁#include main() int i,j; for(i=1;i=9;i+) pri

20、ntf(%4d,i); printf(n-n); for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%4d,i*j); printf(n);36共七十七頁5.7 循環(huán)程序設(shè)計(chn x sh j)的問題寫循環(huán),先要發(fā)現(xiàn)循環(huán)。注意計算中的重復(fù)性動作,引進(jìn)循環(huán)可能統(tǒng)一描述和處理。 重復(fù)動作的常見例子(l zi): 累積一批可按規(guī)律算出的數(shù)據(jù)(如累加等); 反復(fù)從一個結(jié)果算出下一結(jié)果(遞推等); 對一批數(shù)據(jù)做同樣的加工處理;等。37共七十七頁寫循環(huán)結(jié)構(gòu)(jigu)時要考慮和解決的問題:循環(huán)涉及哪些變量,引進(jìn)什么(shn me)臨時性變量? 這些變量在循環(huán)正式開始前應(yīng)給什

21、么初值?循環(huán)如何開始? 每次循環(huán)中變量的值應(yīng)如何改變? 什么情況下繼續(xù)循環(huán)(什么情況下終止)? 循環(huán)終止后如何得到所需結(jié)果?38共七十七頁循環(huán)(xnhun)中的幾種變量循環(huán)(xnhun)中常出現(xiàn)幾類變量,了解這些有助于思考和分析。這也是寫循環(huán)(xnhun)程序的經(jīng)驗總結(jié)。 1)循環(huán)控制變量(循環(huán)變量):循環(huán)前設(shè)初值,循環(huán)遞增/遞減,達(dá)到/超過界限時循環(huán)結(jié)束??刂蒲h(huán)的進(jìn)行/結(jié)束。 for中常有這類變量。 for(n = 0; n 10; n+). for(n = 2; n 52; n += 4) .39共七十七頁2)累積變量:循環(huán)中常用(chn yn)+=或*=等更新。初值常用運(yùn)算的單位元(加

22、用0;乘用1為初值)。循環(huán)結(jié)束時變量終值被作為循環(huán)計算結(jié)果。 3)遞推變量:前兩類變量的推廣形式。復(fù)雜循環(huán)常用幾個協(xié)同的變量,每次由一個/幾個變量推出一個新值,其余依次更新。 對變量x1、x2、x3,循環(huán)體可能有序列: x1 = x0.; x2 = x1.; x3 = . x1 . x2 .;40共七十七頁本章(bn zhn)重點(diǎn)三種循環(huán)語句while, do-while和for建立循環(huán)通常有以下情況:1. 給定次數(shù), for比較適用 for(i=1;i100;i+)2. 給定條件, while比較適用 while(x+y)a &c A& cZ)41共七十七頁本章(bn zhn)作業(yè)求任意個電

23、阻并聯(lián)后的總電阻。(1/R=1/R1+1/R2+1/Rn)輸入(shr)兩個正整數(shù)a和b,其中ab,輸出a和b組成的閉區(qū)間中的所有偶數(shù)。有一個數(shù),用3除余2,用5除余3,用7除2,請找出滿足條件的最小數(shù)。請編寫程序,把數(shù)字轉(zhuǎn)換成英文,如:895轉(zhuǎn)換成“eight nine five”。42共七十七頁編寫程序,其功能是:求出能整除x且不是偶數(shù)的各整數(shù)(x由鍵盤輸入),并將它們輸出。例如,若x 中的值為:30,則有4個數(shù)符合要求,它們是1,3,5,15。有一個(y )數(shù),用3除余2,用5除余3,用7除2,請找出滿足條件的最小數(shù)。編程打印出如下矩陣:(51510)525125062503125.00

24、09765625提示(tsh)43共七十七頁.main() int k,i,s=0,t=4; for(k=3;k=10;k+) t=t*2; s+=t; printf(s=%dn,s);#include math.hmain()int k,i,s=0,t=4;for(k=3;kb)t=a;a=b;b=t;for(x=a;x1000)break; printf(s=%d,n=%d,s,n);方法(fngf)一方法(fngf)二main() int a,n,s; s=0,n=0; for(a=1; s=1000;a+) n+;s+=a; printf(s=%d,n=%d,s,n);46共七十七頁5

25、.main()int i,n=0;float score30,aver=0.0;for(i=0;i100|scorei0) printf(Error! );goto aa; aver+=scorei; aver=aver/30; for(i=0;iaver)n+;printf(aver=%f,n=%dn,aver,n); 求全班30名同學(xué)的某門功課(gngk)在平均成績以上的人數(shù)。47共七十七頁7.main()int i;long n=1;for(i=1;i=1.0e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(“pi=%10.6fn”,pi

26、);49共七十七頁方法一:數(shù)列是正、負(fù)相間的,在這里可用一個“開關(guān)(kigun)”變量 t 來解決符號的問題。main() float s=0; int t=1,i ; for(i=1;i101;i+) s+=1.*t / i ; t= -t ; printf(s=%fn,s); 在處理循環(huán)時應(yīng)注意初、終值的設(shè)定!例 求 s=1-1/2+1/3-1/4+ +1/99-1/100。50共七十七頁方法二:分別(fnbi)求出正項和s1(奇數(shù)倒數(shù))與負(fù)項和s2(偶數(shù)倒數(shù)),則s=s1-s2 main() float s,s1=0,s2=0; int i; for(i=1;i101;i+=2) s1+

27、=1.0/ i; s2+=1.0/(i+1); s=s1-s2; printf(s=%fn,s); 51共七十七頁例 梯形(txng)法求數(shù)值積分。0yxaa+ha+iha+(i+1)hbf(x)f(x)= (4-x2)dxba 52共七十七頁main() float a,b,h,n1,n2,s=0;int i;printf(“請輸入(shr)積分限a和b:”); scanf(“%f%f”,&a,&b);h=(b-a)/1000;for(i=0;i1000;i+) n1=4-(a+i*h)*(a+i*h); n2=4-(a+(i+1)*h)*(a+(i+1)*h); s+=(n1+n2)*h/

28、2; printf(“s=%10.2fn”,s);53共七十七頁#include #define GOAL 39 main() int i; printf(“Please input a integer number:n); doscanf(%d,&i); if(iGOAL) printf(%d is too big,input again.n,i);else if(iGOAL) printf(%d is too samll,input again.n,i); else printf(OK!n); while(i!=GOAL); 例 猜數(shù)游戲(yux)的最簡化版。54共七十七頁#include

29、 #include main() int i; int GOAL,num=0; printf(Please input a number from 0 to 99, or -1 to exit:n); GOAL=random(100); /*產(chǎn)生(chnshng)0到99的隨機(jī)數(shù)*/ do scanf(%d,&i); if(i=-1) printf(nExit game!); break; 55共七十七頁num+;if(iGOAL) printf(%d is too big, input again.n,i);else if(iGOAL) printf(%d is too samll, inp

30、ut again.n,i); else printf(OK!n); printf(You take %d times to pass!,num); while(i!=GOAL);56共七十七頁例 枚舉問題或稱為窮舉法。一般用于不定方程求非負(fù)整數(shù)解的問題。它將方程中未知數(shù)可以取的到的非負(fù)整數(shù)逐個進(jìn)行(jnxng)驗證找出所有滿足方程的解。例如:一元人民幣兌換成1分、2分、5分共有多少種方法?若5分、2分、1分的個數(shù)分別為x個、y個、z 個,則x的取值為020,y的取值為050,z的取值為0100。于是有不定方程: 5x+2y+z=100。57共七十七頁main() int i,j,k,m=0;

31、for(i=0;i21;i+) for(j=0;j51;j+) for(k=0;k101;k+) if(5*i+2*j+k=100) m+=1; printf(m=%dn,m); 運(yùn)行(ynxng)結(jié)果:m=54130考慮程序(chngx)的優(yōu)化問題?58共七十七頁 上面程序的循環(huán)次數(shù)超過(chogu)10萬次,且大量的循環(huán)都不滿足方程??蓪Τ绦蜻M(jìn)行優(yōu)化,由于隨著5分個數(shù)的增加,2分個數(shù)就會減少,因此循環(huán)變量j可控制在(100-5i)/2以內(nèi),這樣使得5i+2j=100。若不足100則補(bǔ)充1分,將問題轉(zhuǎn)換成為求循環(huán)次數(shù)的問題了。main() int i,j,m=0; for(i=0;i21;i

32、+) for(j=0;jE, W-A。非字母字符忽略。思路:1.建立循環(huán), 循環(huán)結(jié)束以輸入回車符為準(zhǔn) while (c=getchar()!=n)2. 判斷輸入是否是字符,否則忽略 if (c=a & c=A & cZ & cz) c=c-26AZ.a.z.60共七十七頁#include “stdio.h”main() char c; while (c=getchar()!=n) if (c=a & c=A & cZ & cz) c=c-26; printf(“%c”,c); abdEgWefhIkA61共七十七頁例 輸入若干數(shù)字,-1為輸入結(jié)束標(biāo)志(biozh),計算它們的平均數(shù)。main(

33、) float value, total, average; int counter; total=0;counter=0; average = 0; scanf (“%d”,&value); while (value !=-1) total = total + value; counter + +; scanf (“%f”,&value); if (counter = 0) printf (“No data entered.n”); else average = total / counter; printf (The average of %d values is %f”, counter

34、,average) 23.9 85.68 227E02 0.00863 7593.44 71 14.7E-05 66 -1The average of 9 values is 2568.33641262共七十七頁 本例還是(hi shi)要考慮每行的空格數(shù)、和星號數(shù)問題,但要關(guān)注空格數(shù)與星號數(shù)在增加到一定的時候又要減少的規(guī)律。例 用循環(huán)語句(yj)顯示下面的圖案。63共七十七頁for(i=0;i4;i+) for(j=0;j20-i;j+) printf(“ ”); /*空格遞減(djin)*/ for(k=0;k2*i+1;k+) printf(“*”); /*星號遞增 */ #includ

35、e main() int i,j,k; for(i= -2;i=2;i+) for(j=1;j=18+fabs(i);j+) printf( ); for(k=1;k=5-2*fabs(i);k+) printf(*); printf(n); fabs(i)變化規(guī)律是:2,1,0,1,2。 每行的空格數(shù)是:20,19,18,19,20。每行的星號數(shù)是:1,2,3,2,1。注意(zh y)初終值從-2到2的目的。64共七十七頁例 汽車(qch)里程表上的讀數(shù)是95859,7小時之后里程表的讀數(shù)是一個對稱數(shù)(最大是5位數(shù)),問汽車的速度(是一個整數(shù))。解題思路:檢查所有的在95859到99999之

36、間的對稱數(shù),如果它與95859的差能被7整除,則商是速度。65共七十七頁/* 第一種算法(sun f)*/main() long i95859,a,b,c,e,d; flaot f,g; while (i=99999 ) a=i/10000; b=(i-a*10000)/1000; c=(i-a*10000-b*1000)/100; d=(i-a*10000-b*1000-c*100)/10; e=i-a*10000-b*1000-c*100-d*10; if (a=e) & (b=d) if(i-95859)%7)=0) printf(“The speed is %d”,(i-95859)/

37、7);i+; 該程序需要執(zhí)行(zhxng)循環(huán)99999-95859次!66共七十七頁/*第二種算法(sun f)*/main() long i,distance,a,b,c,d; (for i=1;i=200;i+) distance=95859+i*7; a=distance/10000 b=(distance-a*10000)/1000; c=(distance-a*10000-b*1000)/100; d=(distance-a*10000-b*1000-c*100)/10; e=distance-a*10000-b*1000-c*100-d*10; if (a=e) and (b=d

38、) printf(“The speed is %d”,i); 循環(huán)(xnhun)次數(shù)為 200-2067共七十七頁/*第三種算法(sun f)*/main() long i,j,distance,speed:real; for(i=6;i=9;i+) for (j=0;j=9;j+) distance=90000+i*1000+j*100+i*10+9;if (distanc%7)=0) printf(“The speed is %d”,distance/7); distance = distance-95959 if (distance%7)=0) printf(“The speed is

39、%d”,distance/7);該程序(chngx)需要循環(huán)(9-6)*10+1次!68共七十七頁分析:(1)因為新出現(xiàn)的數(shù)(dcbcd)是:個位數(shù)字(d)與萬位數(shù)字、十位數(shù)字(c)與千位數(shù)字相同,而百位數(shù)字(b)只能是,表示萬位和千位的變量a取值范圍為:9599。所以,要將a分隔出的十位數(shù)字和個位數(shù)字分別(fnbi)賦予d和c 。(2)約束條件是:公里數(shù)對稱且車速為整數(shù)。注意:95859超過了整型量的范圍(fnwi),應(yīng)使用長整型量。69共七十七頁循環(huán)a=95;a=99;a+求出萬、千位上的數(shù)字循環(huán)百位數(shù)字b=0;b=99找出對稱的數(shù)字計算路程、車速車速為整且路程 為正跳出并輸出非0070共七十七頁main() int a,b,c,d,n,v; long int m; for(a=95;a=99;a+) d=a/10; c=a-d*10; /*分別(fnbi)求出萬、千位上的數(shù)字 */ for(b=0;b0) goto loop; loop: printf(v=%dkm/h m=%ldk

溫馨提示

  • 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

提交評論