C語言入門經(jīng)典案例與源代碼_第1頁
C語言入門經(jīng)典案例與源代碼_第2頁
C語言入門經(jīng)典案例與源代碼_第3頁
C語言入門經(jīng)典案例與源代碼_第4頁
C語言入門經(jīng)典案例與源代碼_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精品文檔循環(huán)控制輸出圖案【程序11題目:本出9*9口訣。1 .程序分析:分行與列考慮,共9行9歹U,i控制行,j控制列。2 .程序源代碼:#includestdio.hmain()(inti,j,result;printf(n);for(i=1;i10;i+)for(j=1;j10;j+)(result=i*j;printf(%d*%d=%-3d”,i,j,result);/*-3d表示左對齊,占3位*/printf(n);/*每一行后換行*/【程序2】題目:要求輸出國際象棋棋盤。還是白方格。1 .程序分析:用i控制行,j來控制列,根據(jù)i+j的和的變化來控制輸出黑方格,2 .程序源代碼:#in

2、cludestdio.hmain()inti,j;for(i=0;i8;i+)for(j=0;j8;j+)if(i+j)%2=0)printf(%c%c,219,219);elseprintf();printf(n);【程序31題目:打印樓梯,同時在樓梯上方打印兩個笑臉。1 .程序分析:用i控制行,j來控制列,j根據(jù)i的變化來控制輸出黑方格的個數(shù)。2 .程序源代碼:#includestdio.h精品文檔main()inti,j;printf(11n);/*輸出兩個笑臉*/for(i=1;i11;i+)for(j=1;j=i;j+)printf(%c%c,219,219);printf(n);【

3、程序4】題目:打印出如下圖案(菱形)*1. 程序分析:先把圖形分成兩部分來看待,前四行一個規(guī)律,后三行一個規(guī)律,利用雙重for循環(huán),第一層控制行,第二層控制列。2. 程序源代碼:main()inti,j,k;for(i=0;i=3;i+)for(j=0;j=2-i;j+)printf();for(k=0;k=2*i;k+)printf(*);printf(n);for(i=0;i=2;i+)for(j=0;j=i;j+)printf();for(k=0;k=4-2*i;k+)printf(*);printf(n);【程序5】題目:打印出楊輝三角形(要求打印出10行如下圖)1. 程序分析:111

