概述
问题:
正所谓三天打鱼两天晒网,你成为了一名渔夫,每三天第一次鱼,每两天打一次网,若你从2011年1月1日开始干活,请从键盘输入任意日期,问这天是打鱼还是晒网?
思路:
- 这个什么时候打鱼,什么时候晒网呢?可以用总天数%5,求余数,若余数为1,2,3,则打鱼,若为0或4,则晒网
- 因此求出总天数。由于涉及到闰年问题,因此写一个函数判断闰年。是返回1,不是返回0;
- 然后再写个函数,计算总天数,先计算最后一年的天数,月数加当月的天数。之后再计算以前年的天数,是闰年,则+366.反之+365;
代码如下:
#include <stdio.h>
int run(int n)//判断闰年
{
if(n%400==0||n%4==0&&n%100!=0)
return 1;
else
return 0;
}
int num(int year,int month,int day)//计算总天数
{
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int i;
int sum=0;
for(i=0;i<month-1;i++)//计算最新年份的天数
{
if(run(year)==1)//用闰年函数判断,然后决定用哪个数组
sum=sum+b[i];
else
sum=sum+a[i];
}
sum=sum+day;//给当月的天数加上
int j;
for(j=2011;j<year;j++)//给以前的年份加上
{
if(run(j)==1)//以前年份遍历,是闰年,一年366天
sum=sum+366;
else
sum=sum+365;
}
return sum;
}
int main()
{
int year,month,day;
scanf("%d %d %d",&year,&month,&day);
int sum=num(year,month,day);
if(sum%5<4 &&sum%5>0)//1或2或3打鱼,0或4晒网,共五天一个周期,因此用总天数除5,求余,余数在1到3之间为打鱼,反之晒网
printf("在打鱼呢n");
else
printf("打工太累了,还是家里晒晒网舒服n");
return 0;
}
最后
以上就是外向冰棍为你收集整理的68-C语言-打鱼晒网问题的全部内容,希望文章能够帮你解决68-C语言-打鱼晒网问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复