1.练习1:百钱买百鸡
公鸡每只5元,母鸡每只3元,小鸡一元3只。现在有一百元钱,需要买一百只鸡,请列举出所有的可能情况
//练习1:百钱买百鸡
//公鸡每只5元,母鸡每只3元,
//小鸡一元3只。现在有一百元钱,需要买一百只鸡,请列举出所有的可能情况
#include <stdio.h>
int main(int argc, char const *argv[])
{
int cock=5;
int hen=3;
int chick=1;
for(int i=0;i<=20;i++){//最外层公鸡数
for(int j=0;j<=33;j++){//母鸡
for(int k=0;k<=100;k+=3){//小鸡
if((i*cock+j*hen+k/3*chick)==100&&(i+j+k)==100){
printf("公鸡%d只,母鸡%d只,小鸡%d只\n",i,j,k);
}
}
}
}
return 0;
}
公鸡0只,母鸡25只,小鸡75只
公鸡4只,母鸡18只,小鸡78只
公鸡8只,母鸡11只,小鸡81只
公鸡12只,母鸡4只,小鸡84只
2.练习2:鸡兔同笼
有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?
//练习2:鸡兔同笼
//有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?
#include <stdio.h>
int main(int argc, char const *argv[])
{
int chick=0;
int rabbit=0;
for(chick=0;chick<=35;chick++){
for( rabbit=0;rabbit<=35;rabbit++){
if((chick+rabbit)==35&&(chick*2+rabbit*4)==94){
printf("鸡有%d只,兔子有%d只",chick,rabbit);
}
}
}
return 0;
}
鸡有23只,兔子有12只
3. 练习3:韩信点名
韩信点兵又称为中国剩余定理,相传汉高祖刘邦问大将军韩信的卫兵有多少,韩信说,3人一列余1,5人一列余1人,7人一列余1人,……刘邦茫然不知,你知道韩信至少有多少卫兵吗?(韩信手中有600+,求人数)
//练习3:韩信点名
//韩信点兵又称为中国剩余定理,相传汉高祖刘邦问大将军韩信的卫兵有多少,
//韩信说,3人一列余1,5人一列余1人,7人一列余1人,
//……刘邦茫然不知,你知道韩信至少有多少卫兵吗?(韩信手中有600+,求人数)
#include <stdio.h>
int main(int argc, char const *argv[])
{
int sum=0;//人数
for(sum=600;sum>=600&&sum<700;sum++){
if((sum%3==1)&&(sum%5==1)&&(sum%7==1)){
printf("韩信有%d个兵",sum);
}
}
return 0;
}
韩信有631个兵
4.练习4:折纸赛珠峰
一张厚足够大的度为1毫米的纸,可以无限折叠,
请问,对折多少次后,会超过珠穆朗玛峰(8848.88米)
//练习4:折纸赛珠峰
//一张厚足够大的度为1毫米的纸,可以无限折叠,
//请问,对折多少次后,会超过珠穆朗玛峰(8848.88米)
#include <stdio.h>
int main(int argc, char const *argv[])
{
int length=1;
int num=0;
while(length<=8848880){
length=length*2;
num++;
}
printf("折叠%d次会超过珠穆朗玛峰",num);
return 0;
}
折叠24次会超过珠穆朗玛峰
5.练习5:猴子吃桃
一个猴子吃一颗数上的桃子,每天吃当前桃子的一半并多一个,第十天后,桃子还剩1个,问一开始有多少个桃子
//练习5:猴子吃桃
//一个猴子吃一颗数上的桃子,每天吃当前桃子的一半并多一个,
//第十天后,桃子还剩1个,问一开始有多少个桃子
#include<stdio.h>
int main(int argc, char const *argv[])
{
/* code */
int day=9;
int number=1;
for(day;day>=1;day--){
number=(number+1)*2;
}
printf("一开始有%d个桃子\n",number);
return 0;
}
一开始有1534个桃子
6.练习6:输出斐波那契前20项
1 1 2 3 5 8 13。。。
//练习6:输出斐波那契前20项
//1 1 2 3 5 8 13
int main(int argc, char const *argv[])
{
int num=0;
int arr[20];
arr[0]=1;
arr[1]=1;
printf("1 1 ");
for(num=2;num<20;num++){
arr[num]=arr[num-1]+arr[num-2];
printf("%d ",arr[num]);
}
return 0;
}
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765