4、121133114641151010512. 程序源代碼:main()inti,j;inta1010;printf(n);for(i=0;i10;i+)ai0=1;aii=1;for(i=2;i10;i+)for(j=1;jaij=ai-1j-1+ai-1j;for(i=0;i10;i+)for(j=0;j=i;j+)printf(%5d,aij);printf(n);3. 序1】if語句嵌套練習(xí)題目:企業(yè)發(fā)放的獎金根據(jù)利潤提成。利潤(I)低于或等于10萬元時,獎金可提10%;利潤高于10萬元,低于20萬元時,低于10萬元的部分按10%提成,高于10萬元的部分,可可提成7.5%;20萬到40萬

5、之間時,高于20萬元的部分,可提成5%;40萬到60萬之間時高于40萬元的部分,可提成3%;60萬到100萬之間時,高于60萬元的部分,可提成1.5%,高于100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當(dāng)月利潤I,求應(yīng)發(fā)放獎金總數(shù)?1. 程序分析:請利用數(shù)軸來分界,定位。注意定義時需把獎金定義成長整型。2. 程序源代碼:main()longinti;intbonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf(%ld,&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+20

6、0000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i=100000)bonus=i*0.1;elseif(i=200000)bonus=bonus1+(i-100000)*0.075;elseif(i=400000)bonus=bonus2+(i-200000)*0.05;elseif(i=600000)bonus=bonus4+(i-400000)*0.03;elseif(iy則將x與y的值進(jìn)行交換,然后再用x與z進(jìn)行比較,如果xz則將x與z的值進(jìn)行交換,這樣能使x最小。2. 程序源代碼:main()intx,y,

7、z,t;scanf(%d%d%d,&x,&y,&z);if(xy)t=x;x=y;y=t;/*交換x,y的值*/if(xz)t=z;z=x;x=t;/*交換x,z的值*/if(yz)t=y;y=z;z=t;/*交換z,y的值*/printf(smalltobig:%d%d%dn,x,y,z);【程序3】switch多分支語句練習(xí)題目:輸入某年某月某日,判斷這一天是這一年的第幾天?1 .程序分析:以3月5日為例,應(yīng)該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時需考慮多加一天。2 .程序源代碼:main()intday,month,year,sum,leap

8、;printf(npleaseinputyear,month,dayn);scanf(%d,%d,%d,&year,&month,&day);switch(month)/*先計(jì)算某月以前月份的總天數(shù)*/case1:sum=0;break;case2:sum=31;break;case3:sum=59;break;case4:sum=90;break;case5:sum=120;break;case6:sum=151;break;case7:sum=181;break;case8:sum=212;break;case9:sum=243;break;case10:sum=273;break;cas

9、e11:sum=304;break;case12:sum=334;break;default:printf(dataerror);break;sum=sum+day;/*再加上某天的天數(shù)*/if(year%400=0|(year%4=0&year%100!=0)/*判斷是不是閏年*/leap=1;elseleap=0;if(leap=1&month2)/*如果是閏年且月份大于2,總天數(shù)應(yīng)該加一天*/sum+;printf(Itisthe%dthday.,sum);【程序11題目:兩個乒乓球隊(duì)進(jìn)行比賽,各出三人。甲隊(duì)為a,b,c三人,乙隊(duì)為x,y,z三人。已抽簽決定比賽名單。有人向隊(duì)員打聽比賽的

10、名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊(duì)賽手的名單。1 .程序分析:判斷素?cái)?shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),如果能被整除,則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。2 .程序源代碼:main()chari,j,k;/*i是a的對手,j是b的對手,k是c的對手*/for(i=x;i=z;i+)for(j=x;j=z;j+)if(i!=j)for(k=x;k=z;k+)if(i!=k&j!=k)if(i!=x&k!=x&k!=z)printf(orderisa-%ctb-%ctc-%cn,i,j,k);【程序2】題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲

11、。問第3個人大24個人歲數(shù),他說比第歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大?1 .程序分析:利用遞歸的方法,遞歸分為何推和遞推兩個階段。要想知道第五個人歲數(shù),需知道第四人的歲數(shù),依次類推,推到第一人(10歲),再往回推。2 .程序源代碼:age(n)intn;intc;if(n=1)c=10;elsec=age(n-1)+2;return(c);main()printf(%d”,age(5);【程序11題目:一個整數(shù),它加上100后是一個完全平方數(shù),再加上168又是一個完全平方數(shù),請問該數(shù)是多少?1 .程序分析:在10

12、萬以內(nèi)判斷,先將該數(shù)加上100后再開方,再將該數(shù)加上268后再開方,如果開方后的結(jié)果滿足如下條件,即是結(jié)果。請看具體分析:2 .程序源代碼:#includemath.hmain()longinti,x,y,z;for(i=1;i100000;i+)x=sqrt(i+100);/*x為加上100后開方后的結(jié)果*/y=sqrt(i+268);/*y為再加上168后開方后的結(jié)果*/if(x*x=i+100&y*y=i+268)/*如果一個數(shù)的平方根的平方等于該數(shù),這說明此數(shù)是完全平方數(shù)*/printf(n%ldn,i);【程序2】題目:判斷101-200之間有多少個素?cái)?shù),弁輸出所有素?cái)?shù)。1 .程序分

13、析:判斷素?cái)?shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),如果能被整除,則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。2 .程序源代碼:#includemath.hmain()intm,i,k,h=0,leap=1;printf(n);for(m=101;m=200;m+)k=sqrt(m+1);for(i=2;i=k;i+)if(m%i=0)leap=0;break;if(leap)printf(%-4d”,m);h+;if(h%10=0)printf(n);leap=1;printf(nThetotalis%d,h);=【程序3】題目:打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)

14、字立方和等于該數(shù)本身。例如:153是一個“水仙花數(shù):因?yàn)?53=1的三次方+5的三次方+3的三次方。1 .程序分析:利用for循環(huán)控制100-999個數(shù),每個數(shù)分解出個位,十位,百位。2 .程序源代碼:main()inti,j,k,n;printf(waterflowernumberis:);for(n=100;n1000;n+)i=n/100;/*分解出百位*/j=n/10%10;/*分解出十位*/k=n%10;/*分解出個位*/if(i*100+j*10+k=i*i*i+j*j*j+k*k*k)printf(%-5d,n);printf(n);【程序4】題目:一個數(shù)如果恰好等于它的因子之和

