c/c++快乐算法第一天

c/c++感受算法乐趣(1)

开始时间2023-04-14 18:31:47

结束时间2023-04-14 22:06:02

前言:经过两天的学习,是不是发现编程也挺简单的。其实不然,学好算法同时也是练习编程的关键一环。接下来每周末我将会带领你感受算法的乐趣。目前题目摘自c语言趣味编程100例清华大学出版社,我会根据编程四部曲给出每题题解,话不多说让我们一起来看看吧!

第一章 趣味算法入门

 

 第一题 百钱白鸡问题

一.问题描述

 

二.设计思路

  本题无输入,百钱最多买公鸡20只,母鸡33只,小鸡很多只,很明显可以用三个嵌套循环模拟,达成条件为公鸡加母鸡加小鸡为100只而且用百钱;

三.流程图

四.源代码

复制代码
#include<stdio.h>
int main()
{
    int gongji,muji,xiaoji;
    for(gongji=0;gongji<20;gongji++)
    {
        for(muji=0;muji<33;muji++)
        {
            for(xiaoji=0;xiaoji<=100;xiaoji++)
            {
                if((gongji*5+muji*3+xiaoji/3.0)==100&&(gongji+muji+xiaoji)==100)
                {
                    printf("公鸡=%d只\t母鸡=%d只\t小鸡=%d只\n",gongji,muji,xiaoji);
                }
            }
        }
    }
    return 0;
}
复制代码

 

五.运行结果

 

 第二题 借书方案知多少

一.问题描述

 

 二.设计思路

  无输入,很明显的枚举模拟,a可以选五次,同理bc也一样,但要满足abc三位小朋友借到的不是一本书即if(a!=b,b!=c,c!=a)

三.流程图

四.源代码

复制代码
#include<stdio.h>
int main()
{
    int a,b,c,i=0;
    for(a=1;a<=5;a++)
    {
        for(b=1;b<=5;b++)
        {
            for(c=1;c<=5;c++)
            {
                if(a!=b&&b!=c&&c!=a)
                {
                    printf("a分到第%d本书 b分到第%d本书 c分到第%d本书",a,b,c);
                    i++;
                    if(i%3==0)printf("\n");
                }
            }
        }
    }printf("共有%d种分法",i);
    return 0;

}
复制代码

 

五.运行结果

 

 第三题 打鱼还是晒网

一.问题描述

 

 二.设计思路

  本题有输入(输入为某一天的年月日信息),我们可以先求出这一天距离1990.1.1的天数,然后以五为周期求余数,余数为123则打鱼,余数为40则为晒网;

三.流程图

四.源代码

复制代码
#include<stdio.h>
int main()
{
    printf("请以年月日的格式输入指定日期");
    int year,month,day;
    int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    scanf("%d %d %d",&year,&month,&day);
    int sum=0;
    int i=1990;
    for(i=1990;i<year;i++)
    {
        sum+=365;
        if((i%4==0&&i%100!=0)||(i%400==0))
        {
            sum++;
        }
    }
    for(i=0;i<month-1;i++)
    {
        if(month==1)break;
        sum+=a[i];
    }
    if(month>2){
        if((year%4==0&&year%100!=0)||(year%400==0))
        {
            sum++;
        }
    }
    sum+=day-1;
    int yush=sum%5;
    if(yush%5==1||yush%5==2||yush%5==3)
    {
        printf("打鱼");
    }
    else
    {
        printf("晒网");
    }
    return 0;
}
复制代码

 

五.运行结果

 

 

 

 每日一mo:过度的清醒,会让人觉得薄凉冷漠;过度的沉醉,又会让人感到浮浅迷离。所以,完美的人生,当是留一半清醒,留一半醉意。

posted @   寒心小呆  阅读(181)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示