C語(yǔ)言經(jīng)典編程100例_第1頁(yè)
C語(yǔ)言經(jīng)典編程100例_第2頁(yè)
C語(yǔ)言經(jīng)典編程100例_第3頁(yè)
C語(yǔ)言經(jīng)典編程100例_第4頁(yè)
C語(yǔ)言經(jīng)典編程100例_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語(yǔ)言經(jīng)典編程100例程序1】題目:古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問(wèn)每個(gè)月的兔子總數(shù)為多少?1.程序分析:兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21.2.程序源代碼:main()long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i+) printf("%12ld %12ld",f1,f2);if(i%2=0) printf("n");/*控制輸出,每行四個(gè)*/f1=f1+f2; /*前兩個(gè)月加起來(lái)賦值給第三個(gè)月*/f2=f1+f

2、2; /*前兩個(gè)月加起來(lái)賦值給第三個(gè)月*/=【程序2】題目:判斷101-200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。1.程序分析:判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除,則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。 2.程序源代碼:#include "math.h"main()int m,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("%-

3、4d",m);h+;if(h%10=0)printf("n"); leap=1;printf("nThe total is %d",h);【程序4】題目:將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。 程序分析:對(duì)n進(jìn)行分解質(zhì)因數(shù),應(yīng)先找到一個(gè)最小的質(zhì)數(shù)k,然后按下述步驟完成: (1)如果這個(gè)質(zhì)數(shù)恰等于n,則說(shuō)明分解質(zhì)因數(shù)的過(guò)程已經(jīng)結(jié)束,打印出即可。(2)如果n<>k,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商,作為新的正整數(shù)你n,重復(fù)執(zhí)行第一步。(3)如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行

4、第一步。 2.程序源代碼:/* zheng int is divided yinshu*/main()int n,i;printf("nplease input a number:n");scanf("%d",&n);printf("%d=",n);for(i=2;i<=n;i+)while(n!=i)if(n%i=0) printf("%d*",i);n=n/i;elsebreak;printf("%d",n);=【程序11】題目:有1、2、3、4個(gè)數(shù)字,能組成多少個(gè)互不相同且無(wú)

5、重復(fù)數(shù)字的三位數(shù)?都是多少?1.程序分析:可填在百位、十位、個(gè)位的數(shù)字都是1、2、3、4。組成所有的排列后再去掉不滿足條件的排列。 2.程序源代碼:main()int i,j,k;printf("n");for(i=1;i<5;i+)*以下為三重循環(huán)*/for(j=1;j<5;j+)for (k=1;k<5;k+)if (i!=k&&i!=j&&j!=k) /*確保i、j、k三位互不相同*/printf("%d,%d,%dn",i,j,k);=【程序13】題目:一個(gè)整數(shù),它加上100后是一個(gè)完全平方數(shù),再

6、加上168又是一個(gè)完全平方數(shù),請(qǐng)問(wèn)該數(shù)是多少?1.程序分析:在10萬(wàn)以內(nèi)判斷,先將該數(shù)加上100后再開(kāi)方,再將該數(shù)加上268后再開(kāi)方,如果開(kāi)方后的結(jié)果滿足如下條件,即是結(jié)果。請(qǐng)看具體分析:2.程序源代碼:#include "math.h"main()long int i,x,y,z;for (i=1;i<100000;i+) x=sqrt(i+100); /*x為加上100后開(kāi)方后的結(jié)果*/y=sqrt(i+268); /*y為再加上168后開(kāi)方后的結(jié)果*/if(x*x=i+100&&y*y=i+268)/*如果一個(gè)數(shù)的平方根的平方等于該數(shù),這說(shuō)明此數(shù)

7、是完全平方數(shù)*/printf("n%ldn",i);=【程序15】題目:輸入三個(gè)整數(shù)x,y,z,請(qǐng)把這三個(gè)數(shù)由小到大輸出。1.程序分析:我們想辦法把最小的數(shù)放到x上,先將x與y進(jìn)行比較,如果x>y則將x與y的值進(jìn)行交換,然后再用x與z進(jìn)行比較,如果x>z則將x與z的值進(jìn)行交換,這樣能使x最小。2.程序源代碼:main()int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if (x>y)t=x;x=y;y=t; /*交換x,y的值*/if(x>z)t=z;z=x;x=t;/*交換x,z

8、的值*/if(y>z)t=y;y=z;z=t;/*交換z,y的值*/printf("small to big: %d %d %dn",x,y,z);【程序18】題目:輸出9*9口訣。1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。2.程序源代碼:#include "stdio.h"main()int i,j,result;printf("n");for (i=1;i<10;i+) for(j=1;j<10;j+)result=i*j;printf("%d*%d=%-3d",i,j,re

