生活中的数学问题

来源:互联网 发布:股票软件数据不一样 编辑:程序博客网 时间:2024/05/08 03:05

某人从1990年1月1日起开始“三天打鱼,两天晒网”,判断以后的某一天他是在“打渔”还是在“晒网”

*问题分析与算法设计

(1)计算从1990年1月1日开始至指定日期一共多少天(要判断经历的年份中是否有闰年(如果((年能被4除尽且不能被100除尽)或能被400除尽)则该年是闰年),若有闰年,二月为29天,平年为28天)

(2)由于“打渔”和“晒网”的周期为5天,所以将计算的天数用5去除

(3)根据余数判断他是在“打渔”还是在“晒网”:  若   余数为1,2,3,则他是在“晒网” ,否则     是在“晒网”

程序设计

 

   

#include <stdio.h>

struct date{
    int year;
    int month;
    int day;
};

int main()
{
    int year;
    int day;
    int yearday;

    struct date today;
    struct date term;

    printf("please input year/month/day:");
    scanf("%d%d%d",&today.year,&today.month,&today.day);

    term.month = 12;
    term.day = 31;

    for(yearday = 0,year = 1990;year < today.year;year++)
    {
        term,year = year;
        year += days(term);
    }
    yearday += days(today);
    day = yearday % 5;
    if(day > 0 && day < 4)
    {
        printf("he was fishing at that day. \n");
    }
    else
    {
        printf("he was sleeping at that day. \n");
    }

    return 0;
}

    days(day)
        struct date day;
    {`
        int i;
        int lp;

        static int day_tab[2][13] =
        {
            {0,31,28,31,30,31,30,31,31,30,31,30,31},
            {0,31,29,31,30,31,30,31,31,30,31,30,31},
        };

        lp = day.year % 4 == 0 && day.year % 100 != 0 || day.year % 400 == 0;
        for(i = 1;i < day.month ;i++)
        {
            day.day += day_tab[lp][i];
        }
        return day.day;
    }

三位渔夫出海打渔,带了21只筐。返航时发现七只筐装满了鱼,还有七只筐装了半筐鱼,另外七只筐则是空的,7个满筐重量相等,7个半筐重量相等,在不将鱼倒出的情况下,将鱼和筐平分为三份。

每个人应分到7个箩筐,3.5筐鱼。采用3×3的数组a来表示三个人分到的东西。其中每个人对应数组a的一行,数组的第0列放分到鱼的整筐数,数组的第1列放分到鱼的半筐数,数组的第2列放分到的空筐数。

数组每行每列的元素之和为7

对数组的行来说,满筐数+半筐数=3.5

每个人所得到的满筐数不超过三筐

每个人都至少有同一个半筐,且半筐数为奇数

#include <stdio.h>

int main()
{
    int i;
    int j;
    int k;
    int m;
    int n;
    int flag;
    int a[3][3];

    int count = 0;

    printf("It exists possible distribution plans:\n");

    for(i = 0;i <= 3;i++)
    {
        a[0][0] = i;
        for(j = i;j <= 7 - i && j <= 3;j++)
        {
            a[1][0] = j;
            if((a[2][0] = 7 - j - a[0][0]) > 3)
            {
                continue;
            }
            if(a[2][0] < a[1][0])
            {
                break;
            }
            for(k = 1;k <= 5;k += 2)
            {
                a[0][1] = k;
                for(m = 1;m < 7 - k;m += 2)
                {
                    a[1][1] = m;
                    a[2][1] = 7 - k - m;
                    for(flag = 1,n = 0;flag != 0 && n < 3;n++)
                    {
                        if(a[n][0] + a[n][1] < 7 && a[n][0] * 2 + a[n][1] == 7)
                        {
                            a[n][2] = 7 - a[n][0] - a[n][1];
                        }
                        else
                        {
                            flag = 0;
                        }
                    }
                        if(flag)
                        {
                            printf("NO.%d        Full basket  Semi_basket  Empty \n",++count);
                            for(n = 0;n < 3;n++)
                            {
                                printf("fisher %c:        %d          %d         %d \n",
                                                   'A'+n ,a[n][0],a[n][1],a[n][2] );
                            }
                        }
                }
            }
        }
    }

 

    return 0;
}

 


 

                    

0 0
原创粉丝点击