我是靠谱客的博主 酷酷金毛,这篇文章主要介绍三天打渔,两天晒网小算法,现在分享给大家,希望可以做个参考。

问题描述:

   中国有句俗语叫“三天打鱼两天晒网”。某人从201011日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用CC++语言实现程序解决问题。

源代码:

//文件名:fishing or relaxing.cpp
//作者:Vector_山水之间
//学号:1508010333
//版本:2017.3.1
//完成日期:2017/3/10
//主要功能:某人从2010年1月1日起开始“三天打鱼两天晒网”,
//
判断某天是打鱼还是晒网.
#include<stdio.h>
void show();
//声明show()函数
int calculate(struct date day);
//声明计算天数的函数
struct date{
//定义结构体
int year;
int month;
int day;
};
void show()
//计算并输出某一日期下打鱼或者晒网的结果
{
struct date today,term;
//定义结构体变量today,term
int yearday,year,day;
printf("请输入年份:");
scanf("%d",&today.year);
while(today.year<2010||today.year>9999)
//判断年份输入的规范性
{
printf("年份输入不符合规范,请重新输入:");
scanf("%d",&today.year);
}
printf("请输入月份:");
scanf("%d",&today.month);
while(today.month<1||today.month>12)
//判断月份输入的规范性
{
printf("月份输入不符合规范,请重新输入:");
scanf("%d",&today.month);
}
printf("请输入日:");
scanf("%d",&today.day);
if(today.month==1||today.month==3||today.month==5||today.month==7
||today.month==8||today.month==10||today.month==12) //判断日的输入是否符合规范
{
while(today.day<0||today.day>31)
{
printf("输入不符合规范,请重新输入:");
scanf("%d",&today.day);
}
}
else if(today.month==4||today.month==6||
today.month==9||today.month==11)
{
while(today.day<0||today.day>30)
{
printf("输入不符合规范,请重新输入:");
scanf("%d",&today.day);
}
}
else if(today.month==2)
{
if(today.year%4==0)
while(today.day<0||today.day>29)
{
printf("输入不符合规范,请重新输入:n");
scanf("%d",&today.day);
}
else
while(today.day<0||today.day>28)
{
printf("输入不符合规范,请重新输入:n");
scanf("%d",&today.day);
}
}
term.month=12;
//设置变量的初始值:月
term.day=31;
//设置变量的初始值:日
for(yearday=0,year=2010;year<today.year;year++)
{
term.year=year;
yearday+=calculate(term);
//计算从2010年至指定年的前一年的最后一天共有多少天
}
yearday+=calculate(today);
//加上指定年中到指定日期的天数
day=yearday%5;
//求余数
if(day>0&&day<4)
//打印结果
{
printf("%d,%d,%dn",today.year,today.month,today.day);
printf("He was fishing at that day.n");
}
else
{
printf("%d,%d,%dn",today.year,today.month,today.day);
printf("He was relaxing at that day.n");
}
}
int calculate(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;
}
void main()
{
printf("功能介绍:某人从2010年1月1日起开始三天打鱼两天晒网,n");
printf("
输入日期判断这个人在以后的某一天中是打鱼还是晒网。nn");
int m;
show();
printf("n继续输入请按 1n");
scanf("%d",&m);
while(m==1)
{
show();
printf("n");
}
}


最后

以上就是酷酷金毛最近收集整理的关于三天打渔,两天晒网小算法的全部内容,更多相关三天打渔内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部