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*86400);
if(b>(3*86400))
晒网
else
打鱼
没学过。没用过C语言。献丑了。