C語(yǔ)言-循環(huán)結(jié)構(gòu)_第1頁(yè)
C語(yǔ)言-循環(huán)結(jié)構(gòu)_第2頁(yè)
C語(yǔ)言-循環(huán)結(jié)構(gòu)_第3頁(yè)
C語(yǔ)言-循環(huán)結(jié)構(gòu)_第4頁(yè)
C語(yǔ)言-循環(huán)結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩86頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C Programming LanguageC Programming LanguageC Programming Language C Programming LanguageC Programming LanguageC Programming Language C Programming Language C Programming LanguageC Programming LanguageC Programming LanguageC Programming LanguageC Programming Language循環(huán)變量循環(huán)變量賦初值賦初值循環(huán)終止循環(huán)終止條件條件循環(huán)變量循環(huán)變

2、量控制控制C Programming LanguageC Programming LanguageC Programming LanguageC Programming LanguageC Programming Language輸入輸入abcdefg.輸出輸出abcdefg.C Programming LanguageC Programming LanguageC Programming LanguageC Programming LanguageC Programming Languagenum n1=0,n2=0,n3=0i=1i=30num=num-0num%2n1+n2+n3+n1,

3、n2,n3 num=0YNi+num YNC Programming Languagemain() int i, n1=0,n2=0,n3=0; char num; scanf(“%c”,&num); for (i=1;i=30;i+) num=num-0; if (num=0) n1+; if (num%2) n2+; else n3+; scanf(“%c”,&num); printf(There are %2d evens, %2d odds, %2d zeros ”,n1,n2,n3,);C Programming Language解題思路解題思路 每當(dāng)我們讀入一張選票

4、,只有每當(dāng)我們讀入一張選票,只有6種種情況,將它們加到相應(yīng)的人選上。情況,將它們加到相應(yīng)的人選上。 -1結(jié)束循環(huán)結(jié)束循環(huán)1.case語(yǔ)句作為開關(guān)。語(yǔ)句作為開關(guān)。C Programming Languagemain() 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 1: l_vote+;break; case 2: z_vote+;break; ca

5、se 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); C Programming Languagebit=num%10 num=num/10count=0;輸入輸入numnum!=0輸出輸出num%10count+num=num/10輸出輸出countC Programming Language C Programming Langu

6、ageC Programming Languageloop: sum=sum+i; i+; if(i101) goto loop;C Programming LanguageC Programming Language C Programming Language C Programming Language非00非000非00非0語(yǔ)句語(yǔ)句循循環(huán)環(huán)體體C Programming LanguageC Programming Language例例 求輸入的十個(gè)整數(shù)中正數(shù)個(gè)數(shù)及其平均值。求輸入的十個(gè)整數(shù)中正數(shù)個(gè)數(shù)及其平均值。C Programming Language(1) while() whil

7、e() . (2) do do while( ); . while( );(3) while() do while( ); . (4) for( ; ;) do while(); while() .C Programming Language C Programming Language例例1:main() int i,j; for(i=0; i3;i+) for(j=1;j=4;j+) printf( %d,j); printf(n); 運(yùn)行后,運(yùn)行后,輸出:輸出: 1 2 3 4 1 2 3 4 1 2 3 4例例2:main() int i,j; for(i=0; i3;i+) for(

8、j=1;j=4;j+) printf( %d,j); if( ! (j%3) ) break; printf(n); 運(yùn)行后,運(yùn)行后,輸出:輸出: 1 2 3 1 2 3 1 2 3 C Programming Language例例4: main() int i, j; for( i=0; i3; i+) printf( %d, i ); printf(n ) ; for( i=1; i=4; i+) printf(%d, i ) ; 運(yùn)行后,運(yùn)行后,輸出:輸出:例例3:main() int i, j; for( i=0; i3; i+) for( j=1;j=4;j+) printf( %d

9、,j); if( ! (j%3) ) goto l; printf(n); l: ;運(yùn)行后,運(yùn)行后,輸出:輸出: 1 2 3 0 1 2 1234C Programming LanguageC Programming LanguageC Programming LanguageC Programming Languagefor(i=1;i=5;i+) for(j=1;j=5;j+) printf( ); printf(n“);for(i=1;i=5;i+) for(j=1;j=i;j+) printf( ); printf(n“);for(i=1;i=5;i+) for(j=1;j=5-i+1

10、;j+) printf( ); printf(n“);for(i=1;i=5;i+) for(j=1;ji;j+) printf( ); for(j=1;j=5-i+1;j+) printf( ); printf(n“);for(i=1;i=5;i+) for(j=1;j5-i+1;j+) printf( ); for(j=1;j=i;j+) printf( ); printf(n);C Programming LanguageC Programming LanguageC Programming Language*C Programming Language i=1 i=9k=1k=9-i輸