9、sult);/*-3d表示左對(duì)齊,占3位*/printf("n");/*每一行后換行*/=【程序19】題目:要求輸出國(guó)際象棋棋盤。1.程序分析:用i控制行,j來(lái)控制列,根據(jù)i+j的和的變化來(lái)控制輸出黑方格,還是白方格。2.程序源代碼:#include "stdio.h"main()int i,j;for(i=0;i<8;i+)for(j=0;j<8;j+)if(i+j)%2=0)printf("%c%c",219,219);elseprintf(" ");printf("n");=

10、題【程序26】 題目:利用遞歸方法求5!。1.程序分析:遞歸公式:fn=fn_1*4!2.程序源代碼:#include "stdio.h"main()int i;int fact();for(i=0;i<5;i+)printf("40:%d!=%dn",i,fact(i);int fact(j)int j;int sum;if(j=0)sum=1;elsesum=j*fact(j-1);return sum;=【程序27】 題目:利用遞歸函數(shù)調(diào)用方式,將所輸入的5個(gè)字符,以相反順序打印出來(lái)。1.程序分析:2.程序源代碼:#include "

11、;stdio.h"main()int i=5;void palin(int n);printf("40:");palin(i);printf("n");void palin(n)int n;char next;if(n<=1)next=getchar();printf("n0:");putchar(next);elsenext=getchar();palin(n-1);putchar(next);=【程序28】 題目:有5個(gè)人坐在一起,問(wèn)第五個(gè)人多少歲?他說(shuō)比第4個(gè)人大2歲。問(wèn)第4個(gè)人歲數(shù),他說(shuō)比第3個(gè)人大2歲。問(wèn)第三

12、個(gè)人,又說(shuō)比第2人大兩歲。問(wèn)第2個(gè)人,說(shuō)比第一個(gè)人大兩歲。最后 問(wèn)第一個(gè)人,他說(shuō)是10歲。請(qǐng)問(wèn)第五個(gè)人多大?1.程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個(gè)階段。要想知道第五個(gè)人歲數(shù),需知道第四人的歲數(shù),依次類推,推到第一人(10歲),再往回推。2.程序源代碼:age(n)int n;int c;if(n=1) c=10;else c=age(n-1)+2;return(c);main() printf("%d",age(5);=【程序30】 題目:一個(gè)5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個(gè)位與萬(wàn)位相同,十位與千位相同。1.程序分析:同29例2.程序源代碼

13、:main( )long ge,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)/*個(gè)位等于萬(wàn)位并且十位等于千位*/printf("this number is a huiwenn");elseprintf("this number is not a huiwenn");【程序31】題目:請(qǐng)輸入星期幾的第一個(gè)字母來(lái)判斷一下是星期幾,如果第一個(gè)字母一樣,則繼

14、續(xù)判斷第二個(gè)字母。1.程序分析:用情況語(yǔ)句比較好,如果第一個(gè)字母一樣,則判斷用情況語(yǔ)句或if語(yǔ)句判斷第二個(gè)字母。2.程序源代碼:#include <stdio.h>void main()char letter;printf("please input the first letter of somedayn");while (letter=getch()!='Y')/*當(dāng)所按字母為Y時(shí)才結(jié)束*/ switch (letter)case 'S':printf("please input second lettern&quo

