嵌入式学习记录 2024.4.28(c基础练习)

文章介绍了几个编程练习题目,涉及数学问题如鸡兔同笼、韩信点兵(中国剩余定理)、折纸问题、斐波那契数列以及猴子吃桃的递归问题,展示了编程在解决实际数学问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值