1、猴子吃桃子:猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前一天剩下的一半多一个,到第十天吃以前发现只剩下一个桃子,问猴子第一天共摘了几个桃子#include <stdio.h>main(){int s=1,i;for(i=9;i>=1;i--)s=(s+1)*2;printf("s=%d\n",s); }2、鸡兔同笼:有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。
问笼中各有几只鸡和兔?#include <stdio.h>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 <stdio.h>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 <stdio.h>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 <stdio.h>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<stdio.h>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 <stdio.h>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行杨辉三角:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1#include<stdio.h>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<i;j++){printf("%3d",k);k=k*(i-j)/j;}//每次要打印的下一个数等于前一个数乘以其所在行数和列数的差在处以其列数printf("%3d",k);printf("\n");}}9.输出各种菱形图案:A 1A B A S S SA B C B A 2 2 2 2 2A B C D C B A S S S S S S SA B C D E D C B A 3 3 3 3 3 3 3 3 3A B C D C B A S S S S S S SA B C B A 2 2 2 2 2A B A S S SA 110、约瑟夫问题:n个人坐一圈,从1到n给每个人编号。
从s个人开始报数,数到第m个人,让他出局。
然后从出局后下一个人开始报数,同样是第m个人,再让它出局,如此反复,直到剩下一个人。
问题求剩下一个人编号是多少。
#include <stdio.h>main(){int n, m, i, s=0;printf ("Enter n: m: ");scanf("%d%d", &n, &m);for (i=2; i<=n; i++) s=(s+m)%i;printf ("The winner is %d\n", s+1); }11、搬砖问题:36块砖,36人搬,男搬4,女搬3,两个小孩抬一块砖(小孩不分性别),问有多少男人,多少女人,多少小孩?#include <stdio.h>main( ){ int i,j,k;for(i=1;i<=36/4;i++)for(j=1;j<=36/3;j++)for(k=2;k<=36*2;k+=2)if(36==4*i+3*j+k/2)printf("%2d,%d,%2d ",i,j,k);}12、爱因斯坦的阶梯问题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
请问该阶梯至少有多少阶。
编写一个C程序解决该问题。
#include <stdio.h>main( ){int x;for(x=7; ;x+=14)if(x%3==2&&x%5==4&&x%6==5) break;printf("The number of the ladders is:%d\n",x);}13、递增的牛群:若一头小母牛,从第四年开始每年生一头母牛,按些规律,第n年时有多少头母牛?#include <stdio.h>main(){int i,year,f,f1,f2,f3;printf("Enter year:");scanf("%d",&year);for(i=1;i<=year;i++){if(i<4)f=f1=f2=f3=1;else{f=f1+f3;f3=f2;f2=f1;f1=f;}printf("i=%2d n=%3d\n",i,f);}}14、换零钱:将一元钱换成1分、2分、5分、1角、2角、5角的零钱若干,一共有多少种兑换方法?#include <stdio.h>void main(){int i,j,n,k,m,h,s=0;for(i=0;i<=20;i++)for(j=0;j<=50;j++)for(n=0;n<=100;n++)for(k=0;k<=10;k++)for(m=0;m<=5;m++)for(h=0;h<=2;h++)if( 5*i+2*j+1*n+10*k+20*m+50*h==100){printf("%2d %2d个, %2d %2d个, %2d %2d ,%2d %2d个 ,%2d %2d 个 ,%2d %2d个",5,i,2,j,1,n,10,k,20,m,50,h);printf("\n");s++;}printf("一共有%d种方法",s);}15.海滩上有一堆桃子,五只猴子来分。
第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。
第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?#include<stdio.h>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++;else break;}i=m;if(count==4) {printf("%d\n",j);break;}}}16.印度国王的奖励:相传古印度宰相达依尔,是国际象棋的发明者。
有一次,国王因为他的贡献要奖励他,问他想要什么。
达依尔说:“只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了:第一格一粒,第二格两粒,……,后面一格的麦子总是前一格麦子数的两倍,摆满整个棋盘,我就感恩不尽了。
”国王一想,这还不容易,让人扛了一袋麦子,但很快用完了,再扛出一袋还是不够,请你为国王算一下总共给达依尔多少小麦?(设1平方米小麦约1.4*108颗)17、水仙花数:水仙花数是指一个 n 位数( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。