|
楼主 |
发表于 2021-5-18 23:16:54
|
显示全部楼层
/*
懒惰的渔夫三天打鱼两天晒网,要求程序输入从2011年
1月1日后的任意一天能查询到渔夫在打鱼还是在晒网
*/
#include <stdio.h>
int rnpd(int a)
//自定义闰年判断函数
{
if(a%4==0&&a%100==0||a%400==0)
//闰年成立条件
return 1;
else
return 0;
}
int tsjs(int nian,int yue,int ri)
//自定义天数计算函数
{
int sum=0,i,j;
//声明自定义函数sum
int a[]={
31,28,31,30,31,30,31,31,30,31,30,31}
;
//数组,闰年十二个月每月天数
int b[]={
31,29,31,30,31,30,31,31,30,31,30,31}
;
//数组,非闰年十二个月每月天数
if(rnpd(nian)==1)
//判断闰年判断函数返回值
for(i=0;i<yue-1;i++)
//除了输入的月份的之前的月份的天数的和
sum+=a[i];
else
for(i=0;i<yue-1;i++)
sum+=b[i];
if(rnpd(nian)==1)
for(j=2011;j<nian;j++)
//判断距离2011年有多少年,并且检测其中有没有闰年且将之前年份的天数求和
sum+=366;
else
sum+=365;
sum+=ri;
//将输入的日子,月份天数和,年份天数和相加并赋值给sum函数
return sum;
}
int main()
{
int nian,yue,ri,d;
char e;
while(1)
//死循环
{
printf("输入y继续,输入n退出\n");
e=getchar();
if(e=='y')
{
printf("请输入年月日,以空格键隔开\n");
scanf("%d%d%d",&nian,&yue,&ri);
d=tsjs(nian,yue,ri);
//调用天数计算函数
if((d%5)<4&&(d%5>0))
//天数计算函数结果值对5取余数
printf("渔夫在打鱼\n");
else
printf("渔夫在晒网\n");
e=getchar();
}
else if(e=='n')
{
{
break;
//跳出死循环
}
}
else if(e!='y'&&e!='n')
{
printf("请输入正确的字母或数字\n");
e=getchar();
}
}
}
原来每次输入完有打印的动作后都要获取一次当前键盘输入 |
|