C语言经典例题目解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、猴子吃桃子:猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前一天剩下的一半多一个,到第十天吃以前发现只剩下一个桃子,问猴子第一天共摘了几个桃子

#include

main()

{int s=1,i;

for(i=9;i>=1;i--)

s=(s+1)*2;

printf("s=%d\n",s); }

2、鸡兔同笼:有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。问笼中各有几只鸡和兔?

#include

main()

{int a,b;

for(a=1;a<=40;a++)/* 120只脚如果全是鸡的话60只,但是总头是40,所以循环到40 */ for (b=1;b<=30;b++) /* 同理如果全是兔的话最多120/4=30 所以循环到30 */

{if((a==40-b)&&(a==60-2*b)) /* 同时满足总头数40总脚数120 */

printf("There are %d chichens \nThere are %d rabbits",a,b);}

}

3、百钱买百鸡:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

#include

main( )

{int cocks,hens,chicks;

cocks=0;

while(cocks<=19)

{hens=0;

while(hens<=33)

{chicks=100-cocks-hens;

if(5*cocks+3*hens+chicks/3==100&&chicks%3==0)

printf("%d,%d,%d\n",cocks,hens,chicks);

hens=hens+1;}

cocks=cocks+1;}}

#include

main()

{int x,y,z;

for(x=0;x<=20;x++)

for(y=0;y<=33;y++)

{z=100-x-y;

if(15*x+9*y+z==300)

printf("x=%d y=%d z=%d\n",x,y,z);

}

}

4、百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少?

#include

void main()

{int i,j,k,n;

for(i=0;i<=33;i++) /*大马至多为100/3匹*/

for(j=0;j<=50;j++) /*中马至多为100/2=50匹*/

for(k=0;k<=100;k++)

{if((i+j+k==100) &&(3*i+2*j+k/2==100))

printf("i=%d,j=%d,k=%d \n",i,j,k);}

}

5、打印Fibonacci数列(兔子数列)的前n项,每10个换一行。Fibonacci数

列中前两项为1,1,以后每一个数都是其前两个数之和。如

1,1,2,3,5,8,13,21,34,…。

#include

void main()

{long f,f1,f2;int i,n;

printf("Enter n : ");scanf("%d",&n);

f1=1;f2=1;

printf("%10d%10d",f1,f2);

for(i=1;i<=n;i++)

{f=f1+f2;

printf("%10d",f);

f1=f2;f2=f;

if(i%10==0)

printf("\n");}}

6、汉诺塔问题:有三根杆子A,B,C。A杆上有若干碟子;每次移动一块碟子,小的

只能叠在大的上面;把所有碟子从A杆全部移到C杆上。

7、打印下三角的九九乘法表

#include

main()

{int i,j;

for(i=1;i<=9;i++)

{for(j=i;j<=9;j++)

printf("%2d*%2d=%2d",i,j,i*j);

printf("\n");}}

8、输入n值,打印n行杨辉三角:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

#include

void main()

{int i,j,n,k;

printf("Enter n:");scanf("%d",&n);

for(i=1;i<=n;i++)

{k=1;

for(j=1;j

{printf("%3d",k);

k=k*(i-j)/j;}//每次要打印的下一个数等于前一个数乘以其所在行数和列数的差在处以其列数printf("%3d",k);

printf("\n");}}

9.输出各种菱形图案:

A 1

A B A S S S

A B C B A 2 2 2 2 2

A B C D C B A S S S S S S S

A B C D E D C B A 3 3 3 3 3 3 3 3 3

A B C D C B A S S S S S S S

A B C B A 2 2 2 2 2

A B A S S S

A 1

相关文档
最新文档