11、出空格輸出空格k=k+1j=1j=1.0e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(“pi=%10.6fn”,pi);C Programming Language方法一:數(shù)列是正、負(fù)相間的,在這里可用一方法一:數(shù)列是正、負(fù)相間的,在這里可用一個(gè)個(gè)“開關(guān)開關(guān)”變量變量 t 來解決符號(hào)的問題。來解決符號(hào)的問題。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)時(shí)應(yīng)注意在處理循環(huán)時(shí)應(yīng)注意初、終值初、終值的設(shè)定!的設(shè)

12、定!C Programming Language方法二:分別求出方法二:分別求出正項(xiàng)和正項(xiàng)和s1(奇數(shù)倒數(shù)奇數(shù)倒數(shù))與負(fù)項(xiàng)與負(fù)項(xiàng)和和s2(偶數(shù)倒數(shù)偶數(shù)倒數(shù)),則,則s=s1-s2 main() float s,s1=0,s2=0; int i; for(i=1;i101;i+=2) s1+=1.0/ i; s2+=1.0/(i+1); s=s1-s2; printf(s=%fn,s); C Programming Languagef(x)= 4-x2dxbaC Programming LanguageC Programming LanguageC Programming LanguageC P

13、rogramming LanguageC Programming Language例例 枚舉問題枚舉問題或稱為或稱為窮舉法窮舉法。一般用于不。一般用于不定方程求非負(fù)整數(shù)解的問題。它將方程中定方程求非負(fù)整數(shù)解的問題。它將方程中未知數(shù)可以取的到的非負(fù)整數(shù)逐個(gè)進(jìn)行驗(yàn)未知數(shù)可以取的到的非負(fù)整數(shù)逐個(gè)進(jìn)行驗(yàn)證找出所有滿足方程的解。證找出所有滿足方程的解。例如:例如:一元人民幣兌換成一元人民幣兌換成1分、分、2分、分、5分共有分共有多少種方法?多少種方法?若若5分、分、2分、分、1分的個(gè)數(shù)分別為分的個(gè)數(shù)分別為x個(gè)、個(gè)、y個(gè)、個(gè)、z 個(gè),則個(gè),則x的取值為的取值為020,y的取值為的取值為050,z的取值為的

14、取值為0100。于是有不定方程:于是有不定方程: 5x+2y+z=100。C Programming LanguageC Programming Language 上面程序的循環(huán)次數(shù)超過上面程序的循環(huán)次數(shù)超過10萬次,且大量的循環(huán)萬次,且大量的循環(huán)都不滿足方程??蓪?duì)程序進(jìn)行優(yōu)化,由于隨著都不滿足方程??蓪?duì)程序進(jìn)行優(yōu)化,由于隨著5分個(gè)數(shù)分個(gè)數(shù)的增加,的增加,2分個(gè)數(shù)就會(huì)減少,因此循環(huán)變量分個(gè)數(shù)就會(huì)減少,因此循環(huán)變量j可控制在可控制在(100-5i)/2以內(nèi)以內(nèi),這樣使得這樣使得5i+2j=100。若不足。若不足100則補(bǔ)充則補(bǔ)充1分,分,將問題轉(zhuǎn)換成為求循環(huán)次數(shù)的問題了將問題轉(zhuǎn)換成為求循環(huán)次數(shù)的