15、,這個數(shù)就稱為“完數(shù)”。例如6=1+2+3 .編程找出1000以內(nèi)的所有完數(shù)。1 .程序分析:請參照程序-上頁程序14.2 .程序源代碼:main()staticintk10;inti,j,n,s;forQ=2;j1000;j+)n=-1;s=j;for(i=1;iif(j%i)=0)n+;s=s-i;kn=i;if(s=0)printf(%disawanshu,j);for(i=0;iprintf(%d,ki);printf(%dn,kn);【程序5】題目:一個5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個位與萬位相同,十位與千位相同。1 .程序分析:同29例2 .程序源代碼:main

16、()longge,shi,qian,wan,x;scanf(%ld,&x);wan=x/10000;qian=x%10000/1000;shi=x%100/10;ge=x%10;if(ge=wan&shi=qian)/*個位等于萬位弁且十位等于千位*/printf(thisnumberisahuiwenn);elseprintf(thisnumberisnotahuiwenn);【程序2】題目:有一個已經(jīng)排好序的數(shù)組?,F(xiàn)輸入一個數(shù),要求按原來的規(guī)律將它插入數(shù)組中。1 .程序分析:首先判斷此數(shù)是否大于最后一個數(shù),然后再考慮插入中間的數(shù)的情況,插入后此元素之后的數(shù),依次后移一個位置。2.程序源代碼

17、:main()inta11=1,4,6,9,13,16,19,28,40,100;inttemp1,temp2,number,end,i,j;printf(originalarrayis:n);for(i=0;iend)a10=number;elsefor(i=0;inumber)temp1=ai;ai=number;for(j=i+1;j11;j+)temp2=aj;aj=temp1;temp1=temp2;break;for(i=0;i11;i+)printf(%6d,ai);【程序3】題目:將一個數(shù)組逆序輸出。1. 程序分析:用第一個與最后一個交換。2. 程序源代碼:#defineN5m

18、ain()intaN=9,6,5,4,1,i,temp;printf(noriginalarray:n);for(i=0;iprintf(%4d,ai);for(i=0;itemp=ai;ai=aN-i-1;aN-i-1=temp;printf(nsortedarray:n);for(i=0;iprintf(%4d,ai);【程序1】題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數(shù),他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大?1. 程序分析:利用遞歸的方法,遞歸分為回推和遞推

19、兩個階段。要想知道第五個人歲數(shù),需知道第四人的歲數(shù),依次類推,推到第一人(10歲),再往回推。2. 程序源代碼:age(n)intn;intc;if(n=1)c=10;elsec=age(n-1)+2;return(c);main()printf(%d,age(5);5 個字符,以相反順序打印出來?!境绦?】題目:利用遞歸函數(shù)調(diào)用方式,將所輸入的1. 程序分析:2. 程序源代碼:#includestdio.hmain()inti=5;voidpalin(intn);printf(40:);palin(i);printf(n);voidpalin(n)intn;charnext;if(n=1)n

20、ext=getchar();printf(n0:);putchar(next);elsenext=getchar();palin(n-1);putchar(next);3. 序3】題目:利用遞歸方法求5!。1 .程序分析:遞歸公式:fn=fn_1*4!2 .程序源代碼:#includestdio.hmain()inti;intfact();for(i=0;i0)x1=(x2+1)*2;/*第一天的桃子數(shù)是第2天桃子數(shù)加1后的2倍*/x2=x1;day-;printf(thetotalis%dn,x1);【程序2】題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第1

21、0次落地時,共經(jīng)過多少米?第10次反彈多高?1 .程序分析:見下面注釋2 .程序源代碼:main()floatsn=100.0,hn=sn/2;intn;for(n=2;n=10;n+)sn=sn+2*hn;/*第n次落地時共經(jīng)過的米數(shù)*/hn=hn/2;/*第n次反跳高度*/printf(thetotalofroadis%fn,sn);printf(thetenthis%fmetern,hn);【程序3】題目:求s=a+aa+aaa+aaaa+aaa的值,其中a是個數(shù)字。例如2+22+222+2222+22222(此時共有5個數(shù)相加),幾個數(shù)相加有鍵盤控制。1 .程序分析:關(guān)鍵是計(jì)算出每一項(xiàng)

22、的值。2 .程序源代碼:main()inta,n,count=1;longintsn=0,tn=0;printf(pleaseinputaandnn);scanf(%d,%d,&a,&n);printf(a=%d,n=%dn,a,n);while(count=n)tn=tn+a;sn=sn+tn;a=a*10;+count;printf(a+aa+.=%ldn,sn);【程序4】題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數(shù)為多少?1 .程序分析:兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21.2

23、 .程序源代碼:main()longf1,f2;inti;f1=f2=1;for(i=1;i=20;i+)printf(%121d%12ld”,f1,f2);if(i%2=0)printf(n);/*控制輸出,每行四個*/f1=f1+f2;/*前兩個月加起來賦值給第三個月*/f2=f1+f2;/*前兩個月加起來賦值給第三個月*/【程序5】題目:有一分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13求出這個數(shù)列的前20項(xiàng)之和。1 .程序分析:請抓住分子與分母的變化規(guī)律。2 .程序源代碼:main()intn,t,number=20;floata=2,b=1,s=0;for(n=1;n=number;n+)s=s+a/b;t=a;a=a+b;b=t;/*這部分是程序的關(guān)鍵,請讀者猜猜t的作用*/printf(sumis%9.6fn,s);【程序61題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據(jù)分為五份,多了一個,這只猴子把多的一個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第

溫馨提示

  • 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

提交評論