15、t;);if(letter=getch()='a')printf("saturdayn");else if (letter=getch()='u')printf("sundayn");else printf("data errorn");break;case 'F':printf("fridayn");break;case 'M':printf("mondayn");break;case 'T':printf(&qu

16、ot;please input second lettern");if(letter=getch()='u')printf("tuesdayn");else if (letter=getch()='h')printf("thursdayn");else printf("data errorn");break;case 'W':printf("wednesdayn");break;default: printf("data errorn")

17、;=【程序67】題目:輸入數(shù)組,最大的與第一個(gè)元素交換,最小的與最后一個(gè)元素交換,輸出數(shù)組。1.程序分析:譚浩強(qiáng)的書(shū)中答案有問(wèn)題。2.程序源代碼:main()int number10;input(number);max_min(number);output(number);input(number)int number10;int i;for(i=0;i<9;i+)scanf("%d,",&numberi);scanf("%d",&number9);max_min(array)int array10;int *max,*min,k,

18、l;int *p,*arr_end;arr_end=array+10;max=min=array;for(p=array+1;p<arr_end;p+)if(*p>*max) max=p;else if(*p<*min) min=p;k=*max;l=*min;*p=array0;array0=l;l=*p;*p=array9;array9=k;k=*p;return;output(array)int array10; int *p;for(p=array;p<array+9;p+)printf("%d,",*p);printf("%dn&

19、quot;,array9);=【程序76】題目:編寫一個(gè)函數(shù),輸入n為偶數(shù)時(shí),調(diào)用函數(shù)求1/2+1/4+.+1/n,當(dāng)輸入n為奇數(shù)時(shí),調(diào)用函數(shù)1/1+1/3+.+1/n(利用指針函數(shù))1.程序分析:2.程序源代碼:main()#include "stdio.h"main()float peven(),podd(),dcall();float sum;int n;while (1)scanf("%d",&n);if(n>1)break;if(n%2=0)printf("Even=");sum=dcall(peven,n);

20、elseprintf("Odd=");sum=dcall(podd,n);printf("%f",sum);float peven(int n)float s;int i;s=1;for(i=2;i<=n;i+=2)s+=1/(float)i;return(s);float podd(n)int n;float s;int i;s=0;for(i=1;i<=n;i+=2)s+=1/(float)i;return(s);float dcall(fp,n)float (*fp)();int n;float s;s=(*fp)(n);return(

21、s);=【程序79】題目:字符串排序。1.程序分析:2.程序源代碼:main()char *str120,*str220,*str320;char swap();printf("please input three stringsn");scanf("%s",str1);scanf("%s",str2);scanf("%s",str3);if(strcmp(str1,str2)>0) swap(str1,str2);if(strcmp(str1,str3)>0) swap(str1,str3);if(s

22、trcmp(str2,str3)>0) swap(str2,str3);printf("after being sortedn");printf("%sn%sn%sn",str1,str2,str3);char swap(p1,p2)char *p1,*p2;char *p20;strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);=【程序80】題目:海灘上有一堆桃子,五只猴子來(lái)分。第一只猴子把這堆桃子憑據(jù)分為五份,多了一個(gè),這只猴子把多的一個(gè)扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個(gè),它同樣把

23、多的一個(gè)扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,問(wèn)海灘上原來(lái)最少有多少個(gè)桃子?1.程序分析:2.程序源代碼:main()int i,m,j,k,count;for(i=4;i<10000;i+=4) count=0;m=i;for(k=0;k<5;k+)j=i/4*5+1;i=j;if(j%4=0)count+;elsebreak;i=m;if(count=4)printf("%dn",count);break;【程序81】題目:809*?=800*?+9*?+1 其中?代表的兩位數(shù),8*?的結(jié)果為兩位數(shù),9*?的結(jié)果為3位數(shù)。求?代表的兩位數(shù)

24、,及809*?后的結(jié)果。1.程序分析:2.程序源代碼:output(long b,long i) printf("n%ld/%ld=809*%ld+%ld",b,i,i,b%i);main()long int a,b,i;a=809;for(i=10;i<100;i+)b=i*a+1;if(b>=1000&&b<=10000&&8*i<100&&9*i>=100)output(b,i); =【程序82】題目:八進(jìn)制轉(zhuǎn)換為十進(jìn)制1.程序分析:2.程序源代碼:main() char *p,s6;int

25、 n;p=s;gets(p);n=0;while(*(p)!='0')n=n*8+*p-'0'p+;printf("%d",n);=【程序83】題目:求07所能組成的奇數(shù)個(gè)數(shù)。1.程序分析:2.程序源代碼:main()long sum=4,s=4;int j;for(j=2;j<=8;j+)/*j is place of number*/ printf("n%ld",sum);if(j<=2)s*=7;elses*=8;sum+=s;printf("nsum=%ld",sum);=【程序84

26、】題目:一個(gè)偶數(shù)總能表示為兩個(gè)素?cái)?shù)之和。1.程序分析:2.程序源代碼:#include "stdio.h"#include "math.h"main() int a,b,c,d;scanf("%d",&a);for(b=3;b<=a/2;b+=2) for(c=2;c<=sqrt(b);c+)if(b%c=0) break;if(c>sqrt(b)d=a-b;elsebreak;for(c=2;c<=sqrt(d);c+)if(d%c=0) break;if(c>sqrt(d)printf(&qu

27、ot;%d=%d+%dn",a,b,d);=【程序85】題目:判斷一個(gè)素?cái)?shù)能被幾個(gè)9整除1.程序分析:2.程序源代碼:main() long int m9=9,sum=9;int zi,n1=1,c9=1;scanf("%d",&zi);while(n1!=0) if(!(sum%zi)n1=0;elsem9=m9*10;sum=sum+m9;c9+;printf("%ld,can be divided by %d "9"",sum,c9);=【程序88】題目:讀取7個(gè)數(shù)(150)的整數(shù)值,每讀取一個(gè)值,程序打印出該值個(gè)數(shù)的。1.程序分析:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論