C语言编程。某人从某年1月1日开始,三天打鱼,两天晒网。。从键盘输入x年x月x日,问这个人在该年的

发布网友 发布时间:2022-04-25 04:02

我来回答

4个回答

热心网友 时间:2023-10-24 17:11

你好!

    

程序发上来,你看看吧,满意请采纳

/*
如果一个渔夫从2011年1月1日开始每三天打一次渔,两天晒一次网,
编程实现当输入2011年1月1日,以后的任意一天,输出该渔夫是在打渔还是晒网。
*/
#include<stdio.h>
int leap(int a)               //自定义函数leap,判断输入的年份是否为闰年
{
    if(a%4==0&&a%100!=0||a%400==0)
        return 1;
    else
        return 0;
}
int number(int y,int m,int d)
{
    int sum=0,i,j;
    int a[12]={31,29,31,30,31,30,31,31,30,31,30,31};
    int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    
if(leap(y)==1)
    { 
    for(i=0;i<=m-1;i++)
            sum+=a[i];
    } 
    else
    { 
    for(i=0;i<=m-1;i++)
            sum+=b[i];
    }

for(j=2011;j<y;j++)
                if(leap(j)==1)
                sum+=366;      //2011年到输入的年份是闰年加366
                else
                sum+=365;      //2011年到输入的年份不是闰年加365
            sum+=d;
            return sum;

}
int main()
{
    int y,m,d,n;
     printf("请输入,年 月 日:\n");
     scanf("%d%d%d",&y,&m,&d);
     n=number(y,m,d);

     if((n%5)<4&&(n%5)>0)      //当余数是1,2,3时说明在打渔,否则在晒网
        printf("%d年%d月%d日 打渔\n",y,m,d);
     else
        printf("%d年%d月%d日 晒网\n",y,m,d);
}

热心网友 时间:2023-10-24 17:12

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <math.h>

int main ( int argc, char **argv )
{
        char iBgnYear[5];
        char iBgnMon[3];
        char iBgnDay[3];
        char iEndYear[5];
        char iEndMon[3];
        char iEndDay[3];

        char iBgnDate[9];
        char iEndDate[9];

        int  iDays;
        int  tDay;

        struct tm iBgnTm;
        struct tm iEndTm;

        memset( iBgnDate, 0x00, sizeof( iBgnDate ));
        memset( iEndDate, 0x00, sizeof( iEndDate ));

        fprintf( stdout, "假设捕鱼者从[20140101]开始3天捕鱼, 2天晒网\n" );
        fprintf( stdout, "请输入您要查看捕鱼者在做甚的日期:" );
        scanf( "%s", iEndDate );

        memcpy( iBgnDate, "20140101", 8 );

        memset( iBgnYear, 0x00, sizeof( iBgnYear ));
        memset( iBgnMon,  0x00, sizeof( iBgnMon ));
        memset( iBgnDay,  0x00, sizeof( iBgnDay ));
        memset( iEndYear, 0x00, sizeof( iEndYear ));
        memset( iEndMon,  0x00, sizeof( iEndMon ));
        memset( iEndDay,  0x00, sizeof( iEndDay ));

        memcpy( iBgnYear, "2014", 4 );
        memcpy( iBgnMon,  "01",   2 );
        memcpy( iBgnDay,  "01",   2 );
        memcpy( iEndYear, &iEndDate[0], 4 );
        memcpy( iEndMon,  &iEndDate[4], 2 );
        memcpy( iEndDay,  &iEndDate[6], 2 );

        memset( &iBgnTm, 0x00, sizeof( iBgnTm ));
        memset( &iEndTm, 0x00, sizeof( iEndTm ));

        iBgnTm.tm_year = atoi( iBgnYear ) - 1900;
        iBgnTm.tm_mon  = atoi( iBgnMon ) - 1;
        iBgnTm.tm_mday = atoi( iBgnDay );
        iEndTm.tm_year = atoi( iEndYear ) - 1900;
        iEndTm.tm_mon  = atoi( iEndMon ) - 1;
        iEndTm.tm_mday = atoi( iEndDay );

        iDays = (int)((mktime( &iEndTm ) - mktime( &iBgnTm )) / (24 * 60 * 60)) + 1;
        tDay  = iDays % 5;

        if ( iDays <= 5 )
        {
                if ( iDays <= 3 )  fprintf( stdout, "捕鱼者在[%s]这天正在捕鱼\n", iEndDate );
                else  fprintf( stdout, "捕鱼者在[%s]这天正在晒网\n", iEndDate );
        }
        else
        {
                if ( tDay <= 3 )  fprintf( stdout, "捕鱼者在[%s]这天正在捕鱼\n", iEndDate );
                else  fprintf( stdout, "捕鱼者在[%s]这天正在晒网\n", iEndDate );
        }

        return 0;
}

代码及测试结果如上,纯手打!

热心网友 时间:2023-10-24 17:12

include<stdio.h>

int ruinian(int nian)
{
if((nian%4==0)&&(nian%400)!=0) { return 1; }
else
{ if(nian%400==0) return 1;
else return 0; }
}
main()
{
int nian ,yue ,ri,i;
int cnm=0,cnd;
printf("年月日!");
scanf("%d,%d,%d",&nian,&yue,&ri );
cnd=ruinian();
if(cnd )
{
for(i=1;i<nian+1;i++)
{
switch(i)
{
case 1: cnm+=31;break;
case 3: cnm+=31;break;
case 5: cnm+=31;break;
case 7: cnm+=31;break;
case 8: cnm+=31;break;
case 10: cnm+=31;break;
case 12: cnm+=31;break;
case 2:cnm+=29;break;
default: cnm+=30;
}
}
cnm+=ri;
else
{
switch(i)
{
case 1: cnm+=31;break;
case 3: cnm+=31;break;
case 5: cnm+=31;break;
case 7: cnm+=31;break;
case 8: cnm+=31;break;
case 10: cnm+=31;break;
case 12: cnm+=31;break;
case 2:cnm+=28;break;
default: cnm+=30;
}
cnm+=ri;
}
if((cnm%5)<3)
printf("打渔\n");
else
printf("晒网\n");
}

热心网友 时间:2023-10-24 17:13

first:某年1月1日
second:从键盘输入x年x月x日
int a = difftime(second,first);
int b = a%(5*800);
if(b>(3*800))
晒网
else
打鱼
没学过。没用过C语言。献丑了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com