15、問題了。main() int i,j,m=0; for(i=0;i21;i+) for(j=0;j=(100-5*i)/2;j+) m+=1; printf(m=%dn,m);因?yàn)樵摬欢ǚ匠讨校驗(yàn)樵摬欢ǚ匠讨?,如果有兩個(gè)未知數(shù)確如果有兩個(gè)未知數(shù)確定后,第三個(gè)未知數(shù)定后,第三個(gè)未知數(shù)也隨之確定。即確定也隨之確定。即確定了一種分法。例如:了一種分法。例如:i=20時(shí),時(shí),j=0i=19時(shí),時(shí),j=0,1,2i=18時(shí),時(shí),j=0,1,2,3,4,5C Programming LanguageAZ.a.z.C Programming LanguageabdEgWefhIkAC Programmin

16、g Languagemain() 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

17、 values is %f”, counter,average) 23.9 85.68 227E02 0.00863 7593.44 71 14.7E-05 66 -1The average of 9 values is 2568.336412C Programming Language* 本例還是要考慮每行的空格數(shù)、和星本例還是要考慮每行的空格數(shù)、和星號(hào)數(shù)問題,但要關(guān)注號(hào)數(shù)問題,但要關(guān)注空格數(shù)與星號(hào)數(shù)空格數(shù)與星號(hào)數(shù)在增在增加到一定的時(shí)候又要減少的規(guī)律。加到一定的時(shí)候又要減少的規(guī)律。C Programming Language #include main() int i,j,k; for(i=

18、 -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); 注意初、終值注意初、終值從從-2到到2的目的目的。的。fabs(i)變化規(guī)律是:變化規(guī)律是:2,1,0,1,2。 每行的空格數(shù)是:每行的空格數(shù)是:20,19,18,19,20。每行的星號(hào)數(shù)是:每行的星號(hào)數(shù)是:1,2,3,2,1。for(i=0;i4;i+) for(j=0;j20-i;j+) printf(“ ”); /*空格遞減空格遞減*/ for(k=0;k2*i+1;k+) printf(“*”);

19、 /*星號(hào)遞增星號(hào)遞增 */ C Programming LanguageC Programming Languagemain() long i,a,b,c,e,d; flaot f,g; i=95859; 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

20、%d”,(i-95859)/7);i+; 該程序需要執(zhí)行循環(huán)該程序需要執(zhí)行循環(huán)99999-95859次!次!C Programming Language/*第二種算法第二種算法*/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*100

21、0-c*100-d*10; if (a=e) and (b=d) printf(“The speed is %d”,i); C Programming Language/*第三種算法第三種算法*/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

22、)=0) printf(“The speed is %d”,distance/7);該程序需要循環(huán)該程序需要循環(huán)(9-6)*10+1次!次!C Programming Language分析分析:( 1 ) 因 為 新 出 現(xiàn) 的 數(shù) (因 為 新 出 現(xiàn) 的 數(shù) ( d c b c d ) 是 :) 是 :個(gè)位數(shù)字(個(gè)位數(shù)字(d)與萬位數(shù)字、十位數(shù)字()與萬位數(shù)字、十位數(shù)字(c)與)與千位數(shù)字相同,而百位數(shù)字(千位數(shù)字相同,而百位數(shù)字(b)只能是)只能是,表示萬位和千位的變量表示萬位和千位的變量a取值范圍為:取值范圍為:9599。所以,要將所以,要將a分隔出的十位數(shù)字和個(gè)位數(shù)字分別分隔出的十位

23、數(shù)字和個(gè)位數(shù)字分別賦予賦予d和和c 。(2)約束條件是:公里數(shù)對(duì)稱且車速為整數(shù)。)約束條件是:公里數(shù)對(duì)稱且車速為整數(shù)。C Programming Language循環(huán)循環(huán)a=95;a=99;a+求出萬、千位上的數(shù)字求出萬、千位上的數(shù)字循環(huán)百位數(shù)字循環(huán)百位數(shù)字b=0;b=99找出對(duì)稱的數(shù)字找出對(duì)稱的數(shù)字計(jì)算路程、車速計(jì)算路程、車速車速為整且路程車速為整且路程 為正為正跳出并輸出跳出并輸出C Programming Languagemain() int a,b,c,d,n,v; long int m; for(a=95;a=99;a+) d=a/10; c=a-d*10; /*分別求出萬、千位上的數(shù)字分別求

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論