077.打鱼还是晒网
【摘要】
#include<stdio.h>struct date{ int year; int month; int day;};int days(struct date day); void main(){ struct date today,term; int yearday,year,day; ...
#include<stdio.h>
struct date{
int year;
int month;
int day;
};
int days(struct date day);
void main()
{
struct date today,term;
int yearday,year,day;
puts("◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇");
puts("◇ 打鱼还是晒网 ◇");
puts("◇ 中国有句俗语叫【三天打鱼两天晒网】。 ◇");
puts("◇某人20岁从1990年1月1日起开始【三天打鱼两天晒网】,◇");
puts("◇问这个人在以后的某一天中是【打鱼】还是【晒网】? ◇");
puts("◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
while(1)
{
printf(" >> 请输入年/月/日【输入1990 1 1 退出】:");
scanf("%d%d%d",&today.year,&today.month,&today.day); /*输入日期*/
if(today.year<1990)
{
if(today.year<1970)
puts(" >> 对不起,那一年那还没出生呢!按任意键继续...");
else
puts(" >> 对不起,那一年他还没开始打鱼呢!按任意键继续...");
getch();
continue;
}
if(today.year==1990&&today.month==1&&today.day==1)
break;
term.month=12; /*设置变量的初始值:月*/
term.day=31; /*设置变量的初始值:日*/
for(yearday=0,year=1990;year<today.year;year++)
{
term.year=year;
yearday+=days(term); /*计算从1990年至指定年的前一年共有多少天*/
}
yearday+=days(today); /*加上指定年中到指定日期的天数*/
day=yearday%5; /*求余数*/
if(day>0&&day<4) printf(" >> %d年%d月%d日,他正在打鱼。\n",today.year,today.month,today.day); /*打印结果*/
else printf(" >> %d年%d月%d日,他正在晒网。\n",today.year,today.month,today.day);
}
puts("\n >> 请按任意键退出...");
getch();
}
int days(struct date day)
{
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,},
};
int i,lp;
lp=day.year%4==0&&day.year%100!=0||day.year%400==0;
/*判定year为闰年还是平年,lp=0为平年,非0为闰年*/
for(i=1;i<day.month;i++) /*计算本年中自1月1日起的天数*/
day.day+=day_tab[lp][i];
return day.day;
}
文章来源: blog.csdn.net,作者:程序员编程指南,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_41055260/article/details/124518495
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)