




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《C語言程序設計》
第4章循環結構程序設計1精選課件【例題】輸入一個正整數n,把它分解成1及其質因子相乘的形式。如:19=1×1936=1×2×2×3×31024=1×2×2×2×2×2×2×2×2×2×2分析:本題即找出所有能整除n的數,可以嘗試分別用2到n的整數去除n,如某時刻的值為i,能除盡n則取出此時的數i,再把n除以i的商作為新的n,但要注意下次嘗試的時候還應該用此時的i去除n(因為如2是8的一個因子,同時也是8/2=4的一個因子)。如n不能被i整除則用i+1去除n看能否整除,如此反復直到i的值為n為止。2精選課件程序如下:main(){longi,n;printf("Inputn:");scanf("%ld",&n);printf("%ld=1",n);for(i=2;i<=n;i++)/**//**/getch();}{if(n%i==0){printf("*%ld",i);n/=i;i--;}}3精選課件【例】古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總對數為多少?(40個月后)分析:兔子對數的規律為數列1,1,2,3,5,8,13,21……,即從第三個數開始其值都為前兩個數之和。
main(){longm1=1,m2=1;inti;for(i=0;i<20;i++){if(i%2==0)/*目的每輸出2組數后加一個回車符*/printf("\n");printf("%-12ld%-12ld",m1,m2);/**//**/}getch();}m1=m1+m2;m2=m1+m2;4精選課件【例】題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。最大公約數算法也稱“輾轉相除法”,又稱歐幾里得算法”,其算法如下:
1.a÷b(a>=b),令r為所得余數(0≤r<b)若r=0,算法結束;b即為答案。
2.互換:置a←b,b←r,并返回第一步。5精選課件main(){intm=0,n=0,r,t,a,b;scanf(“%d%d”,&m,&n);a=m;b=n;/**//**//*實現大數在前小數在后*//**//**//*實現輾轉相除算法*/
if(a<b){t=a;a=b;b=t;}r=a%b;while(r){a=b;b=r;r=a%b;}printf("%d&%dgreatestcommondivisoris%d",m,n,b);printf("%d&%dlowestcommonmultipleis%ld.",m,n,(long)m*n/b);getch();6精選課件【例】從鍵盤任意輸入一個正數n,判斷其是不是素數(因子只有1及其本身,其值大于1的自然數)。#include<math.h>main(){intn,i,k;clrscr();printf("Inputn(n>=2):");scanf("%d",&n);/**//**/}k=sqrt(n);for(i=2;i<=k;i++){if(n%i==0)break;}if(i==k+1&&n>1)printf("%disaprimenumber.",n);elseprintf("%disnotaprimenumber.",n);getch();7精選課件continue語句【例】分析如下程序,給出程序執行結果。main(){inti;for(i=0;i<10;i++){if(i%2==0)continue;printf("%d",i);}getch();}8精選課件【例】隨機輸入多個字符,直到輸入回車結束,統計鍵入空格字符的次數。#include<stdio.h>main(){intcount=0;charch;printf("Inputchars:");do{/**/
/**/}while(/**//**/);printf("Thenumberofspacesis%d.\n",count);getch();}ch=getchar();if(ch!='')continue;count++;}ch!='\n'9精選課件1、以下程序段運行后變量a的值為(
)。
inti=1,a=0;for(;i<3;i++) {continue;a+=i;}A.6 B.3 C.0 D.5課堂小測試10精選課件2、以下程序段運行后變量n的值為(
)。inti=1,n=1;for(;i<3;i++)
{continue;n=n+i;}A.4 B.3 C.2 D.1課堂小測試11精選課件3、以下程序的運行結果是(
)。
voidmain(){ints=0,i=0;while(i<8){i++;if(i%2==0)continue;
s+=i;}printf("%d\n",s);}A.36 B.7 C.16 D.12課堂小測試12精選課件4、以下程序的運行結果是(
)。voidmain(
){intsum=0,item=0;while(item<5){item++;if(item==2)
continue;sum+=item;}printf("%d\n",sum);}A.10 B.13 C.15 D.1課堂小測試13精選課件4.5循環結構的嵌套一個循環體內又包含另一個完整的循環結構稱為循環的嵌套。內嵌的循環中還可以嵌套循環,這就是多層循環。三種循環(while循環、do-while循環和for循環)可以互相嵌套。正常情況下:應先執行內層的循環體操作,然后是外層循環。例如:對于雙重循環,內層循環被執行的次數應為:內層次數×外層次數。14精選課件4.5循環結構的嵌套1:for(;;){……for(;;){……}}2:for(;;){……while(){……}}3:for(;;){……do{……}while()}15精選課件4.5循環結構的嵌套4:while(){……while(){……}}5:while(){……for(;;){……}}6:while(){……do{……}while()}16精選課件4.5循環結構的嵌套7:do{……do{……}while()}while()8:do{……for(;;){……}}while()9:do{……while(){……}}while()17精選課件4.5循環結構的嵌套求該程序的運行結果s是多少?循環多少次?main(){inti,j,s=0;for(i=1;i<=3;i++){for(j=1;j<=2;j++)s=s+i+j;}printf(“%d”,s);}18精選課件【例】編程實現在屏幕上輸出九九乘法口訣。1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81
分析:分行與列考慮,可用i控制行,j控制列,共9行,且每行的等式的個數與所在行的序數相同,即第i行就有i列個等式。19精選課件【例】編程實現在屏幕上輸出九九乘法口訣。main(){inti,j;for(/**//**/){for(/**//**/){printf("%d*%d=%d\t",j,i,i*j);}printf("\n");}getch();}i=1;i<=9;i++j=1;j<=i;j++20精選課件【例】輸出1000內所有的素數,要求每行輸出15個數main(){inti,j,k,n=0;for(i=2;i<=1000;i++){k=sqrt(i);for(j=2;j<=k;j++)if(/**//**/)break;}if(/**//**/){printf("%5d",i);n++;if(/**//**/)printf("\n");}}getch();}n%15==0j==k+1i%j==021精選課件【例4.16】打印出如下圖案(菱形)
main(){inti,j;for(i=0;i<=3;i++){for(/**//**/)printf("");for(/**//**/)printf("*");printf("\n");}for(i=0;i<=2;i++){for(/**//**/)printf("");for(/**//**/)printf("*");printf("\n");}getch();}*************************j=0;j<3-i;j++j=0;j<2*i+1;j++j=0;j<i+1;j++j=0;j<5-2*i;j++22精選課件【例4.23】求解百馬百擔問題:有100匹馬,馱100擔貨,大馬馱3擔,中馬馱2擔,兩匹小馬馱1擔,問大、中、小馬數可分別為多少?有多少種解決方案?main(){intlarge,middle,small;for(/**//**/)for(/**//**/){small=2*(100-3*large-2*middle);if(/**//**/)printf("large=%-2dmiddle=%-2dsmall=%-2d\n",large,middle,small);}getch();}
large=0;large<=33;large++middle=0;middle<=50;middle++large+middle+small==10023精選課件
以下程序的運行結果是(
)。
voidmain(){inti,j,k=0;
for(i=3;i>=1;i--){for(j=i;j<=3;j++) k+=i*j;}printf("%d\n",k);}A.19 B.29 C.6 D.25課堂小測試24精選課件以下程序段運行后,循環體中的“count+=2;”語句運行的次數為(
)。inti,j,count=0;for(i=1;i<=4;i++) {for(j=1;j<=i;j++){count+=2;printf("%d",count);}}A.8次 B.10次 C.16次 D.20次課堂小測試25精選課件下列程序段運行后m的值為()。inti,j,m=0;for(i=1;i<=3;i++)for(j=2;j<=4;j++)m=m+i+j;A.45B.30C.33D.27課堂小測試26精選課件4.6
goto語句goto語句是一種跳轉語句,可以用于程序的任何地方。goto語句的一般格式為:goto語句標號;其中語句標號就是一個合法的標識符。能用goto語句的前提是在同一個函數中某個語句前存在標號,語句標號的作用在于標識出其后語句的位置,語句標號的使用方法是在合法標識符后面加上一個冒號“:”。如:label:i=j+2;中的label1就是一個語句標號。這時可用goto語句來跳轉到label處。方法如下:
gotolabel;此時程序遇到goto語句之后會無條件的跳到label所標識的語句(i=j+2)處開始執行。27精選課件【例】用goto語句實現1+2+3+…+100結果的輸出
main(){inti=0,s=0;label:i++;s+=i;if(i<100)gotolabel;printf("1+2+3+…+100=%d",s);getch();}
28精選課件【例】分析如下程序總結goto語句的作用。main(){inti=0,j;while(1){while(1){while(1){while(1){printf("test");gotolabel;}}}}label:printf("\nexit");getch();}
29精選課件【例4.20】有一分數序列:
求出這個數列的前20項之和。main(){inti;floata=2.0,b=1.0,t,sum=0;for(/**//**/){/**/
/**/}printf("sum=%f",sum);getch();}
sum+=a/b;t=a;a=a+b;b=t;i=0;i<20;i++30精選課件【例4.21】求e≈的值。main(){inti,j;doublee=1.0,k=1;for(/**//**/){/**//**/}printf("e=%1.10f",e);getch();}
k*=i;e+=1.0/k;i=1;i<=20;i++31精選課件【例4.22】輸出所有三位數的“水仙花數”,所謂“水仙花數”是指其各個位上的數字立方和等于該數本身。例如:153是一個“水仙花數”,因為153=13+53+33。main(){inti,x,y,z;for(i=100;i<=999;i++){z=i%10;y=i/10%10;x=i/100;if(x*x*x+y*y*y+z*z*z==i)printf("%d",i);}getch();}
32精選課件(2)求出滿足以下條件的最大的n。12+22+32……+n2≤100。(結果:n=6)main(){intn=0,s=0;while(/**//**/){/**//**/}n--;printf("n=%d",n);getch();}
s<=100n++;s+=n*n;33精選課件(3)中國古代數學家張丘建提出的“百雞問題”:一只公雞值五個錢,一只母雞值三個錢,三個小雞值一個錢?,F在有100個錢,要買100只雞,是否可以?若可以,給出一個解,要求三種雞都有。請寫出求解該問題的程序。main(){intcock,hen,chicken;for(/**//**/)for(/**//**/){chicken=300-9*hen-15*cock;if(/**//**/)printf("cock=%d,hen=%d,chicken=%d\n",cock,hen,chicken);}getch();}
cock=0;cock<=20;cock++hen=1;hen<=33;hen++cock+hen+chicken==100&&chicken>034精選課件(5)整元換零錢問題。把1元兌換成1分,2分,5分的硬幣,共有多少種不同換法,請編寫求解此問題的程序
main(){intone,two,five;for(/**/
/**/)
for(/**//**/)for(/**/
/**/)if(/**//**/)printf("one=%d,two=%d,five=%d\n",one,two,five);getch();}
one=0;one<=100;one++two=0;two<=50;two++five=0;five<=20;five++one+two*2+five*5==10035精選課件(7)求s=a+aa+aaa+aaaa+......+aa.....a的值,其中a是一個數字,例如:2+22+222+2222+22222(此時n=5)。n和a的值由鍵盤輸入,請編程實現以上求和。main(){intn,a,i;longs=0,k=0;printf("Inputa:");scanf("%d",&a);printf("Inputn:");scanf("%d",&n);for(i=1;i<=n;i++) { /**//**/} printf("%d+%d%d+%d%d+...=%ld",a,a,a,a,a,s);
getch();}
k=10*k+a;s+=k;36精選課件(8)編程據如下算求出M,N的值。
MN×NM 3627
main(){intm,n,k;for(/**//**/)for(/**/
/**/)if(/**/
/**/)
printf("m=%d,n=%d\n",m,n);getch();}m=1;m<=9;m++n=1;n<=9;n++(m*10+n)*(n*10+m)==362737精選課件以下程序的功能是輸出如下圖形:
main(){inti,j;clrscr();for(i=1;i<=5;i++){for(j=1;j<i;j++)printf("");for(j=1;j<=/**/
/**/;j++)printf("*");printf("\n");}for(i=1;i<=4;i++){for(j=1;j<=/**//**/;j++)p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 針織品企業生產安全與應急預案制定考核試卷
- 鎳鈷冶煉廠生產設備保養與潤滑考核試卷
- 貴金屬壓延加工中的熱處理工藝考核試卷
- 陶瓷制品消費市場分析考核試卷
- 手外科康復護理
- 公共衛生工作會議
- 護理急救應急演練
- 無痛內鏡麻醉護理
- 2025年甘肅省武威市中考道德與法治試卷及答案
- 2025年新媒體新聞傳播真實性與公信力測評體系構建報告
- 聲學設計施工方案
- 學校直飲水設備采購投標方案(技術標)
- 高速鐵路的電磁干擾及其防護措施
- 迪慶藏族自治州發電有限責任公司新樂水電站環境影響后評價報告書
- 《中藥學》課件-中藥思政元素案例
- 高壓水除磷系統在柳鋼熱軋生產線上的使用和創新
- 醫院保潔服務投標方案(完整技術標)
- 廣東省深圳市寶安區2022-2023學年二年級下學期期末數學試卷
- 幼兒園規范化幼兒園參評自評報告
- 光伏發電售后合同范本
- 《水資源管理》機考題庫及答案開放大學考試題庫 答案
評論
0/150
提交評論