/****************************************
* File Name : math.c
* Creat Data : 2015.1.24
* Author : ZY
*****************************************/
/*生活中的数学问题*/
/*打鱼还是晒网*/
/*中国有句俗话叫“三天打鱼两天晒网”。某人从1990年
1月1日起开始“三天打鱼两天晒网”,问这个人在以后的
每一天中是在“打鱼”,还是在“晒网”。*/
#include <stdio.h>
struct data //定义日期结构体
{
int year;
int month;
int day;
};
int days(struct data day)
{
int i,lp;
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,},//闰年每月的天数
};
lp = day.year %4 == 0 && day.year %400 != 0 || day.year %100 == 0 ;
//判定year为闰年还是平年,lp = 0为平年,lp = 1为闰年
for( i = 1; i < day.month ;i++ )//计算本年中自1月1日起的天数
{
day.day += day_tab[lp][i];
}
return day.day ;
}
int main()
{
struct data today;
struct data term;
int yearday,year,day;
printf("Enter year/month/day:");
scanf("%d%d%d",&today.year ,&today.month ,&today.day );//输入日期
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;//求余数(1,2,3)为打鱼,其余为晒网
if(day > 0 && day < 4)//打印结果
{
printf("He was fishing at the day.\n");
}
else
{
printf("He was sleeping at the day.\n");
}
return 0;
}
生活中的数学问题(打鱼还是晒网)
最新推荐文章于 2023-10-20 22:26:42 发布